Merge remote-tracking branch 'origin/main'
# Conflicts: # custom_components/hon/manifest.json
This commit is contained in:
		| @ -152,6 +152,9 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { | ||||
|             device_class=BinarySensorDeviceClass.HEAT, | ||||
|             on_value="1", | ||||
|         ), | ||||
|         HonBinarySensorEntityDescription( | ||||
|             key="panStatus", name="Pan Status", on_value="1", icon="mdi:pot-mix" | ||||
|         ), | ||||
|         HonBinarySensorEntityDescription( | ||||
|             key="hobLockStatus", | ||||
|             name="Hob Lock", | ||||
| @ -159,6 +162,34 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { | ||||
|             on_value="0", | ||||
|         ), | ||||
|     ), | ||||
|     "DW": ( | ||||
|         HonBinarySensorEntityDescription( | ||||
|             key="saltStatus", | ||||
|             name="Salt", | ||||
|             device_class=BinarySensorDeviceClass.PROBLEM, | ||||
|             on_value="1", | ||||
|             icon="mdi:shaker-outline", | ||||
|         ), | ||||
|         HonBinarySensorEntityDescription( | ||||
|             key="rinseAidStatus", | ||||
|             name="Rinse Aid", | ||||
|             device_class=BinarySensorDeviceClass.PROBLEM, | ||||
|             on_value="1", | ||||
|             icon="mdi:spray-bottle", | ||||
|         ), | ||||
|         HonBinarySensorEntityDescription( | ||||
|             key="attributes.lastConnEvent.category", | ||||
|             name="Connection", | ||||
|             device_class=BinarySensorDeviceClass.CONNECTIVITY, | ||||
|             on_value="CONNECTED", | ||||
|         ), | ||||
|         HonBinarySensorEntityDescription( | ||||
|             key="doorStatus", | ||||
|             name="Door", | ||||
|             device_class=BinarySensorDeviceClass.DOOR, | ||||
|             on_value="1", | ||||
|         ), | ||||
|     ), | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -120,6 +120,21 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { | ||||
|             icon="mdi:timelapse", | ||||
|         ), | ||||
|     ), | ||||
|     "DW": ( | ||||
|         NumberEntityDescription( | ||||
|             key="startProgram.delayTime", | ||||
|             name="Delay time", | ||||
|             icon="mdi:timer-plus", | ||||
|             entity_category=EntityCategory.CONFIG, | ||||
|             native_unit_of_measurement=UnitOfTime.MINUTES, | ||||
|         ), | ||||
|         NumberEntityDescription( | ||||
|             key="startProgram.waterHard", | ||||
|             name="Water hard", | ||||
|             icon="mdi:water", | ||||
|             entity_category=EntityCategory.CONFIG, | ||||
|         ), | ||||
|     ), | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -79,6 +79,14 @@ SELECTS = { | ||||
|             translation_key="programs", | ||||
|         ), | ||||
|     ), | ||||
|     "DW": ( | ||||
|         SelectEntityDescription( | ||||
|             key="startProgram.program", | ||||
|             name="Program", | ||||
|             entity_category=EntityCategory.CONFIG, | ||||
|             translation_key="programs_dw", | ||||
|         ), | ||||
|     ), | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -21,6 +21,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 .const import DOMAIN | ||||
| from .hon import HonCoordinator, HonEntity | ||||
| @ -54,7 +55,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { | ||||
|             name="Current Electricity Used", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             device_class=SensorDeviceClass.POWER, | ||||
|             native_unit_of_measurement=UnitOfPower.KILO_WATT, | ||||
|             native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, | ||||
|             icon="mdi:lightning-bolt", | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
| @ -145,6 +146,48 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { | ||||
|         ), | ||||
|     ), | ||||
|     "WD": ( | ||||
|         SensorEntityDescription( | ||||
|             key="totalElectricityUsed", | ||||
|             name="Total Power", | ||||
|             device_class=SensorDeviceClass.ENERGY, | ||||
|             state_class=SensorStateClass.TOTAL_INCREASING, | ||||
|             native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="totalWaterUsed", | ||||
|             name="Total Water", | ||||
|             device_class=SensorDeviceClass.WATER, | ||||
|             state_class=SensorStateClass.TOTAL_INCREASING, | ||||
|             native_unit_of_measurement=UnitOfVolume.LITERS, | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="totalWashCycle", | ||||
|             name="Total Wash Cycle", | ||||
|             state_class=SensorStateClass.TOTAL_INCREASING, | ||||
|             icon="mdi:counter", | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="currentElectricityUsed", | ||||
|             name="Current Electricity Used", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             device_class=SensorDeviceClass.POWER, | ||||
|             native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, | ||||
|             icon="mdi:lightning-bolt", | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="currentWaterUsed", | ||||
|             name="Current Water Used", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             icon="mdi:water", | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="startProgram.weight", | ||||
|             name="Suggested weight", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             entity_category=EntityCategory.CONFIG, | ||||
|             native_unit_of_measurement=UnitOfMass.KILOGRAMS, | ||||
|             icon="mdi:weight-kilogram", | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="machMode", | ||||
|             name="Machine Status", | ||||
| @ -236,6 +279,75 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = { | ||||
|             native_unit_of_measurement=UnitOfTemperature.CELSIUS, | ||||
|         ), | ||||
|         SensorEntityDescription(key="errors", name="Error", icon="mdi:math-log"), | ||||
|         SensorEntityDescription( | ||||
|             key="power", | ||||
|             name="Power", | ||||
|             icon="mdi:lightning-bolt", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|         ), | ||||
|     ), | ||||
|     "DW": ( | ||||
|         SensorEntityDescription( | ||||
|             key="startProgram.ecoIndex", | ||||
|             name="Eco Index", | ||||
|             icon="mdi:sprout", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             entity_category=EntityCategory.CONFIG, | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="startProgram.waterEfficiency", | ||||
|             name="Water Efficiency", | ||||
|             icon="mdi:water", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             entity_category=EntityCategory.CONFIG, | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="startProgram.waterSaving", | ||||
|             name="Water Saving", | ||||
|             icon="mdi:water-percent", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             native_unit_of_measurement=PERCENTAGE, | ||||
|             entity_category=EntityCategory.CONFIG, | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="startProgram.temp", | ||||
|             name="Temperature", | ||||
|             icon="mdi:thermometer", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             native_unit_of_measurement=UnitOfTemperature.CELSIUS, | ||||
|             entity_category=EntityCategory.CONFIG, | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="startProgram.energyLabel", | ||||
|             name="Energy Label", | ||||
|             icon="mdi:lightning-bolt-circle", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             entity_category=EntityCategory.CONFIG, | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="startProgram.remainingTime", | ||||
|             name="Time", | ||||
|             icon="mdi:timer", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             native_unit_of_measurement=UnitOfTime.MINUTES, | ||||
|             entity_category=EntityCategory.CONFIG, | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="machMode", | ||||
|             name="Machine Status", | ||||
|             icon="mdi:information", | ||||
|             translation_key="mode_dw", | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="errors", name="Error", icon="mdi:math-log", translation_key="errors" | ||||
|         ), | ||||
|         SensorEntityDescription( | ||||
|             key="remainingTimeMM", | ||||
|             name="Remaining Time", | ||||
|             icon="mdi:timer", | ||||
|             state_class=SensorStateClass.MEASUREMENT, | ||||
|             native_unit_of_measurement=UnitOfTime.MINUTES, | ||||
|         ), | ||||
|     ), | ||||
| } | ||||
|  | ||||
|  | ||||
| @ -1,5 +1,4 @@ | ||||
| import logging | ||||
|  | ||||
| from dataclasses import dataclass | ||||
| from typing import Any | ||||
|  | ||||
| @ -101,6 +100,51 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = { | ||||
|             turn_off_key="resumeProgram", | ||||
|         ), | ||||
|     ), | ||||
|     "DW": ( | ||||
|         HonSwitchEntityDescription( | ||||
|             key="active", | ||||
|             name="Dish Washer", | ||||
|             icon="mdi:dishwasher", | ||||
|             turn_on_key="startProgram", | ||||
|             turn_off_key="stopProgram", | ||||
|         ), | ||||
|         HonSwitchEntityDescription( | ||||
|             key="startProgram.extraDry", | ||||
|             name="Extra Dry", | ||||
|             icon="mdi:hair-dryer", | ||||
|             entity_category=EntityCategory.CONFIG, | ||||
|         ), | ||||
|         HonSwitchEntityDescription( | ||||
|             key="startProgram.halfLoad", | ||||
|             name="Half Load", | ||||
|             icon="mdi:fraction-one-half", | ||||
|             entity_category=EntityCategory.CONFIG, | ||||
|         ), | ||||
|         HonSwitchEntityDescription( | ||||
|             key="startProgram.openDoor", | ||||
|             name="Open Door", | ||||
|             icon="mdi:door-open", | ||||
|             entity_category=EntityCategory.CONFIG, | ||||
|         ), | ||||
|         HonSwitchEntityDescription( | ||||
|             key="startProgram.threeInOne", | ||||
|             name="Three in One", | ||||
|             icon="mdi:numeric-3-box-outline", | ||||
|             entity_category=EntityCategory.CONFIG, | ||||
|         ), | ||||
|         HonSwitchEntityDescription( | ||||
|             key="startProgram.ecoExpress", | ||||
|             name="Eco Express", | ||||
|             icon="mdi:sprout", | ||||
|             entity_category=EntityCategory.CONFIG, | ||||
|         ), | ||||
|         HonSwitchEntityDescription( | ||||
|             key="startProgram.addDish", | ||||
|             name="Add Dish", | ||||
|             icon="mdi:silverware-fork-knife", | ||||
|             entity_category=EntityCategory.CONFIG, | ||||
|         ), | ||||
|     ), | ||||
| } | ||||
|  | ||||
|  | ||||
| @ -150,13 +194,6 @@ class HonSwitchEntity(HonEntity, SwitchEntity): | ||||
|         self.entity_description = description | ||||
|         self._attr_unique_id = f"{super().unique_id}{description.key}" | ||||
|  | ||||
|     def available(self) -> bool: | ||||
|         if self.entity_category == EntityCategory.CONFIG: | ||||
|             return ( | ||||
|                 self._device.settings[self.entity_description.key].typology != "fixed" | ||||
|             ) | ||||
|         return True | ||||
|  | ||||
|     @property | ||||
|     def is_on(self) -> bool | None: | ||||
|         """Return True if entity is on.""" | ||||
| @ -172,7 +209,9 @@ class HonSwitchEntity(HonEntity, SwitchEntity): | ||||
|     async def async_turn_on(self, **kwargs: Any) -> None: | ||||
|         if self.entity_category == EntityCategory.CONFIG: | ||||
|             setting = self._device.settings[self.entity_description.key] | ||||
|             setting.value = setting.max | ||||
|             setting.value = ( | ||||
|                 setting.max if isinstance(setting, HonParameterRange) else "1" | ||||
|             ) | ||||
|             self.async_write_ha_state() | ||||
|         else: | ||||
|             await self._device.commands[self.entity_description.turn_on_key].send() | ||||
| @ -180,7 +219,9 @@ class HonSwitchEntity(HonEntity, SwitchEntity): | ||||
|     async def async_turn_off(self, **kwargs: Any) -> None: | ||||
|         if self.entity_category == EntityCategory.CONFIG: | ||||
|             setting = self._device.settings[self.entity_description.key] | ||||
|             setting.value = setting.min | ||||
|             setting.value = ( | ||||
|                 setting.min if isinstance(setting, HonParameterRange) else "0" | ||||
|             ) | ||||
|             self.async_write_ha_state() | ||||
|         else: | ||||
|             await self._device.commands[self.entity_description.turn_off_key].send() | ||||
|  | ||||
| @ -72,6 +72,16 @@ | ||||
|           "13": "Ready to Store H-2", | ||||
|           "14": "Extra Dry H-3" | ||||
|         } | ||||
|       }, | ||||
|       "mode_dw": { | ||||
|         "state": { | ||||
|           "0": "Disconnected", | ||||
|           "1": "Ready", | ||||
|           "2": "Running", | ||||
|           "3": "Delayed start", | ||||
|           "5": "Delayed start cancelled", | ||||
|           "7": "Finished" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "select": { | ||||
| @ -461,6 +471,112 @@ | ||||
|           "iot_standard_melting": "Melting", | ||||
|           "iot_standard_simmering": "Simmering" | ||||
|         } | ||||
|       }, | ||||
|       "programs_dw": { | ||||
|         "state": { | ||||
|           "59_min": "Rapid 59'", | ||||
|           "auto_care": "Auto Care", | ||||
|           "auto_care_soil": "Auto Care", | ||||
|           "auto_hygiene": "Auto Hygiene", | ||||
|           "auto_plus": "AutoPlus", | ||||
|           "auto_rapid": "Auto Rapid", | ||||
|           "auto_sensor": "Auto Sensor", | ||||
|           "auto_sensor_soil": "Auto Sensor", | ||||
|           "auto_universal": "Auto Universal 50 - 60°C", | ||||
|           "auto_universal_plus": "Auto Universal+ 65 - 75°C", | ||||
|           "auto_universal_plus_soil": "Auto Universal+ 65 - 75°C", | ||||
|           "auto_universal_soil": "Auto Universal 50 - 60°C", | ||||
|           "auto_wash": "Auto Wash", | ||||
|           "auto_wash_soil": "Auto Wash", | ||||
|           "classe_a_59": "A Wash 59' 65°C", | ||||
|           "delicate": "Delicate 45°C", | ||||
|           "dishwasher_care": "Limescale cleaning", | ||||
|           "eco": "Eco", | ||||
|           "eco_asynch": "Eco 45°C", | ||||
|           "eco_bldc": "Eco 45°C", | ||||
|           "eco_synch": "Eco 45°C", | ||||
|           "gentle_wash": "Gentle wash", | ||||
|           "glass": "Glass", | ||||
|           "glassware": "Glassware 45°C", | ||||
|           "glass_care": "Glass Care", | ||||
|           "hygiene": "Hygiene", | ||||
|           "hygiene_plus": "Hygiene+ 75°C", | ||||
|           "intensive": "Intensive", | ||||
|           "intensive_rapid": "Intensive Rapid", | ||||
|           "iot_auto_sensor": "Auto Sensor", | ||||
|           "iot_auto_universal_soil": "Auto Universal 50 - 60°C", | ||||
|           "iot_auto_wash_soil": "Auto Wash", | ||||
|           "iot_baby_care": "Baby Care", | ||||
|           "iot_breakfast": "Breakfast", | ||||
|           "iot_checkup": "Check-Up", | ||||
|           "iot_china_crystals": "China Crystals", | ||||
|           "iot_classe_a_59": "Rapid 59'", | ||||
|           "iot_cocktail_glasses": "Coktail Glasses", | ||||
|           "iot_cocktail_glasses_soil": "Coktail Glasses", | ||||
|           "iot_daily_care": "Daily Care", | ||||
|           "iot_daily_care_soil": "Daily Care", | ||||
|           "iot_delicate": "Delicate 45°C", | ||||
|           "iot_dinner_for_two": "Dinner for 2", | ||||
|           "iot_dinner_for_two_soil": "Dinner for 2", | ||||
|           "iot_dreft_quick_cycle": "Dreft Quick", | ||||
|           "iot_eco_asynch": "Eco 45°C", | ||||
|           "iot_eco_bldc": "Eco 45°C", | ||||
|           "iot_eco_synch": "Eco 45°C", | ||||
|           "iot_extra_hygiene": "Extra Hygiene", | ||||
|           "iot_fairy_quick_cycle": "Fairy Short", | ||||
|           "iot_happy_hour": "Happy Hour", | ||||
|           "iot_jar_quick_cycle": "Jar Quick", | ||||
|           "iot_party": "Party", | ||||
|           "iot_party_soil": "Party", | ||||
|           "iot_pizza_menu": "Pizza Menu", | ||||
|           "iot_pizza_menu_soil": "Pizza Menu", | ||||
|           "iot_plastic_tupperware": "Plastic & Tupperware", | ||||
|           "iot_porcelain": "Porcelain", | ||||
|           "iot_pot_and_pans": "Pot & Pans", | ||||
|           "iot_pot_and_pans_soil": "Pot & Pans", | ||||
|           "iot_power_mix_wash": "Power Mix Wash", | ||||
|           "iot_power_mix_wash_soil": "Power Mix Wash", | ||||
|           "iot_prewash": "Pre-wash", | ||||
|           "iot_pyrex_and_glassware": "Pyrex & Glassware", | ||||
|           "iot_rapid_29": "Rapid 29'", | ||||
|           "iot_rapid_39": "Rapid 39' 60°C", | ||||
|           "iot_single": "Single", | ||||
|           "iot_steam": "Steam 75°C", | ||||
|           "iot_super_flash": "Super Flash", | ||||
|           "iot_super_wash": "Super Wash", | ||||
|           "iot_turbopower": "TurboPower", | ||||
|           "iot_universal": "Universal 60°C", | ||||
|           "iot_wok_grids_maxi_pans": "Special Pans (Wok, Grids & Maxi Pans)", | ||||
|           "iot_wok_grids_maxi_pans_soil": "Special Pans (Wok, Grids & Maxi Pans)", | ||||
|           "iot_yes_quick_cycle": "Yes Quick", | ||||
|           "night": "Night 55°C", | ||||
|           "prewash": "Pre-wash", | ||||
|           "rapid_20": "Rapid 20'", | ||||
|           "rapid_24": "Rapid 24'", | ||||
|           "rapid_29": "Rapid 29' 50°C", | ||||
|           "rapid_35": "Wash&Dry 35'", | ||||
|           "rapid_39": "Rapid 39' 60°C", | ||||
|           "rapid_49": "Rapid 49'", | ||||
|           "rapid_59": "Rapid 59'", | ||||
|           "sanitising": "Sanitising", | ||||
|           "silence": "Silence", | ||||
|           "silent": "Silent", | ||||
|           "silent_care": "Silent Care", | ||||
|           "smart_ai": "Smart AI", | ||||
|           "smart_ai_pro": "Smart AI Pro", | ||||
|           "smart_ai_rapid": "Smart AI Rapid", | ||||
|           "special": "Special", | ||||
|           "special_pw_prz": "Special", | ||||
|           "steam": "Steam 75°C", | ||||
|           "steam_plus": "Steam Plus 75°C", | ||||
|           "total_care": "Total Care 50°C", | ||||
|           "ultra_silence": "Ultra Silence 55°C", | ||||
|           "ultra_silent": "Ultra Silent 55°C", | ||||
|           "universal": "Universal 60°C", | ||||
|           "universal_plus": "Universal Plus 70°C", | ||||
|           "zone_wash": "Flex Zone Wash", | ||||
|           "zoom_39": "Zoom 39 min" | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user