Compare commits
	
		
			3 Commits
		
	
	
		
			v0.8.0-bet
			...
			v0.8.0-bet
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| a4ec3290ba | |||
| d39deba973 | |||
| fae4c4c879 | 
							
								
								
									
										23
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								README.md
									
									
									
									
									
								
							| @ -155,6 +155,7 @@ For every device exists a hidden button which can be used to log all infos of yo | ||||
| | Air Conditioner | `air-conditioner` | `climate` | `settings` | | ||||
| | Echo | `account-voice` | `switch` | `settings.echoStatus` | | ||||
| | Eco Mode |  | `switch` | `settings.ecoMode` | | ||||
| | Eco Pilot | `run` | `select` | `settings.humanSensingStatus` | | ||||
| | Health Mode | `medication-outline` | `switch` | `settings.healthMode` | | ||||
| | Mute | `volume-off` | `switch` | `settings.muteStatus` | | ||||
| | Rapid Mode | `run-fast` | `switch` | `settings.rapidMode` | | ||||
| @ -162,15 +163,21 @@ For every device exists a hidden button which can be used to log all infos of yo | ||||
| | Self Cleaning | `air-filter` | `switch` | `settings.selfCleaningStatus` | | ||||
| | Self Cleaning 56 | `air-filter` | `switch` | `settings.selfCleaning56Status` | | ||||
| | Silent Sleep | `bed` | `switch` | `settings.silentSleepStatus` | | ||||
| #### Configs | ||||
| | Name | Icon | Entity | Key | | ||||
| | --- | --- | --- | --- | | ||||
| | Program |  | `select` | `startProgram.program` | | ||||
| | Target Temperature | `thermometer` | `number` | `settings.tempSel` | | ||||
| #### Sensors | ||||
| | Name | Icon | Entity | Key | | ||||
| | --- | --- | --- | --- | | ||||
| | Eco Pilot | `run` | `select` | `settings.humanSensingStatus` | | ||||
| | Target Temperature | `thermometer` | `number` | `settings.tempSel` | | ||||
| | Air Temperature Outdoor | `thermometer` | `sensor` | `tempAirOutdoor` | | ||||
| | Ch2O Cleaning |  | `binary_sensor` | `ch2oCleaningStatus` | | ||||
| | Coiler Temperature Indoor | `thermometer` | `sensor` | `tempCoilerIndoor` | | ||||
| | Coiler Temperature Outside | `thermometer` | `sensor` | `tempCoilerOutdoor` | | ||||
| | Defrost Temperature Outdoor | `thermometer` | `sensor` | `tempDefrostOutdoor` | | ||||
| | Filter Replacement |  | `binary_sensor` | `filterChangeStatusLocal` | | ||||
| | In Air Temperature Outdoor | `thermometer` | `sensor` | `tempInAirOutdoor` | | ||||
| | Indoor Temperature | `thermometer` | `sensor` | `tempIndoor` | | ||||
| | Outdoor Temperature | `thermometer` | `sensor` | `tempOutdoor` | | ||||
| | Program |  | `select` | `startProgram.program` | | ||||
| | Selected Temperature | `thermometer` | `sensor` | `tempSel` | | ||||
|  | ||||
| ### Dish washer | ||||
| #### Controls | ||||
| @ -262,6 +269,8 @@ For every device exists a hidden button which can be used to log all infos of yo | ||||
| | Name | Icon | Entity | Key | | ||||
| | --- | --- | --- | --- | | ||||
| | Auto-Set Mode | `thermometer-auto` | `switch` | `settings.intelligenceMode` | | ||||
| | Freezer Temperature | `thermometer` | `number` | `settings.tempSelZ2` | | ||||
| | Fridge Temperature | `thermometer` | `number` | `settings.tempSelZ1` | | ||||
| | Super Cool | `snowflake` | `switch` | `settings.quickModeZ2` | | ||||
| | Super Freeze | `snowflake-variant` | `switch` | `settings.quickModeZ1` | | ||||
| #### Configs | ||||
| @ -274,8 +283,6 @@ For every device exists a hidden button which can be used to log all infos of yo | ||||
| | Auto-Set Mode | `thermometer-auto` | `binary_sensor` | `intelligenceMode` | | ||||
| | Door Status Freezer | `fridge-top` | `binary_sensor` | `doorStatusZ1` | | ||||
| | Door Status Fridge | `fridge-bottom` | `binary_sensor` | `door2StatusZ1` | | ||||
| | Freezer Temperature | `thermometer` | `number` | `settings.tempSelZ2` | | ||||
| | Fridge Temperature | `thermometer` | `number` | `settings.tempSelZ1` | | ||||
| | Holiday Mode | `palm-tree` | `binary_sensor` | `holidayMode` | | ||||
| | Room Humidity | `water-percent` | `sensor` | `humidityEnv` | | ||||
| | Room Temperature | `home-thermometer-outline` | `sensor` | `tempEnv` | | ||||
|  | ||||
| @ -1,6 +1,8 @@ | ||||
| import logging | ||||
| from dataclasses import dataclass | ||||
|  | ||||
| from pyhon import Hon | ||||
|  | ||||
| from homeassistant.components.binary_sensor import ( | ||||
|     BinarySensorEntityDescription, | ||||
|     BinarySensorDeviceClass, | ||||
| @ -8,8 +10,6 @@ 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 | ||||
|  | ||||
| @ -179,6 +179,20 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { | ||||
|             translation_key="door_open", | ||||
|         ), | ||||
|     ), | ||||
|     "AC": ( | ||||
|         HonBinarySensorEntityDescription( | ||||
|             key="filterChangeStatusLocal", | ||||
|             name="Filter Replacement", | ||||
|             device_class=BinarySensorDeviceClass.PROBLEM, | ||||
|             on_value="1", | ||||
|             translation_key="filter_replacement", | ||||
|         ), | ||||
|         HonBinarySensorEntityDescription( | ||||
|             key="ch2oCleaningStatus", | ||||
|             name="Ch2O Cleaning", | ||||
|             on_value="1", | ||||
|         ), | ||||
|     ), | ||||
|     "REF": ( | ||||
|         HonBinarySensorEntityDescription( | ||||
|             key="quickModeZ2", | ||||
|  | ||||
| @ -69,7 +69,7 @@ class HonButtonEntity(HonEntity, ButtonEntity): | ||||
|         """Return True if entity is available.""" | ||||
|         return ( | ||||
|             super().available | ||||
|             and self._device.get("remoteCtrValid") == "1" | ||||
|             and self._device.get("remoteCtrValid", "1") == "1" | ||||
|             and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" | ||||
|         ) | ||||
|  | ||||
|  | ||||
| @ -1,5 +1,8 @@ | ||||
| import logging | ||||
|  | ||||
| from pyhon import Hon | ||||
| from pyhon.appliance import HonAppliance | ||||
|  | ||||
| from homeassistant.components.climate import ( | ||||
|     ClimateEntity, | ||||
|     ClimateEntityDescription, | ||||
| @ -20,9 +23,6 @@ from homeassistant.const import ( | ||||
|     TEMP_CELSIUS, | ||||
| ) | ||||
| from homeassistant.core import callback | ||||
| from pyhon import Hon | ||||
| from pyhon.appliance import HonAppliance | ||||
|  | ||||
| from .const import HON_HVAC_MODE, HON_FAN, HON_HVAC_PROGRAM, DOMAIN | ||||
| from .hon import HonEntity, HonCoordinator | ||||
|  | ||||
| @ -107,6 +107,7 @@ class HonClimateEntity(HonEntity, ClimateEntity): | ||||
|             ] | ||||
|             await self._device.commands["startProgram"].send() | ||||
|         self._attr_hvac_mode = hvac_mode | ||||
|         self.async_write_ha_state() | ||||
|  | ||||
|     async def async_set_fan_mode(self, fan_mode): | ||||
|         mode_number = list(HON_FAN.values()).index(fan_mode) | ||||
| @ -114,6 +115,7 @@ class HonClimateEntity(HonEntity, ClimateEntity): | ||||
|             mode_number | ||||
|         ] | ||||
|         await self._device.commands["settings"].send() | ||||
|         self.async_write_ha_state() | ||||
|  | ||||
|     async def async_set_swing_mode(self, swing_mode): | ||||
|         horizontal = self._device.settings["settings.windDirectionHorizontal"] | ||||
| @ -128,29 +130,29 @@ class HonClimateEntity(HonEntity, ClimateEntity): | ||||
|             horizontal.value = "0" | ||||
|         self._attr_swing_mode = swing_mode | ||||
|         await self._device.commands["settings"].send() | ||||
|         self.async_write_ha_state() | ||||
|  | ||||
|     async def async_set_temperature(self, **kwargs): | ||||
|         if (temperature := kwargs.get(ATTR_TEMPERATURE)) is None: | ||||
|             return False | ||||
|         self._device.settings["settings.tempSel"].value = int(temperature) | ||||
|         self._device.settings["settings.tempSel"].value = str(int(temperature)) | ||||
|         await self._device.commands["settings"].send() | ||||
|         self.async_write_ha_state() | ||||
|  | ||||
|     @callback | ||||
|     def _handle_coordinator_update(self, update=True) -> None: | ||||
|         self._attr_target_temperature = int(float(self._device.get("tempSel"))) | ||||
|         self._attr_current_temperature = float(self._device.get("tempIndoor")) | ||||
|         self._attr_max_temp = self._device.settings["settings.tempSel"].max | ||||
|         self._attr_min_temp = self._device.settings["settings.tempSel"].min | ||||
|  | ||||
|         if self._device.get("onOffStatus") == "0": | ||||
|             self._attr_hvac_mode = HVACMode.OFF | ||||
|         else: | ||||
|             self._attr_hvac_mode = HON_HVAC_MODE[self._device.get("machMode") or "0"] | ||||
|  | ||||
|         self._attr_fan_mode = HON_FAN[self._device.settings["settings.windSpeed"].value] | ||||
|         self._attr_fan_mode = HON_FAN[self._device.get("windSpeed")] | ||||
|  | ||||
|         horizontal = self._device.settings["settings.windDirectionHorizontal"] | ||||
|         vertical = self._device.settings["settings.windDirectionVertical"] | ||||
|         horizontal = self._device.get("windDirectionHorizontal") | ||||
|         vertical = self._device.get("windDirectionVertical") | ||||
|         if horizontal == "7" and vertical == "8": | ||||
|             self._attr_swing_mode = SWING_BOTH | ||||
|         elif horizontal == "7": | ||||
| @ -159,3 +161,4 @@ class HonClimateEntity(HonEntity, ClimateEntity): | ||||
|             self._attr_swing_mode = SWING_VERTICAL | ||||
|         else: | ||||
|             self._attr_swing_mode = SWING_OFF | ||||
|         self.async_write_ha_state() | ||||
|  | ||||
| @ -1,9 +1,9 @@ | ||||
| import logging | ||||
|  | ||||
| import voluptuous as vol | ||||
|  | ||||
| from homeassistant import config_entries | ||||
| from homeassistant.const import CONF_EMAIL, CONF_PASSWORD | ||||
|  | ||||
| from .const import DOMAIN | ||||
|  | ||||
| _LOGGER = logging.getLogger(__name__) | ||||
|  | ||||
| @ -21,7 +21,7 @@ PLATFORMS = [ | ||||
| HON_HVAC_MODE = { | ||||
|     "0": HVACMode.AUTO, | ||||
|     "1": HVACMode.COOL, | ||||
|     "2": HVACMode.COOL, | ||||
|     "2": HVACMode.DRY, | ||||
|     "3": HVACMode.DRY, | ||||
|     "4": HVACMode.HEAT, | ||||
|     "5": HVACMode.FAN_ONLY, | ||||
|  | ||||
| @ -1,11 +1,11 @@ | ||||
| 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 | ||||
|  | ||||
| _LOGGER = logging.getLogger(__name__) | ||||
|  | ||||
| @ -6,6 +6,6 @@ | ||||
|   "documentation": "https://github.com/Andre0512/hon/", | ||||
|   "iot_class": "cloud_polling", | ||||
|   "issue_tracker": "https://github.com/Andre0512/hon/issues", | ||||
|  "requirements": ["pyhOn==0.10.6"], | ||||
|   "version": "0.8.0-beta.1" | ||||
|  "requirements": ["pyhOn==0.10.7"], | ||||
|   "version": "0.8.0-beta.2" | ||||
| } | ||||
|  | ||||
| @ -243,7 +243,7 @@ class HonNumberEntity(HonEntity, NumberEntity): | ||||
|         else: | ||||
|             return ( | ||||
|                 super().available | ||||
|                 and self._device.get("remoteCtrValid") == "1" | ||||
|                 and self._device.get("remoteCtrValid", "1") == "1" | ||||
|                 and self._device.get("attributes.lastConnEvent.category") | ||||
|                 != "DISCONNECTED" | ||||
|             ) | ||||
|  | ||||
| @ -108,7 +108,6 @@ SELECTS = { | ||||
|         SelectEntityDescription( | ||||
|             key="startProgram.program", | ||||
|             name="Program", | ||||
|             entity_category=EntityCategory.CONFIG, | ||||
|             translation_key="programs_ac", | ||||
|         ), | ||||
|         SelectEntityDescription( | ||||
| @ -207,7 +206,7 @@ class HonSelectEntity(HonEntity, SelectEntity): | ||||
|         else: | ||||
|             return ( | ||||
|                 super().available | ||||
|                 and self._device.get("remoteCtrValid") == "1" | ||||
|                 and self._device.get("remoteCtrValid", "1") == "1" | ||||
|                 and self._device.get("attributes.lastConnEvent.category") | ||||
|                 != "DISCONNECTED" | ||||
|             ) | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| import logging | ||||
|  | ||||
| from pyhon import Hon | ||||
|  | ||||
| from homeassistant.components.sensor import ( | ||||
|     SensorEntity, | ||||
|     SensorDeviceClass, | ||||
| @ -20,8 +22,6 @@ from homeassistant.const import ( | ||||
| from homeassistant.core import callback | ||||
| from homeassistant.helpers.entity import EntityCategory | ||||
| from homeassistant.helpers.typing import StateType | ||||
| from pyhon import Hon | ||||
|  | ||||
| from . import const | ||||
| from .const import DOMAIN | ||||
| from .hon import HonCoordinator, HonEntity, unique_entities | ||||
| @ -399,6 +399,72 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { | ||||
|             options=list(const.DISHWASHER_PR_PHASE), | ||||
|         ), | ||||
|     ), | ||||
|     "AC": ( | ||||
|         SensorEntityDescription( | ||||
|             key="tempAirOutdoor", | ||||
|             name="Air Temperature Outdoor", | ||||
|             icon="mdi:thermometer", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             device_class=SensorDeviceClass.TEMPERATURE, | ||||
|             native_unit_of_measurement=UnitOfTemperature.CELSIUS, | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="tempCoilerIndoor", | ||||
|             name="Coiler Temperature Indoor", | ||||
|             icon="mdi:thermometer", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             device_class=SensorDeviceClass.TEMPERATURE, | ||||
|             native_unit_of_measurement=UnitOfTemperature.CELSIUS, | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="tempCoilerOutdoor", | ||||
|             name="Coiler Temperature Outside", | ||||
|             icon="mdi:thermometer", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             device_class=SensorDeviceClass.TEMPERATURE, | ||||
|             native_unit_of_measurement=UnitOfTemperature.CELSIUS, | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="tempDefrostOutdoor", | ||||
|             name="Defrost Temperature Outdoor", | ||||
|             icon="mdi:thermometer", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             device_class=SensorDeviceClass.TEMPERATURE, | ||||
|             native_unit_of_measurement=UnitOfTemperature.CELSIUS, | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="tempInAirOutdoor", | ||||
|             name="In Air Temperature Outdoor", | ||||
|             icon="mdi:thermometer", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             device_class=SensorDeviceClass.TEMPERATURE, | ||||
|             native_unit_of_measurement=UnitOfTemperature.CELSIUS, | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="tempIndoor", | ||||
|             name="Indoor Temperature", | ||||
|             icon="mdi:thermometer", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             device_class=SensorDeviceClass.TEMPERATURE, | ||||
|             native_unit_of_measurement=UnitOfTemperature.CELSIUS, | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="tempOutdoor", | ||||
|             name="Outdoor Temperature", | ||||
|             icon="mdi:thermometer", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             device_class=SensorDeviceClass.TEMPERATURE, | ||||
|             native_unit_of_measurement=UnitOfTemperature.CELSIUS, | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="tempSel", | ||||
|             name="Selected Temperature", | ||||
|             icon="mdi:thermometer", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             device_class=SensorDeviceClass.TEMPERATURE, | ||||
|             native_unit_of_measurement=UnitOfTemperature.CELSIUS, | ||||
|         ), | ||||
|     ), | ||||
|     "REF": ( | ||||
|         SensorEntityDescription( | ||||
|             key="humidityEnv", | ||||
|  | ||||
| @ -2,13 +2,14 @@ import logging | ||||
| from dataclasses import dataclass | ||||
| from typing import Any | ||||
|  | ||||
| from homeassistant.components.switch import SwitchEntityDescription, SwitchEntity | ||||
| from homeassistant.config_entries import ConfigEntry | ||||
| from homeassistant.const import EntityCategory | ||||
| from pyhon import Hon | ||||
| from pyhon.appliance import HonAppliance | ||||
| from pyhon.parameter.range import HonParameterRange | ||||
|  | ||||
| from homeassistant.components.switch import SwitchEntityDescription, SwitchEntity | ||||
| from homeassistant.config_entries import ConfigEntry | ||||
| from homeassistant.const import EntityCategory | ||||
| from homeassistant.core import callback | ||||
| from .const import DOMAIN | ||||
| from .hon import HonCoordinator, HonEntity, unique_entities | ||||
|  | ||||
| @ -19,6 +20,7 @@ _LOGGER = logging.getLogger(__name__) | ||||
| class HonSwitchEntityDescriptionMixin: | ||||
|     turn_on_key: str = "" | ||||
|     turn_off_key: str = "" | ||||
|     status_key: str = "" | ||||
|  | ||||
|  | ||||
| @dataclass | ||||
| @ -251,12 +253,14 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { | ||||
|     "AC": ( | ||||
|         HonSwitchEntityDescription( | ||||
|             key="settings.10degreeHeatingStatus", | ||||
|             status_key="10degreeHeatingStatus", | ||||
|             name="10° Heating", | ||||
|             icon="mdi:heat-wave", | ||||
|             translation_key="10_degree_heating", | ||||
|         ), | ||||
|         HonSwitchEntityDescription( | ||||
|             key="settings.echoStatus", | ||||
|             status_key="echoStatus", | ||||
|             name="Echo", | ||||
|             icon="mdi:account-voice", | ||||
|         ), | ||||
| @ -267,23 +271,27 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { | ||||
|         ), | ||||
|         HonSwitchEntityDescription( | ||||
|             key="settings.healthMode", | ||||
|             status_key="healthMode", | ||||
|             name="Health Mode", | ||||
|             icon="mdi:medication-outline", | ||||
|         ), | ||||
|         HonSwitchEntityDescription( | ||||
|             key="settings.muteStatus", | ||||
|             status_key="muteStatus", | ||||
|             name="Mute", | ||||
|             icon="mdi:volume-off", | ||||
|             translation_key="mute_mode", | ||||
|         ), | ||||
|         HonSwitchEntityDescription( | ||||
|             key="settings.rapidMode", | ||||
|             status_key="rapidMode", | ||||
|             name="Rapid Mode", | ||||
|             icon="mdi:run-fast", | ||||
|             translation_key="rapid_mode", | ||||
|         ), | ||||
|         HonSwitchEntityDescription( | ||||
|             key="settings.screenDisplayStatus", | ||||
|             status_key="screenDisplayStatus", | ||||
|             name="Screen Display", | ||||
|             icon="mdi:monitor-small", | ||||
|         ), | ||||
| @ -295,12 +303,14 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { | ||||
|         ), | ||||
|         HonSwitchEntityDescription( | ||||
|             key="settings.selfCleaningStatus", | ||||
|             status_key="selfCleaningStatus", | ||||
|             name="Self Cleaning", | ||||
|             icon="mdi:air-filter", | ||||
|             translation_key="self_clean", | ||||
|         ), | ||||
|         HonSwitchEntityDescription( | ||||
|             key="settings.silentSleepStatus", | ||||
|             status_key="silentSleepStatus", | ||||
|             name="Silent Sleep", | ||||
|             icon="mdi:bed", | ||||
|             translation_key="silent_mode", | ||||
| @ -392,6 +402,8 @@ class HonSwitchEntity(HonEntity, SwitchEntity): | ||||
|                 or hasattr(setting, "min") | ||||
|                 and setting.value != setting.min | ||||
|             ) | ||||
|         elif self.entity_description.status_key: | ||||
|             return self._device.get(self.entity_description.status_key, "0") == "1" | ||||
|         return self._device.get(self.entity_description.key, False) | ||||
|  | ||||
|     async def async_turn_on(self, **kwargs: Any) -> None: | ||||
| @ -434,7 +446,15 @@ class HonSwitchEntity(HonEntity, SwitchEntity): | ||||
|         else: | ||||
|             return ( | ||||
|                 super().available | ||||
|                 and self._device.get("remoteCtrValid") == "1" | ||||
|                 and self._device.get("remoteCtrValid", "1") == "1" | ||||
|                 and self._device.get("attributes.lastConnEvent.category") | ||||
|                 != "DISCONNECTED" | ||||
|             ) | ||||
|  | ||||
|     @callback | ||||
|     def _handle_coordinator_update(self): | ||||
|         if not self.entity_description.status_key: | ||||
|             return | ||||
|         value = self._device.get(self.entity_description.status_key, "0") | ||||
|         self._attr_state = value == "1" | ||||
|         self.async_write_ha_state() | ||||
|  | ||||
| @ -1255,6 +1255,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Otevřená dvířka Chladnička" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Výměna filtru" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -1255,6 +1255,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Tür offen Kühlschrank" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Filteraustausch" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -1255,6 +1255,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Πόρτα ανοιχτή Ψυγείο" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Αντικατάσταση φίλτρου" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -1323,6 +1323,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Door open Fridge" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Filter replacement" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -1255,6 +1255,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Puerta abierta Frigorífico" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Sustitución del filtro" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -1255,6 +1255,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Porte ouverte Réfrigérateur" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Remplacement du filtre" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -708,6 +708,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Door open Fridge" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Filter replacement" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -1255,6 +1255,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Otvorena vrata Hladnjak" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Zamjena filtra" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -1307,6 +1307,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Porta aperta Frigorifero" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Sostituzione filtro" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -1255,6 +1255,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Deur open Koelkast" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Filter vervangen" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -1255,6 +1255,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Drzwi otwarte Lodówka" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Wymiana filtra" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -1255,6 +1255,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Porta aberta Frigorífico" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Substituição do filtro" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -1255,6 +1255,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Ușă deschisă Frigider" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Înlocuirea filtrului" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -1255,6 +1255,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Дверца открыта Холодильник" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Замена фильтра" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -1255,6 +1255,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Otvorené dvere Chladnička" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Výmena filtra" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -1255,6 +1255,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Door open Hladilnik" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Menjava filtra" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -1255,6 +1255,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Vrata su otvorena Frižider" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Zamena filtera" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -1255,6 +1255,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "Kapı açık Buzdolabı" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "Filtre değişimi" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -1255,6 +1255,9 @@ | ||||
|             }, | ||||
|             "fridge_door": { | ||||
|                 "name": "门打开 冰箱" | ||||
|             }, | ||||
|             "filter_replacement": { | ||||
|                 "name": "更换过滤器" | ||||
|             } | ||||
|         }, | ||||
|         "number": { | ||||
|  | ||||
| @ -112,6 +112,7 @@ NAMES = { | ||||
|         "super_freeze": "REF_CMD&CTRL.MODALITIES.SUPER_FREEZE", | ||||
|         "freezer_door": ["GLOBALS.APPLIANCE_STATUS.DOOR_OPEN", "REF.ZONES.FREEZER"], | ||||
|         "fridge_door": ["GLOBALS.APPLIANCE_STATUS.DOOR_OPEN", "REF.ZONES.FRIDGE"], | ||||
|         "filter_replacement": "AP.MAINTENANCE.FILTER_REPLACEMENT", | ||||
|     }, | ||||
|     "button": { | ||||
|         "induction_hob": "GLOBALS.APPLIANCES_NAME.IH", | ||||
|  | ||||
| @ -61,7 +61,9 @@ for entity_type, appliances in entities.items(): | ||||
|             attributes = (key, entity.name, entity.icon, entity_type) | ||||
|             category = ( | ||||
|                 "control" | ||||
|                 if entity_type in ["switch", "button", "climate"] | ||||
|                 if entity.key.startswith("settings") | ||||
|                 or hasattr(entity, "turn_on_key") | ||||
|                 or entity_type in ["button", "climate"] | ||||
|                 else "sensor" | ||||
|             ) | ||||
|             result.setdefault(appliance, {}).setdefault( | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	