From 146e7108813541c0d1771c3144aed83f614334a0 Mon Sep 17 00:00:00 2001 From: Andre Basche Date: Wed, 10 May 2023 18:13:05 +0200 Subject: [PATCH] Add first fridge sensors #41 --- README.md | 37 ++++++++++++++++-- custom_components/hon/binary_sensor.py | 4 +- custom_components/hon/button.py | 4 +- custom_components/hon/climate.py | 9 ++++- custom_components/hon/config_flow.py | 1 - custom_components/hon/const.py | 44 ---------------------- custom_components/hon/hon.py | 3 +- custom_components/hon/number.py | 9 ++--- custom_components/hon/select.py | 16 +++++--- custom_components/hon/sensor.py | 25 ++++++++++-- custom_components/hon/translations/cs.json | 33 ++++++++++++++++ custom_components/hon/translations/de.json | 33 ++++++++++++++++ custom_components/hon/translations/el.json | 33 ++++++++++++++++ custom_components/hon/translations/en.json | 34 +++++++++++++++++ custom_components/hon/translations/es.json | 33 ++++++++++++++++ custom_components/hon/translations/fr.json | 33 ++++++++++++++++ custom_components/hon/translations/he.json | 22 +++++++++++ custom_components/hon/translations/hr.json | 33 ++++++++++++++++ custom_components/hon/translations/it.json | 33 ++++++++++++++++ custom_components/hon/translations/nl.json | 33 ++++++++++++++++ custom_components/hon/translations/pl.json | 33 ++++++++++++++++ custom_components/hon/translations/pt.json | 33 ++++++++++++++++ custom_components/hon/translations/ro.json | 33 ++++++++++++++++ custom_components/hon/translations/ru.json | 33 ++++++++++++++++ custom_components/hon/translations/sk.json | 33 ++++++++++++++++ custom_components/hon/translations/sl.json | 33 ++++++++++++++++ custom_components/hon/translations/sr.json | 33 ++++++++++++++++ custom_components/hon/translations/tr.json | 33 ++++++++++++++++ custom_components/hon/translations/zh.json | 33 ++++++++++++++++ info.md | 23 +++++++++-- scripts/generate_translation.py | 4 ++ scripts/sensor_docs.py | 9 ++++- 32 files changed, 730 insertions(+), 75 deletions(-) diff --git a/README.md b/README.md index bad973d..4bce269 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ Home Assistant integration for Haier hOn: support for Haier/Candy/Hoover home ap - [Hob](https://github.com/Andre0512/hon#hob) - [Dish Washer](https://github.com/Andre0512/hon#dish-washer) - [Air conditioner](https://github.com/Andre0512/hon#air-conditioner) [BETA] +- [Fridge](https://github.com/Andre0512/hon#fridge) [BETA] ## Installation **Method 1:** [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration) @@ -32,15 +33,28 @@ _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models -Support was confirmed for these models. If a supported model is missing, please [add it with this form](https://forms.gle/bTSD8qFotdZFytbf8). -- Haier WD90-B14TEAM5 +Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +- Haier EG9012B19SU1JD - Haier HD80-A3959 +- Haier HW90-B14TEAM5 +- Haier HWD100-B14979 - Haier HWO60SM2F3XH -- Hoover H-WASH 500 -- Candy CIS633SCTTWIFI - Haier XIB 3B2SFS-80 - Haier XIB 6B2D3FB +- Candy CIS633SCTTWIFI +- Candy CSOE C10DE-80 +- Candy ROE H9A3TCEX-S +- Candy RPW41066BWMR/1-S +- Hoover H-WASH 500 +- Hoover H-DRY 500 +- Hoover H7W4 48MBC-S +- Hoover H9A3TCBEXS-S +- Hoover HFB 6B2S3FX +- Hoover HLE C10DCE-80 - Hoover HSOT3161WG +- Hoover HWPD 69AMBC/1-S +- Hoover NDE H10A2TCE-80 +- Hoover NDPHY10A2TCBEXSS ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: @@ -136,6 +150,10 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 ## Appliance Features ### Air conditioner +#### Controls +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Air Conditioner | `air-conditioner` | `climate` | `settings` | #### Configs | Name | Icon | Entity | Key | | --- | --- | --- | --- | @@ -235,6 +253,17 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0 | Temperature | `thermometer` | `sensor` | `temp` | | Temperature Selected | `thermometer` | `sensor` | `tempSel` | +### Fridge +#### Configs +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Program | | `select` | `startProgram.program` | +#### Sensors +| Name | Icon | Entity | Key | +| --- | --- | --- | --- | +| Room Humidity | `water-percent` | `sensor` | `humidityEnv` | +| Room Temperature | `thermometer` | `sensor` | `tempEnv` | + ### Tumble dryer #### Controls | Name | Icon | Entity | Key | diff --git a/custom_components/hon/binary_sensor.py b/custom_components/hon/binary_sensor.py index f7c0437..9c29827 100644 --- a/custom_components/hon/binary_sensor.py +++ b/custom_components/hon/binary_sensor.py @@ -1,8 +1,6 @@ import logging from dataclasses import dataclass -from pyhon import Hon - from homeassistant.components.binary_sensor import ( BinarySensorEntityDescription, BinarySensorDeviceClass, @@ -10,6 +8,8 @@ from homeassistant.components.binary_sensor import ( ) from homeassistant.config_entries import ConfigEntry from homeassistant.core import callback +from pyhon import Hon + from .const import DOMAIN from .hon import HonCoordinator, HonEntity, unique_entities diff --git a/custom_components/hon/button.py b/custom_components/hon/button.py index 8f01f15..5dd5269 100644 --- a/custom_components/hon/button.py +++ b/custom_components/hon/button.py @@ -1,14 +1,12 @@ import logging -import urllib -from urllib.parse import quote import pkg_resources from homeassistant.components.button import ButtonEntityDescription, ButtonEntity from homeassistant.config_entries import ConfigEntry +from homeassistant.const import EntityCategory from pyhon import Hon from pyhon.appliance import HonAppliance -from homeassistant.const import EntityCategory from .const import DOMAIN from .hon import HonCoordinator, HonEntity diff --git a/custom_components/hon/climate.py b/custom_components/hon/climate.py index 63a9966..0ad8994 100644 --- a/custom_components/hon/climate.py +++ b/custom_components/hon/climate.py @@ -29,7 +29,14 @@ from .hon import HonEntity, HonCoordinator _LOGGER = logging.getLogger(__name__) CLIMATES = { - "AC": (ClimateEntityDescription(key="startProgram", icon="mdi:air-conditioner"),), + "AC": ( + ClimateEntityDescription( + key="settings", + name="Air Conditioner", + icon="mdi:air-conditioner", + translation_key="air_conditioner", + ), + ), } diff --git a/custom_components/hon/config_flow.py b/custom_components/hon/config_flow.py index 442d109..e084ce9 100644 --- a/custom_components/hon/config_flow.py +++ b/custom_components/hon/config_flow.py @@ -1,7 +1,6 @@ import logging import voluptuous as vol - from homeassistant import config_entries from homeassistant.const import CONF_EMAIL, CONF_PASSWORD diff --git a/custom_components/hon/const.py b/custom_components/hon/const.py index 13c4961..03b73be 100644 --- a/custom_components/hon/const.py +++ b/custom_components/hon/const.py @@ -180,50 +180,6 @@ AC_HUMAN_SENSE = { "2": "AC.PROGRAM_DETAIL.FOLLOW_TOUCH", } -TUMBLE_DRYER_PROGRAMS = [ - "hqd_baby_care" - "hqd_bath_towel" - "hqd_bed_sheets" - "hqd_bulky" - "hqd_casual" - "hqd_cold_wind_30" - "hqd_cold_wind_timing" - "hqd_cotton" - "hqd_curtain" - "hqd_delicate" - "hqd_diaper" - "hqd_duvet" - "hqd_feather" - "hqd_hot_wind_timing" - "hqd_hygienic" - "hqd_i_refresh" - "hqd_i_refresh_pro" - "hqd_jacket" - "hqd_jeans" - "hqd_luxury" - "hqd_mix" - "hqd_night_dry" - "hqd_outdoor" - "hqd_precious_cure" - "hqd_quick_20" - "hqd_quick_30" - "hqd_quick_dry" - "hqd_quilt" - "hqd_refresh" - "hqd_school_uniform" - "hqd_shirt" - "hqd_shoes" - "hqd_silk" - "hqd_sports" - "hqd_synthetics" - "hqd_timer" - "hqd_towel" - "hqd_underwear" - "hqd_warm_up" - "hqd_wool" - "hqd_working_suit" -] - PROGRAMS_TD = [ "active_dry", "allergy_care", diff --git a/custom_components/hon/hon.py b/custom_components/hon/hon.py index 762bf43..a446fb8 100644 --- a/custom_components/hon/hon.py +++ b/custom_components/hon/hon.py @@ -1,11 +1,10 @@ import logging from datetime import timedelta -from pyhon.appliance import HonAppliance - from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import DataUpdateCoordinator +from pyhon.appliance import HonAppliance from .const import DOMAIN diff --git a/custom_components/hon/number.py b/custom_components/hon/number.py index 2aed8b3..2942a53 100644 --- a/custom_components/hon/number.py +++ b/custom_components/hon/number.py @@ -1,10 +1,5 @@ from __future__ import annotations -from pyhon import Hon -from pyhon.parameter.base import HonParameter -from pyhon.parameter.fixed import HonParameterFixed -from pyhon.parameter.range import HonParameterRange - from homeassistant.components.number import ( NumberEntity, NumberEntityDescription, @@ -13,6 +8,10 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfTime, UnitOfTemperature from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory +from pyhon import Hon +from pyhon.parameter.base import HonParameter +from pyhon.parameter.fixed import HonParameterFixed +from pyhon.parameter.range import HonParameterRange from .const import DOMAIN from .hon import HonEntity, HonCoordinator, unique_entities diff --git a/custom_components/hon/select.py b/custom_components/hon/select.py index 0f65bc9..e743760 100644 --- a/custom_components/hon/select.py +++ b/custom_components/hon/select.py @@ -1,17 +1,15 @@ from __future__ import annotations import logging -import time - -from pyhon import Hon -from pyhon.appliance import HonAppliance -from pyhon.parameter.fixed import HonParameterFixed from homeassistant.components.select import SelectEntity, SelectEntityDescription from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfTemperature, UnitOfTime, REVOLUTIONS_PER_MINUTE from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory +from pyhon import Hon +from pyhon.appliance import HonAppliance +from pyhon.parameter.fixed import HonParameterFixed from .const import DOMAIN from .hon import HonEntity, HonCoordinator, unique_entities @@ -105,6 +103,14 @@ SELECTS = { translation_key="eco_pilot", ), ), + "REF": ( + SelectEntityDescription( + key="startProgram.program", + name="Program", + entity_category=EntityCategory.CONFIG, + translation_key="programs_ref", + ), + ), } SELECTS["WD"] = unique_entities(SELECTS["WM"], SELECTS["TD"]) diff --git a/custom_components/hon/sensor.py b/custom_components/hon/sensor.py index 79b0648..62bc1a4 100644 --- a/custom_components/hon/sensor.py +++ b/custom_components/hon/sensor.py @@ -1,7 +1,5 @@ import logging -from pyhon import Hon - from homeassistant.components.sensor import ( SensorEntity, SensorDeviceClass, @@ -9,6 +7,7 @@ from homeassistant.components.sensor import ( SensorEntityDescription, ) from homeassistant.config_entries import ConfigEntry +from homeassistant.const import PERCENTAGE from homeassistant.const import ( REVOLUTIONS_PER_MINUTE, UnitOfEnergy, @@ -21,7 +20,7 @@ from homeassistant.const import ( from homeassistant.core import callback from homeassistant.helpers.entity import EntityCategory from homeassistant.helpers.typing import StateType -from homeassistant.const import PERCENTAGE +from pyhon import Hon from . import const from .const import DOMAIN @@ -400,6 +399,26 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { options=list(const.DISHWASHER_PR_PHASE), ), ), + "REF": ( + SensorEntityDescription( + key="humidityEnv", + name="Room Humidity", + icon="mdi:water-percent", + device_class=SensorDeviceClass.HUMIDITY, + native_unit_of_measurement=PERCENTAGE, + state_class=SensorStateClass.MEASUREMENT, + translation_key="humidity", + ), + SensorEntityDescription( + key="tempEnv", + name="Room Temperature", + icon="mdi:thermometer", + state_class=SensorStateClass.MEASUREMENT, + device_class=SensorDeviceClass.TEMPERATURE, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + translation_key="room_temperature", + ), + ), } SENSORS["WD"] = unique_entities(SENSORS["WM"], SENSORS["TD"]) diff --git a/custom_components/hon/translations/cs.json b/custom_components/hon/translations/cs.json index b802992..b2e7522 100644 --- a/custom_components/hon/translations/cs.json +++ b/custom_components/hon/translations/cs.json @@ -307,6 +307,12 @@ "xxl_load": "XXL náplň", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Pokojová teplota" + }, + "humidity": { + "name": "Vlhkost" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + ventilátor", "iot_uv_and_heat": "UV + ohřev" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTOMATICKÉ NASTAVENÍ", + "cheese": "Sýr", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Režim Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "DOVOLENÁ", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Není vybrán žádný režim", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER CHLAZENÍ", + "super_freeze": "SUPER MRAZENÍ", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Indukční varná deska" } + }, + "climate": { + "air_conditioner": { + "name": "Klimatizační jednotka" + } } }, "config": { diff --git a/custom_components/hon/translations/de.json b/custom_components/hon/translations/de.json index ab7fcee..38539b8 100644 --- a/custom_components/hon/translations/de.json +++ b/custom_components/hon/translations/de.json @@ -307,6 +307,12 @@ "xxl_load": "XXL-Beladung", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Raumtemperatur" + }, + "humidity": { + "name": "Luftfeuchtigkeit" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + Gebläse", "iot_uv_and_heat": "UV + Heizen" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTOMATISCHE EINSTELLUNG", + "cheese": "Käse", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco-Modus", + "fruits_and_veg": "Obst und Genüse", + "fruit_and_veg": "Fruit & Veg", + "holiday": "URLAUBSFUNKTION", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Kein Modus ausgewählt", + "quick_cool": "SCHNELLKÜHLUNG", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Induktionskochfeld" } + }, + "climate": { + "air_conditioner": { + "name": "Klimaanlage" + } } }, "config": { diff --git a/custom_components/hon/translations/el.json b/custom_components/hon/translations/el.json index e79c1a6..ed35e25 100644 --- a/custom_components/hon/translations/el.json +++ b/custom_components/hon/translations/el.json @@ -307,6 +307,12 @@ "xxl_load": "XXL Φορτιο", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Θερμοκρασία δωματίου" + }, + "humidity": { + "name": "Υγρασία" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + Ανεμιστήρας", "iot_uv_and_heat": "UV + Θέρμανση" } + }, + "programs_ref": { + "state": { + "auto_set": "ΑΥΤΌΜΑΤΗ ΡΎΘΜΙΣΗ", + "cheese": "Τυρί", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Λειτουργία Eco", + "fruits_and_veg": "ΦΡΟΥΤΑ & ΛΑΧΑΝΙΚΑ", + "fruit_and_veg": "Fruit & Veg", + "holiday": "Ρυθμίστε το ψυγείο στους 17°C και διατηρήστε την κατάψυξη σε λειτουργία για μεγάλο χρονικό διάστημα.", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Δεν επιλέχθηκε λειτουργία", + "quick_cool": "ΓΡΗΓΟΡΗ ΨΥΞΗ", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Επαγωγική εστία" } + }, + "climate": { + "air_conditioner": { + "name": "Κλιματιστικό" + } } }, "config": { diff --git a/custom_components/hon/translations/en.json b/custom_components/hon/translations/en.json index c08e540..6bdb794 100644 --- a/custom_components/hon/translations/en.json +++ b/custom_components/hon/translations/en.json @@ -366,6 +366,12 @@ "xxl_load": "XXL Load", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Room temperature" + }, + "humidity": { + "name": "Humidity" } }, "switch": { @@ -1172,6 +1178,29 @@ "iot_uv_and_fan": "UV + Fan", "iot_uv_and_heat": "UV + Heat" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Cheese", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco mode", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit&Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "No mode selected", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "soft_frozen\n": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "binary_sensor": { @@ -1287,6 +1316,11 @@ "induction_hob": { "name": "Induction Hob" } + }, + "climate": { + "air_conditioner": { + "name": "Air conditioner" + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/es.json b/custom_components/hon/translations/es.json index 990ffbd..22c4e1d 100644 --- a/custom_components/hon/translations/es.json +++ b/custom_components/hon/translations/es.json @@ -307,6 +307,12 @@ "xxl_load": "Carga XXL", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Temperatura ambiente" + }, + "humidity": { + "name": "Humedad" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + Ventilador", "iot_uv_and_heat": "UV + Calor" } + }, + "programs_ref": { + "state": { + "auto_set": "AJUSTE AUTOMÁTICO", + "cheese": "Queso", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Modo Eco", + "fruits_and_veg": "Frutas Y Verduras", + "fruit_and_veg": "Frutas Y Verduras", + "holiday": "VACACIONES", + "keep_fresh": "0° Fresh", + "no_mode_selected": "No se ha seleccionado ningún modo", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Placa de inducción" } + }, + "climate": { + "air_conditioner": { + "name": "Aire acondicionado" + } } }, "config": { diff --git a/custom_components/hon/translations/fr.json b/custom_components/hon/translations/fr.json index 21c7d10..468ce20 100644 --- a/custom_components/hon/translations/fr.json +++ b/custom_components/hon/translations/fr.json @@ -307,6 +307,12 @@ "xxl_load": "Charge XXL", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Température ambiante" + }, + "humidity": { + "name": "Humidité" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + ventilateur", "iot_uv_and_heat": "UV + Chaleur" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Fromage", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Mode Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Aucun mode sélectionné", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Table de cuisson à induction" } + }, + "climate": { + "air_conditioner": { + "name": "Climatiseur" + } } }, "config": { diff --git a/custom_components/hon/translations/he.json b/custom_components/hon/translations/he.json index fda7b1d..742ff8f 100644 --- a/custom_components/hon/translations/he.json +++ b/custom_components/hon/translations/he.json @@ -188,6 +188,12 @@ "hqd_working_suit": "Working suit", "iot_dry_synthetic_dry": "סינתטי יבש" } + }, + "room_temperature": { + "name": "Room temperature" + }, + "humidity": { + "name": "Humidity" } }, "select": { @@ -477,6 +483,17 @@ "state": { "iot_simple_start": "התחל עכשיו" } + }, + "programs_ref": { + "state": { + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "fruit_and_veg": "Fruit & Veg", + "keep_fresh": "0° Fresh", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "tea": "Cold drinks or Beverages" + } } }, "switch": { @@ -684,6 +701,11 @@ "induction_hob": { "name": "Induction Hob" } + }, + "climate": { + "air_conditioner": { + "name": "Air conditioner" + } } }, "config": { diff --git a/custom_components/hon/translations/hr.json b/custom_components/hon/translations/hr.json index f53749c..55d72b2 100644 --- a/custom_components/hon/translations/hr.json +++ b/custom_components/hon/translations/hr.json @@ -307,6 +307,12 @@ "xxl_load": "XXL kapacitet", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Sobna temperatura" + }, + "humidity": { + "name": "Vlažnost" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + ventilator", "iot_uv_and_heat": "UV + grijanje" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTOMATSKA POSTAVKA", + "cheese": "Sir", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Način rada Eco", + "fruits_and_veg": "Voće i Povrće", + "fruit_and_veg": "Fruit & Veg", + "holiday": "ODMOR", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nije odabran način rada", + "quick_cool": "BRZO HLAĐENJE", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER HLAĐENJE", + "super_freeze": "SUPER ZAMRZAVANJE", + "tea": "Hladna pića i napitci", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Indukcijska ploča za kuhanje" } + }, + "climate": { + "air_conditioner": { + "name": "Klimatizacijski uređaj" + } } }, "config": { diff --git a/custom_components/hon/translations/it.json b/custom_components/hon/translations/it.json index 5afa329..5103d9c 100644 --- a/custom_components/hon/translations/it.json +++ b/custom_components/hon/translations/it.json @@ -359,6 +359,12 @@ "xxl_load": "Carico XXL", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Temperatura ambiente" + }, + "humidity": { + "name": "Umidità" } }, "select": { @@ -1065,6 +1071,28 @@ "iot_uv_and_fan": "UV + Ventola", "iot_uv_and_heat": "UV + Caldo" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Formaggio", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Modalità Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nessuna modalità selezionata", + "quick_cool": " QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1272,6 +1300,11 @@ "induction_hob": { "name": "Piano cottura a induzione" } + }, + "climate": { + "air_conditioner": { + "name": "Condizionatore" + } } } } \ No newline at end of file diff --git a/custom_components/hon/translations/nl.json b/custom_components/hon/translations/nl.json index f0bd7cb..66c5455 100644 --- a/custom_components/hon/translations/nl.json +++ b/custom_components/hon/translations/nl.json @@ -307,6 +307,12 @@ "xxl_load": "XXL Lading", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Omgevingstemperatuur" + }, + "humidity": { + "name": "Luchtvochtigheid" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + Hetelucht", "iot_uv_and_heat": "UV + Warmte" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Kaas", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco-modus", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Geen modus geselecteerd", + "quick_cool": "QUICK KOEL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Inductiekookplaat" } + }, + "climate": { + "air_conditioner": { + "name": "Airconditioner" + } } }, "config": { diff --git a/custom_components/hon/translations/pl.json b/custom_components/hon/translations/pl.json index 0795ddd..6f8a19b 100644 --- a/custom_components/hon/translations/pl.json +++ b/custom_components/hon/translations/pl.json @@ -307,6 +307,12 @@ "xxl_load": "XXL Load", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Temperatura pokojowa" + }, + "humidity": { + "name": "Wilgotność" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + wentylator", "iot_uv_and_heat": "UV + podgrzewanie" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Ser", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Tryb Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nie wybrano żadnego trybu", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Płyta indukcyjna" } + }, + "climate": { + "air_conditioner": { + "name": "Klimatyzator" + } } }, "config": { diff --git a/custom_components/hon/translations/pt.json b/custom_components/hon/translations/pt.json index 29c3af0..df61677 100644 --- a/custom_components/hon/translations/pt.json +++ b/custom_components/hon/translations/pt.json @@ -307,6 +307,12 @@ "xxl_load": "Carga XXL", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Temperatura ambiente" + }, + "humidity": { + "name": "Humidade" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + Ventilação", "iot_uv_and_heat": "UV + Calor" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET", + "cheese": "Queijo", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Modo Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nenhum modo selecionado", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Placa de indução" } + }, + "climate": { + "air_conditioner": { + "name": "Ar Condicionado" + } } }, "config": { diff --git a/custom_components/hon/translations/ro.json b/custom_components/hon/translations/ro.json index 2f5f788..18d5b3a 100644 --- a/custom_components/hon/translations/ro.json +++ b/custom_components/hon/translations/ro.json @@ -307,6 +307,12 @@ "xxl_load": "Încărcare XXL", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Temperatura camerei" + }, + "humidity": { + "name": "Umiditate" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + ventilator", "iot_uv_and_heat": "UV + încălzire" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET (Setare automată)", + "cheese": "Brânză", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Modul Eco", + "fruits_and_veg": "Fruit&Veg (Fructe și legume)", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY (Perioadă de neutilizare)", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Niciun mod selectat", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL (Răcire rapidă)", + "super_freeze": "SUPER FREEZE (Congelare rapidă)", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Plita cu inducție" } + }, + "climate": { + "air_conditioner": { + "name": "Aer condiționat" + } } }, "config": { diff --git a/custom_components/hon/translations/ru.json b/custom_components/hon/translations/ru.json index 9313961..faa5767 100644 --- a/custom_components/hon/translations/ru.json +++ b/custom_components/hon/translations/ru.json @@ -307,6 +307,12 @@ "xxl_load": "Объемные вещи", "zoom_59": "Zoom 59 (Зум 59)" } + }, + "room_temperature": { + "name": "Комнатная температура" + }, + "humidity": { + "name": "Влажность" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "УФ + Вентилятор", "iot_uv_and_heat": "УФ + Нагрев" } + }, + "programs_ref": { + "state": { + "auto_set": "АВТОМАТИЧЕСКАЯ НАСТРОЙКА", + "cheese": "Сыр", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Режим Eco", + "fruits_and_veg": "Фрукты и овощи", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Режим не выбран", + "quick_cool": " БЫСТРОЕ ОХЛАЖДЕНИЕ", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Индукционная варочная панель" } + }, + "climate": { + "air_conditioner": { + "name": "Кондиционер воздуха" + } } }, "config": { diff --git a/custom_components/hon/translations/sk.json b/custom_components/hon/translations/sk.json index 638d0be..cfc4520 100644 --- a/custom_components/hon/translations/sk.json +++ b/custom_components/hon/translations/sk.json @@ -307,6 +307,12 @@ "xxl_load": "XXL náplň", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Izbová teplota" + }, + "humidity": { + "name": "Vlhkosť" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + Ventilátor", "iot_uv_and_heat": "UV + Ohrev" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTOMATICKÉ NASTAVENIE", + "cheese": "Syr", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Režim Eco", + "fruits_and_veg": "Fruit&Veg", + "fruit_and_veg": "Fruit & Veg", + "holiday": "DOVOLENKA", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nie je vybraný žiadny režim", + "quick_cool": "QUICK COOL", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER CHLADENIE", + "super_freeze": "SUPER MRAZENIE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Indukčná varná doska" } + }, + "climate": { + "air_conditioner": { + "name": "Klimatizácia" + } } }, "config": { diff --git a/custom_components/hon/translations/sl.json b/custom_components/hon/translations/sl.json index 53af0a8..15983be 100644 --- a/custom_components/hon/translations/sl.json +++ b/custom_components/hon/translations/sl.json @@ -307,6 +307,12 @@ "xxl_load": "Zelo veliki kosi perila", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Sobna temperatura" + }, + "humidity": { + "name": "Vlaga " } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + ventilator", "iot_uv_and_heat": "UV + gretje" } + }, + "programs_ref": { + "state": { + "auto_set": "SAMODEJNA NASTAVITEV", + "cheese": "Sir", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Način Eco", + "fruits_and_veg": "Sadje In Zelenjava", + "fruit_and_veg": "Sadje in zelenjava", + "holiday": "POČITNICE", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Izbran ni noben način", + "quick_cool": " HITRO HLAJENJE", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER HLAJENJE", + "super_freeze": "SUPER ZAMRZOVANJE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Indukcijska kuhalna plošča" } + }, + "climate": { + "air_conditioner": { + "name": "Klimatska naprava" + } } }, "config": { diff --git a/custom_components/hon/translations/sr.json b/custom_components/hon/translations/sr.json index bf8c93d..d96ab97 100644 --- a/custom_components/hon/translations/sr.json +++ b/custom_components/hon/translations/sr.json @@ -307,6 +307,12 @@ "xxl_load": "XXL veš", "zoom_59": "Zoom 59" } + }, + "room_temperature": { + "name": "Sobna temperatura" + }, + "humidity": { + "name": "Vlažnost" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + ventilator", "iot_uv_and_heat": "UV + toplota" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTOMATSKO PODEŠAVANJE", + "cheese": "Sir", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco režim", + "fruits_and_veg": "Voće i Povrće", + "fruit_and_veg": "Fruit & Veg", + "holiday": "ODMOR", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Nije izabran nijedan režim", + "quick_cool": "BRZO HLAĐENJE", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER HLAĐENJE", + "super_freeze": "SUPER ZAMRZAVANJE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "Indukciona ploča" } + }, + "climate": { + "air_conditioner": { + "name": "Klima uređaj" + } } }, "config": { diff --git a/custom_components/hon/translations/tr.json b/custom_components/hon/translations/tr.json index 4a3d539..3670fdb 100644 --- a/custom_components/hon/translations/tr.json +++ b/custom_components/hon/translations/tr.json @@ -307,6 +307,12 @@ "xxl_load": "XXL Çamaşır", "zoom_59": "Yakınlaştır 59" } + }, + "room_temperature": { + "name": "Oda sıcaklığı" + }, + "humidity": { + "name": "Nem" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + Fan", "iot_uv_and_heat": "UV + Isıtma" } + }, + "programs_ref": { + "state": { + "auto_set": "OTOMATİK AYAR", + "cheese": "Peynir", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco modu", + "fruits_and_veg": "Meyve Ve Sebze", + "fruit_and_veg": "Fruit & Veg", + "holiday": "TATİL ", + "keep_fresh": "0° Fresh", + "no_mode_selected": "Hiç mod seçilmedi", + "quick_cool": "HIZLI SOĞUTMA", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL", + "super_freeze": "SUPER FREEZE", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "İndüksiyonlu Ocak" } + }, + "climate": { + "air_conditioner": { + "name": "Klima" + } } }, "config": { diff --git a/custom_components/hon/translations/zh.json b/custom_components/hon/translations/zh.json index 4b23f1c..3357bfb 100644 --- a/custom_components/hon/translations/zh.json +++ b/custom_components/hon/translations/zh.json @@ -307,6 +307,12 @@ "xxl_load": "XXL Load", "zoom_59": "缩放 59" } + }, + "room_temperature": { + "name": "室温" + }, + "humidity": { + "name": "湿度" } }, "select": { @@ -1013,6 +1019,28 @@ "iot_uv_and_fan": "UV + 风扇", "iot_uv_and_heat": "UV + 加热" } + }, + "programs_ref": { + "state": { + "auto_set": "AUTO-SET(自动设置)", + "cheese": "奶酪", + "chiller": "Quick cool", + "cold_drinks": "Soft chill", + "eco": "Eco", + "eco_mode": "Eco 模式", + "fruits_and_veg": "Fruit&Veg(水果和蔬菜)", + "fruit_and_veg": "Fruit & Veg", + "holiday": "HOLIDAY(假日模式)", + "keep_fresh": "0° Fresh", + "no_mode_selected": "未选择模式", + "quick_cool": "QUICK COOL(快速冷却)", + "sea_food": "Ready to cook meal", + "soft_frozen": "Soft freezing", + "super_cool": "SUPER COOL(超级冷却)", + "super_freeze": "SUPER FREEZE(超级冷冻)", + "tea": "Cold drinks or Beverages", + "zero_fresh": "0° Fresh" + } } }, "switch": { @@ -1220,6 +1248,11 @@ "induction_hob": { "name": "电磁炉" } + }, + "climate": { + "air_conditioner": { + "name": "空调" + } } }, "config": { diff --git a/info.md b/info.md index afeb914..b3e62a4 100644 --- a/info.md +++ b/info.md @@ -12,6 +12,7 @@ Support for home appliances of Haier's mobile app hOn. - [Hob](https://github.com/Andre0512/hon#hob) - [Dish Washer](https://github.com/Andre0512/hon#dish-washer) - [Air conditioner](https://github.com/Andre0512/hon#air-conditioner) [BETA] +- [Fridge](https://github.com/Andre0512/hon#fridge) [BETA] ## Configuration @@ -21,15 +22,29 @@ Support for home appliances of Haier's mobile app hOn. _If the integration is not in the list, you need to clear the browser cache._ ## Supported Models -Support was confirmed for these models. If a supported model is missing, please [add it with this form](https://forms.gle/bTSD8qFotdZFytbf8). -- Haier WD90-B14TEAM5 +Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). +- Haier EG9012B19SU1JD - Haier HD80-A3959 +- Haier HW90-B14TEAM5 +- Haier HWD100-B14979 - Haier HWO60SM2F3XH -- Hoover H-WASH 500 -- Candy CIS633SCTTWIFI - Haier XIB 3B2SFS-80 - Haier XIB 6B2D3FB +- Candy CIS633SCTTWIFI +- Candy CSOE C10DE-80 +- Candy ROE H9A3TCEX-S +- Candy RPW41066BWMR/1-S +- Hoover H-WASH 500 +- Hoover H-DRY 500 +- Hoover H7W4 48MBC-S +- Hoover H9A3TCBEXS-S +- Hoover HFB 6B2S3FX +- Hoover HLE C10DCE-80 - Hoover HSOT3161WG +- Hoover HWPD 69AMBC/1-S +- Hoover NDE H10A2TCE-80 +- Hoover NDPHY10A2TCBEXSS + ## Supported Languages Translation of internal names like programs are available for all languages which are official supported by the hOn app: diff --git a/scripts/generate_translation.py b/scripts/generate_translation.py index 83ce67b..5cfbffa 100755 --- a/scripts/generate_translation.py +++ b/scripts/generate_translation.py @@ -36,6 +36,7 @@ PROGRAMS = { "programs_ov": "PROGRAMS.OV", "programs_td": "PROGRAMS.TD", "programs_wm": "PROGRAMS.WM_WD", + "programs_ref": "PROGRAMS.REF", }, "sensor": { "programs_td": "PROGRAMS.TD", @@ -134,6 +135,8 @@ NAMES = { "det_liquid": "HUBS.WIDGET.STAINS_WIDGET.STAINS.SUGGESTED_DET_LIQUID", "errors": "ROBOT_CMD&CTRL.PHASE_ERROR.TITLE", "programs": "OV.TABS.CURRENT_PROGRAM", + "room_temperature": "REF.SMART_DRINK_ASSISTANT.AMBIENT", + "humidity": "AP.TITLES.HUMIDITY", "cycles_total": [ "WASHING_CMD&CTRL.GENERAL.CYCLES", "WC.VIRTUAL_WINE_STATS_COUNTRY.TOTAL", @@ -167,6 +170,7 @@ NAMES = { "dry_time": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_TIME", "steam_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", }, + "climate": {"air_conditioner": "GLOBALS.APPLIANCES_NAME.AC"}, } diff --git a/scripts/sensor_docs.py b/scripts/sensor_docs.py index 2c125f8..6514edd 100755 --- a/scripts/sensor_docs.py +++ b/scripts/sensor_docs.py @@ -4,11 +4,13 @@ import re import sys from pathlib import Path + if __name__ == "__main__": sys.path.insert(0, str(Path(__file__).parent.parent)) from custom_components.hon.binary_sensor import BINARY_SENSORS from custom_components.hon.button import BUTTONS +from custom_components.hon.climate import CLIMATES from custom_components.hon.number import NUMBERS from custom_components.hon.select import SELECTS from custom_components.hon.sensor import SENSORS @@ -41,6 +43,7 @@ entities = { "select": SELECTS, "sensor": SENSORS, "switch": SWITCHES, + "climate": CLIMATES, } result = {} @@ -55,7 +58,11 @@ for entity_type, appliances in entities.items(): else: key = entity.key attributes = (key, entity.name, entity.icon, entity_type) - category = "control" if entity_type in ["switch", "button"] else "sensor" + category = ( + "control" + if entity_type in ["switch", "button", "climate"] + else "sensor" + ) result.setdefault(appliance, {}).setdefault( entity.entity_category or category, [] ).append(attributes)