Compare commits

...

8 Commits

Author SHA1 Message Date
040b731c91 Bump version 2023-07-22 11:59:04 +02:00
8d54c09415 Bump version 2023-07-22 11:57:36 +02:00
79e901d34c Bump version 2023-07-12 00:23:28 +02:00
fb09c2e559 Improve hood controls 2023-07-12 00:20:35 +02:00
f3325f0ff5 Improve icons/translations of air purifier #72 2023-07-12 00:18:44 +02:00
a9e21608d8 Fix for setting some climate modes #84 2023-07-11 00:17:55 +02:00
fb8fba259a Add hygiene switch #91 2023-07-10 01:00:57 +02:00
9dc98953a2 Add dirt level select entity 2023-07-10 00:48:57 +02:00
30 changed files with 618 additions and 49 deletions

View File

@ -45,7 +45,7 @@ Support has been confirmed for these models, but many more will work. Please add
| **Washer Dryer** | HWD100-B14979 | HDQ 496AMBS/1-S <br/> HWPS4954DAMR-11 | RPW41066BWMR/1-S | | **Washer Dryer** | HWD100-B14979 | HDQ 496AMBS/1-S <br/> HWPS4954DAMR-11 | RPW41066BWMR/1-S |
| **Oven** | HWO60SM2F3XH | HSOT3161WG | | | **Oven** | HWO60SM2F3XH | HSOT3161WG | |
| **Dish Washer** | XIB 3B2SFS-80 <br/> XIB 6B2D3FB | HFB 6B2S3FX | | | **Dish Washer** | XIB 3B2SFS-80 <br/> XIB 6B2D3FB | HFB 6B2S3FX | |
| **Air Conditioner** | AD105S2SM3FA <br/> AS09TS4HRA-M <br/> AS20HPL1HRA <br/> AS25PBAHRA <br/> AS25S2SF1FA-WH <br/> AS25TADHRA-2 <br/> AS35PBAHRA <br/> AS35S2SF1FA-WH <br/> AS35S2SF2FA-3 <br/> AS35TADHRA-2 <br/> AS35TAMHRA-C | | | | **Air Conditioner** | AD105S2SM3FA <br/> AS09TS4HRA-M <br/> AS20HPL1HRA <br/> AS25PBAHRA <br/> AS25S2SF1FA-WH <br/> AS25TADHRA-2 <br/> AS35PBAHRA <br/> AS35S2SF1FA-WH <br/> AS35S2SF2FA-3 <br/> AS35TADHRA-2 <br/> AS35TAMHRA-C | | CY-12TAIN |
| **Fridge** | HFW7720ENMB | | CCE4T620EWU | | **Fridge** | HFW7720ENMB | | CCE4T620EWU |
| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | | **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI |
| **Hood** | HADG6DS46BWIFI | | | | **Hood** | HADG6DS46BWIFI | | |
@ -181,7 +181,7 @@ For every device exists a button under diagnostics which can be used to log all
| --- | --- | --- | --- | | --- | --- | --- | --- |
| Aroma Time Off | `scent-off` | `number` | `settings.aromaTimeOff` | | Aroma Time Off | `scent-off` | `number` | `settings.aromaTimeOff` |
| Aroma Time On | `scent` | `number` | `settings.aromaTimeOn` | | Aroma Time On | `scent` | `number` | `settings.aromaTimeOn` |
| Diffuser Level | `air-filter` | `select` | `settings.aromaStatus` | | Diffuser Level | `air-purifier` | `select` | `settings.aromaStatus` |
| Light status | | `light` | `settings.lightStatus` | | Light status | | `light` | `settings.lightStatus` |
| Lock Status | | `lock` | `lockStatus` | | Lock Status | | `lock` | `lockStatus` |
| Mode | `play` | `select` | `settings.machMode` | | Mode | `play` | `select` | `settings.machMode` |
@ -190,19 +190,19 @@ For every device exists a button under diagnostics which can be used to log all
#### Sensors #### Sensors
| Name | Icon | Entity | Key | | Name | Icon | Entity | Key |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| Air Quality | | `sensor` | `airQuality` | | Air Quality | `weather-dust` | `sensor` | `airQuality` |
| CO Level | | `sensor` | `coLevel` | | CO Level | | `sensor` | `coLevel` |
| Error | `math-log` | `sensor` | `errors` | | Error | `math-log` | `sensor` | `errors` |
| Humidity | | `sensor` | `humidityIndoor` | | Humidity | | `sensor` | `humidityIndoor` |
| Main Filter Status | | `sensor` | `mainFilterStatus` | | Main Filter Status | `air-filter` | `sensor` | `mainFilterStatus` |
| On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` | | On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` |
| PM 10 | | `sensor` | `pm10ValueIndoor` | | PM 10 | | `sensor` | `pm10ValueIndoor` |
| PM 2.5 | | `sensor` | `pm2p5ValueIndoor` | | PM 2.5 | | `sensor` | `pm2p5ValueIndoor` |
| Pre Filter Status | | `sensor` | `preFilterStatus` | | Pre Filter Status | `air-filter` | `sensor` | `preFilterStatus` |
| Temperature | | `sensor` | `temp` | | Temperature | | `sensor` | `temp` |
| Total Work Time | | `sensor` | `totalWorkTime` | | Total Work Time | | `sensor` | `totalWorkTime` |
| VOC | | `sensor` | `vocValueIndoor` | | VOC | | `sensor` | `vocValueIndoor` |
| Wind Speed | | `sensor` | `windSpeed` | | Wind Speed | `fan` | `sensor` | `windSpeed` |
### Dish Washer ### Dish Washer
#### Controls #### Controls
@ -247,9 +247,8 @@ For every device exists a button under diagnostics which can be used to log all
#### Controls #### Controls
| Name | Icon | Entity | Key | | Name | Icon | Entity | Key |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| Light status | | `light` | `startProgram.lightStatus` | | Hood | `hvac` | `switch` | `startProgram` / `stopProgram` |
| Start Program | `hvac` | `button` | `startProgram` | | Light status | | `light` | `settings.lightStatus` |
| Stop Program | `hvac-off` | `button` | `stopProgram` |
| Wind Speed | | `fan` | `settings.windSpeed` | | Wind Speed | | `fan` | `settings.windSpeed` |
#### Sensors #### Sensors
| Name | Icon | Entity | Key | | Name | Icon | Entity | Key |
@ -424,6 +423,7 @@ For every device exists a button under diagnostics which can be used to log all
| Auto Dose Softener | `teddy-bear` | `switch` | `startProgram.autoSoftenerStatus` | | Auto Dose Softener | `teddy-bear` | `switch` | `startProgram.autoSoftenerStatus` |
| Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | | Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` |
| Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | | Delay Time | `timer-plus` | `number` | `startProgram.delayTime` |
| Dirty level | `liquid-spot` | `select` | `startProgram.dirtyLevel` |
| Dry Time | | `number` | `startProgram.dryTime` | | Dry Time | | `number` | `startProgram.dryTime` |
| Dry Time | `timer` | `select` | `startProgram.dryTimeMM` | | Dry Time | `timer` | `select` | `startProgram.dryTimeMM` |
| Dry level | `hair-dryer` | `select` | `startProgram.dryLevel` | | Dry level | `hair-dryer` | `select` | `startProgram.dryLevel` |
@ -432,6 +432,7 @@ For every device exists a button under diagnostics which can be used to log all
| Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `startProgram.extraRinse2` | | Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `startProgram.extraRinse2` |
| Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `startProgram.extraRinse3` | | Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `startProgram.extraRinse3` |
| Good Night | `weather-night` | `switch` | `startProgram.goodNight` | | Good Night | `weather-night` | `switch` | `startProgram.goodNight` |
| Hygiene | `lotion-plus` | `switch` | `startProgram.hygiene` |
| Keep Fresh | `refresh-circle` | `switch` | `startProgram.permanentPressStatus` | | Keep Fresh | `refresh-circle` | `switch` | `startProgram.permanentPressStatus` |
| Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` | | Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` |
| Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | | Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` |
@ -459,7 +460,7 @@ For every device exists a button under diagnostics which can be used to log all
| Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | | Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` |
| Current Temperature | `thermometer` | `sensor` | `temp` | | Current Temperature | `thermometer` | `sensor` | `temp` |
| Current Water Used | `water` | `sensor` | `currentWaterUsed` | | Current Water Used | `water` | `sensor` | `currentWaterUsed` |
| Dirt level | `liquid-spot` | `sensor` | `dirtyLevel` | | Dirty level | `liquid-spot` | `sensor` | `dirtyLevel` |
| Door | | `binary_sensor` | `doorStatus` | | Door | | `binary_sensor` | `doorStatus` |
| Door Lock | | `binary_sensor` | `doorLockStatus` | | Door Lock | | `binary_sensor` | `doorLockStatus` |
| Dry level | `hair-dryer` | `sensor` | `dryLevel` | | Dry level | `hair-dryer` | `sensor` | `dryLevel` |
@ -496,11 +497,13 @@ For every device exists a button under diagnostics which can be used to log all
| Auto Dose Softener | `teddy-bear` | `switch` | `startProgram.autoSoftenerStatus` | | Auto Dose Softener | `teddy-bear` | `switch` | `startProgram.autoSoftenerStatus` |
| Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` | | Delay Status | `timer-check` | `switch` | `startProgram.delayStatus` |
| Delay Time | `timer-plus` | `number` | `startProgram.delayTime` | | Delay Time | `timer-plus` | `number` | `startProgram.delayTime` |
| Dirty level | `liquid-spot` | `select` | `startProgram.dirtyLevel` |
| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | | Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` |
| Extra Rinse 1 | `numeric-1-box-multiple-outline` | `switch` | `startProgram.extraRinse1` | | Extra Rinse 1 | `numeric-1-box-multiple-outline` | `switch` | `startProgram.extraRinse1` |
| Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `startProgram.extraRinse2` | | Extra Rinse 2 | `numeric-2-box-multiple-outline` | `switch` | `startProgram.extraRinse2` |
| Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `startProgram.extraRinse3` | | Extra Rinse 3 | `numeric-3-box-multiple-outline` | `switch` | `startProgram.extraRinse3` |
| Good Night | `weather-night` | `switch` | `startProgram.goodNight` | | Good Night | `weather-night` | `switch` | `startProgram.goodNight` |
| Hygiene | `lotion-plus` | `switch` | `startProgram.hygiene` |
| Keep Fresh | `refresh-circle` | `switch` | `startProgram.permanentPressStatus` | | Keep Fresh | `refresh-circle` | `switch` | `startProgram.permanentPressStatus` |
| Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` | | Liquid Detergent Dose | `cup-water` | `sensor` | `startProgram.liquidDetergentDose` |
| Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` | | Main Wash Time | `clock-start` | `number` | `startProgram.mainWashTime` |
@ -523,7 +526,7 @@ For every device exists a button under diagnostics which can be used to log all
| Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` | | Current Electricity Used | `lightning-bolt` | `sensor` | `currentElectricityUsed` |
| Current Temperature | `thermometer` | `sensor` | `temp` | | Current Temperature | `thermometer` | `sensor` | `temp` |
| Current Water Used | `water` | `sensor` | `currentWaterUsed` | | Current Water Used | `water` | `sensor` | `currentWaterUsed` |
| Dirt level | `liquid-spot` | `sensor` | `dirtyLevel` | | Dirty level | `liquid-spot` | `sensor` | `dirtyLevel` |
| Door | | `binary_sensor` | `doorStatus` | | Door | | `binary_sensor` | `doorStatus` |
| Door Lock | | `binary_sensor` | `doorLockStatus` | | Door Lock | | `binary_sensor` | `doorLockStatus` |
| Error | `math-log` | `sensor` | `errors` | | Error | `math-log` | `sensor` | `errors` |

View File

@ -35,20 +35,6 @@ BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = {
translation_key="stop_program", translation_key="stop_program",
), ),
), ),
"HO": (
ButtonEntityDescription(
key="startProgram",
name="Start Program",
icon="mdi:hvac",
translation_key="start_program",
),
ButtonEntityDescription(
key="stopProgram",
name="Stop Program",
icon="mdi:hvac-off",
translation_key="stop_program",
),
),
} }

View File

@ -6,7 +6,6 @@ from homeassistant.components.climate import (
ClimateEntityDescription, ClimateEntityDescription,
) )
from homeassistant.components.climate.const import ( from homeassistant.components.climate.const import (
FAN_OFF,
SWING_OFF, SWING_OFF,
SWING_BOTH, SWING_BOTH,
SWING_VERTICAL, SWING_VERTICAL,
@ -22,7 +21,7 @@ from homeassistant.const import (
from homeassistant.core import callback from homeassistant.core import callback
from pyhon.appliance import HonAppliance from pyhon.appliance import HonAppliance
from .const import HON_HVAC_MODE, HON_FAN, DOMAIN from .const import HON_HVAC_MODE, HON_FAN, DOMAIN, HON_HVAC_PROGRAM
from .hon import HonEntity from .hon import HonEntity
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -123,9 +122,6 @@ class HonACClimateEntity(HonEntity, ClimateEntity):
self._attr_preset_modes = [] self._attr_preset_modes = []
for mode in device.settings["startProgram.program"].values: for mode in device.settings["startProgram.program"].values:
self._attr_preset_modes.append(mode) self._attr_preset_modes.append(mode)
self._attr_fan_modes = [FAN_OFF]
for mode in device.settings["settings.windSpeed"].values:
self._attr_fan_modes.append(HON_FAN[int(mode)])
self._attr_swing_modes = [ self._attr_swing_modes = [
SWING_OFF, SWING_OFF,
SWING_VERTICAL, SWING_VERTICAL,
@ -181,7 +177,11 @@ class HonACClimateEntity(HonEntity, ClimateEntity):
self._device.settings["settings.onOffStatus"].value = "1" self._device.settings["settings.onOffStatus"].value = "1"
setting = self._device.settings["settings.machMode"] setting = self._device.settings["settings.machMode"]
modes = {HON_HVAC_MODE[int(number)]: number for number in setting.values} modes = {HON_HVAC_MODE[int(number)]: number for number in setting.values}
if hvac_mode in modes:
setting.value = modes[hvac_mode] setting.value = modes[hvac_mode]
else:
await self.async_set_preset_mode(HON_HVAC_PROGRAM[hvac_mode])
return
await self._device.commands["settings"].send() await self._device.commands["settings"].send()
self.async_write_ha_state() self.async_write_ha_state()
@ -192,7 +192,7 @@ class HonACClimateEntity(HonEntity, ClimateEntity):
async def async_set_preset_mode(self, preset_mode: str) -> None: async def async_set_preset_mode(self, preset_mode: str) -> None:
"""Set the new preset mode.""" """Set the new preset mode."""
if program := self._device.settings.get(f"startProgram.program"): if program := self._device.settings.get("startProgram.program"):
program.value = preset_mode program.value = preset_mode
self._device.sync_command("startProgram", "settings") self._device.sync_command("startProgram", "settings")
self._set_temperature_bound() self._set_temperature_bound()
@ -202,15 +202,24 @@ class HonACClimateEntity(HonEntity, ClimateEntity):
await self._device.commands["startProgram"].send() await self._device.commands["startProgram"].send()
self.async_write_ha_state() self.async_write_ha_state()
@property
def fan_modes(self) -> list[str]:
"""Return the list of available fan modes."""
fan_modes = []
for mode in reversed(self._device.settings["settings.windSpeed"].values):
fan_modes.append(HON_FAN[int(mode)])
return fan_modes
@property @property
def fan_mode(self) -> str | None: def fan_mode(self) -> str | None:
"""Return the fan setting.""" """Return the fan setting."""
return HON_FAN[self._device.get("windSpeed")] return HON_FAN[self._device.get("windSpeed")]
async def async_set_fan_mode(self, fan_mode): async def async_set_fan_mode(self, fan_mode):
mode_number = list(HON_FAN.values()).index(fan_mode) fan_modes = {}
mode = list(HON_FAN.keys())[mode_number] for mode in reversed(self._device.settings["settings.windSpeed"].values):
self._device.settings["settings.windSpeed"].value = str(mode) fan_modes[HON_FAN[int(mode)]] = mode
self._device.settings["settings.windSpeed"].value = str(fan_modes[fan_mode])
self._attr_fan_mode = fan_mode self._attr_fan_mode = fan_mode
await self._device.commands["settings"].send() await self._device.commands["settings"].send()
self.async_write_ha_state() self.async_write_ha_state()
@ -249,6 +258,7 @@ class HonACClimateEntity(HonEntity, ClimateEntity):
self._attr_target_temperature = self.target_temperature self._attr_target_temperature = self.target_temperature
self._attr_current_temperature = self.current_temperature self._attr_current_temperature = self.current_temperature
self._attr_hvac_mode = self.hvac_mode self._attr_hvac_mode = self.hvac_mode
self._attr_fan_modes = self.fan_modes
self._attr_fan_mode = self.fan_mode self._attr_fan_mode = self.fan_mode
self._attr_swing_mode = self.swing_mode self._attr_swing_mode = self.swing_mode
if update: if update:

View File

@ -63,10 +63,6 @@ class HonFanEntity(HonEntity, FanEntity):
def __init__(self, hass, entry, device: HonAppliance, description) -> None: def __init__(self, hass, entry, device: HonAppliance, description) -> None:
self._attr_supported_features = FanEntityFeature.SET_SPEED self._attr_supported_features = FanEntityFeature.SET_SPEED
self._wind_speed: HonParameterRange = device.settings.get(description.key) self._wind_speed: HonParameterRange = device.settings.get(description.key)
self._speed_range = (
int(self._wind_speed.values[1]),
int(self._wind_speed.values[-1]),
)
self._command, self._parameter = description.key.split(".") self._command, self._parameter = description.key.split(".")
super().__init__(hass, entry, device, description) super().__init__(hass, entry, device, description)
@ -118,6 +114,15 @@ class HonFanEntity(HonEntity, FanEntity):
@callback @callback
def _handle_coordinator_update(self, update=True) -> None: def _handle_coordinator_update(self, update=True) -> None:
self._wind_speed = self._device.settings.get(self.entity_description.key) self._wind_speed = self._device.settings.get(self.entity_description.key)
if len(self._wind_speed.values) > 1:
self._speed_range = (
int(self._wind_speed.values[1]),
int(self._wind_speed.values[-1]),
)
self._attr_percentage = self.percentage self._attr_percentage = self.percentage
if update: if update:
self.async_write_ha_state() self.async_write_ha_state()
@property
def available(self) -> bool:
return super().available and len(self._wind_speed.values) > 1

View File

@ -28,7 +28,7 @@ LIGHTS = {
), ),
"HO": ( "HO": (
LightEntityDescription( LightEntityDescription(
key="startProgram.lightStatus", key="settings.lightStatus",
name="Light status", name="Light status",
translation_key="light", translation_key="light",
), ),
@ -76,8 +76,7 @@ class HonLightEntity(HonEntity, LightEntity):
@property @property
def is_on(self) -> bool: def is_on(self) -> bool:
"""Return true if light is on.""" """Return true if light is on."""
light = self._device.settings.get(self.entity_description.key) return self._device.get(self.entity_description.key.split(".")[-1]) > 0
return light.value != light.min
async def async_turn_on(self, **kwargs: Any) -> None: async def async_turn_on(self, **kwargs: Any) -> None:
"""Turn on or control the light.""" """Turn on or control the light."""
@ -120,3 +119,10 @@ class HonLightEntity(HonEntity, LightEntity):
self._attr_brightness = self.brightness self._attr_brightness = self.brightness
if update: if update:
self.async_write_ha_state() self.async_write_ha_state()
@property
def available(self) -> bool:
return (
super().available
and len(self._device.settings.get(self.entity_description.key).values) > 1
)

View File

@ -9,7 +9,7 @@
"iot_class": "cloud_polling", "iot_class": "cloud_polling",
"issue_tracker": "https://github.com/Andre0512/hon/issues", "issue_tracker": "https://github.com/Andre0512/hon/issues",
"requirements": [ "requirements": [
"pyhOn==0.14.8" "pyhOn==0.14.11"
], ],
"version": "0.9.0-beta.9" "version": "0.9.1"
} }

View File

@ -56,6 +56,13 @@ SELECTS = {
translation_key="steam_level", translation_key="steam_level",
option_list=const.STEAM_LEVEL, option_list=const.STEAM_LEVEL,
), ),
HonConfigSelectEntityDescription(
key="startProgram.dirtyLevel",
name="Dirty level",
icon="mdi:liquid-spot",
translation_key="dirt_level",
option_list=const.DIRTY_LEVEL,
),
), ),
"TD": ( "TD": (
HonConfigSelectEntityDescription( HonConfigSelectEntityDescription(
@ -146,7 +153,7 @@ SELECTS = {
name="Diffuser Level", name="Diffuser Level",
option_list=const.AP_DIFFUSER_LEVEL, option_list=const.AP_DIFFUSER_LEVEL,
translation_key="diffuser", translation_key="diffuser",
icon="mdi:air-filter", icon="mdi:air-purifier",
), ),
HonSelectEntityDescription( HonSelectEntityDescription(
key="settings.machMode", key="settings.machMode",

View File

@ -157,7 +157,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = {
), ),
HonSensorEntityDescription( HonSensorEntityDescription(
key="dirtyLevel", key="dirtyLevel",
name="Dirt level", name="Dirty level",
icon="mdi:liquid-spot", icon="mdi:liquid-spot",
device_class=SensorDeviceClass.ENUM, device_class=SensorDeviceClass.ENUM,
translation_key="dirt_level", translation_key="dirt_level",
@ -688,11 +688,15 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = {
HonSensorEntityDescription( HonSensorEntityDescription(
key="mainFilterStatus", key="mainFilterStatus",
name="Main Filter Status", name="Main Filter Status",
icon="mdi:air-filter",
translation_key="filter_life",
native_unit_of_measurement=PERCENTAGE, native_unit_of_measurement=PERCENTAGE,
), ),
HonSensorEntityDescription( HonSensorEntityDescription(
key="preFilterStatus", key="preFilterStatus",
name="Pre Filter Status", name="Pre Filter Status",
icon="mdi:air-filter",
translation_key="filter_cleaning",
native_unit_of_measurement=PERCENTAGE, native_unit_of_measurement=PERCENTAGE,
), ),
HonSensorEntityDescription( HonSensorEntityDescription(
@ -746,10 +750,17 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = {
native_unit_of_measurement=UnitOfTemperature.CELSIUS, native_unit_of_measurement=UnitOfTemperature.CELSIUS,
translation_key="temperature", translation_key="temperature",
), ),
HonSensorEntityDescription(key="windSpeed", name="Wind Speed"), HonSensorEntityDescription(
key="windSpeed",
name="Wind Speed",
icon="mdi:fan",
translation_key="fan_speed",
),
HonSensorEntityDescription( HonSensorEntityDescription(
key="airQuality", key="airQuality",
name="Air Quality", name="Air Quality",
icon="mdi:weather-dust",
translation_key="air_quality",
), ),
), ),
} }

View File

@ -116,6 +116,12 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = {
icon="mdi:weather-night", icon="mdi:weather-night",
translation_key="good_night", translation_key="good_night",
), ),
HonConfigSwitchEntityDescription(
key="startProgram.hygiene",
name="Hygiene",
icon="mdi:lotion-plus",
translation_key="hygiene",
),
), ),
"TD": ( "TD": (
HonControlSwitchEntityDescription( HonControlSwitchEntityDescription(
@ -331,6 +337,16 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = {
translation_key="holiday_mode", translation_key="holiday_mode",
), ),
), ),
"HO": (
HonControlSwitchEntityDescription(
key="onOffStatus",
name="Hood",
icon="mdi:hvac",
turn_on_key="startProgram",
turn_off_key="stopProgram",
translation_key="hood",
),
),
"AP": ( "AP": (
HonSwitchEntityDescription( HonSwitchEntityDescription(
key="touchToneStatus", key="touchToneStatus",
@ -432,11 +448,15 @@ class HonControlSwitchEntity(HonEntity, SwitchEntity):
return self._device.get(self.entity_description.key, False) return self._device.get(self.entity_description.key, False)
async def async_turn_on(self, **kwargs: Any) -> None: async def async_turn_on(self, **kwargs: Any) -> None:
self._device.sync_command(self.entity_description.turn_on_key, "settings")
await self.coordinator.async_refresh()
await self._device.commands[self.entity_description.turn_on_key].send() await self._device.commands[self.entity_description.turn_on_key].send()
self._device.attributes[self.entity_description.key] = True self._device.attributes[self.entity_description.key] = True
self.async_write_ha_state() self.async_write_ha_state()
async def async_turn_off(self, **kwargs: Any) -> None: async def async_turn_off(self, **kwargs: Any) -> None:
self._device.sync_command(self.entity_description.turn_off_key, "settings")
await self.coordinator.async_refresh()
await self._device.commands[self.entity_description.turn_off_key].send() await self._device.commands[self.entity_description.turn_off_key].send()
self._device.attributes[self.entity_description.key] = False self._device.attributes[self.entity_description.key] = False
self.async_write_ha_state() self.async_write_ha_state()

View File

@ -875,6 +875,18 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "Úroveň páry" "name": "Úroveň páry"
},
"filter_cleaning": {
"name": "Čištění filtru"
},
"filter_life": {
"name": "Životnost filtru"
},
"air_quality": {
"name": "Kvalita vzduchu"
},
"fan_speed": {
"name": "Rychlost ventilátoru"
} }
}, },
"select": { "select": {
@ -1650,6 +1662,15 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "Úroveň páry" "name": "Úroveň páry"
},
"dirt_level": {
"state": {
"little": "Málo",
"normal": "Normální",
"very": "Velmi",
"unknown": "unknown"
},
"name": "Míra znečištění"
} }
}, },
"switch": { "switch": {
@ -1763,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Hlasitost tónu klepnutí" "name": "Hlasitost tónu klepnutí"
},
"hygiene": {
"name": "Hygienický plus"
},
"hood": {
"name": "Odsavač par"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -875,6 +875,18 @@
"synthetic": "Synthetik" "synthetic": "Synthetik"
}, },
"name": "Dampfstufe" "name": "Dampfstufe"
},
"filter_cleaning": {
"name": "Reinigung der Filter"
},
"filter_life": {
"name": "Filterlebensdauer"
},
"air_quality": {
"name": "Luftqualität"
},
"fan_speed": {
"name": "Gebläsegeschwindigkeit"
} }
}, },
"select": { "select": {
@ -1650,6 +1662,15 @@
"synthetic": "Synthetik" "synthetic": "Synthetik"
}, },
"name": "Dampfstufe" "name": "Dampfstufe"
},
"dirt_level": {
"state": {
"little": "Wenig",
"normal": "Normal",
"very": "Sehr",
"unknown": "unknown"
},
"name": "Verschmutzungsgrad"
} }
}, },
"switch": { "switch": {
@ -1763,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Tastentonlautstärke" "name": "Tastentonlautstärke"
},
"hygiene": {
"name": "Hygiene plus"
},
"hood": {
"name": "Abzugshaube"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -875,6 +875,18 @@
"synthetic": "Συνθετικά" "synthetic": "Συνθετικά"
}, },
"name": "Επίπεδο ατμού" "name": "Επίπεδο ατμού"
},
"filter_cleaning": {
"name": "Καθαρισμός φίλτρου"
},
"filter_life": {
"name": "Φιλτράρετε τη ζωή"
},
"air_quality": {
"name": "Ποιότητα αέρα"
},
"fan_speed": {
"name": "Ταχύτητα ανεμιστήρα"
} }
}, },
"select": { "select": {
@ -1650,6 +1662,15 @@
"synthetic": "Συνθετικά" "synthetic": "Συνθετικά"
}, },
"name": "Επίπεδο ατμού" "name": "Επίπεδο ατμού"
},
"dirt_level": {
"state": {
"little": "Λίγη",
"normal": "Κανονική",
"very": "Πολύ",
"unknown": "unknown"
},
"name": "Επίπεδο βρωμιάς"
} }
}, },
"switch": { "switch": {
@ -1763,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Ένταση τόνου αφής" "name": "Ένταση τόνου αφής"
},
"hygiene": {
"name": "Hygiene plus"
},
"hood": {
"name": "Απορροφητήρας"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -895,6 +895,18 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "Steam Level" "name": "Steam Level"
},
"filter_cleaning": {
"name": "Filter cleaning"
},
"filter_life": {
"name": "Filter life"
},
"air_quality": {
"name": "Air Quality"
},
"fan_speed": {
"name": "Fan speed"
} }
}, },
"select": { "select": {
@ -1677,6 +1689,15 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "Steam Level" "name": "Steam Level"
},
"dirt_level": {
"state": {
"little": "Little",
"normal": "Normal",
"very": "Very",
"unknown": "unknown"
},
"name": "Dirt level"
} }
}, },
"switch": { "switch": {
@ -1790,6 +1811,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Touch tone volume" "name": "Touch tone volume"
},
"hygiene": {
"name": "Hygiene plus"
},
"hood": {
"name": "Hood"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -875,6 +875,18 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "Nivel de vapor" "name": "Nivel de vapor"
},
"filter_cleaning": {
"name": "Limpieza del filtro"
},
"filter_life": {
"name": "Vida del filtro"
},
"air_quality": {
"name": "Calidad del aire"
},
"fan_speed": {
"name": "Velocidad del ventilador"
} }
}, },
"select": { "select": {
@ -1650,6 +1662,15 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "Nivel de vapor" "name": "Nivel de vapor"
},
"dirt_level": {
"state": {
"little": "Poco",
"normal": "Normal",
"very": "Mucho",
"unknown": "unknown"
},
"name": "Nivel de suciedad"
} }
}, },
"switch": { "switch": {
@ -1763,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Volumen del tono táctil" "name": "Volumen del tono táctil"
},
"hygiene": {
"name": "Higiene extra"
},
"hood": {
"name": "Campana extractora"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -875,6 +875,18 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "Niveau de vapeur" "name": "Niveau de vapeur"
},
"filter_cleaning": {
"name": "Nettoyage du filtre"
},
"filter_life": {
"name": "Durée de vie du filtre"
},
"air_quality": {
"name": "Qualité dair"
},
"fan_speed": {
"name": "Vitesse du ventilateur"
} }
}, },
"select": { "select": {
@ -1650,6 +1662,15 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "Niveau de vapeur" "name": "Niveau de vapeur"
},
"dirt_level": {
"state": {
"little": "Faible",
"normal": "Normal",
"very": "Élevé",
"unknown": "unknown"
},
"name": "Niveau de saleté"
} }
}, },
"switch": { "switch": {
@ -1763,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Volume des tonalités" "name": "Volume des tonalités"
},
"hygiene": {
"name": "Hygiène plus"
},
"hood": {
"name": "Hotte"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -431,6 +431,18 @@
"synthetic": "מְלָאכוּתִי" "synthetic": "מְלָאכוּתִי"
}, },
"name": "מפלס קיטור" "name": "מפלס קיטור"
},
"filter_cleaning": {
"name": "Filter cleaning"
},
"filter_life": {
"name": "Filter life"
},
"air_quality": {
"name": "Air Quality"
},
"fan_speed": {
"name": "Fan speed"
} }
}, },
"select": { "select": {
@ -771,6 +783,15 @@
"synthetic": "מְלָאכוּתִי" "synthetic": "מְלָאכוּתִי"
}, },
"name": "מפלס קיטור" "name": "מפלס קיטור"
},
"dirt_level": {
"state": {
"little": "קטן",
"normal": "נוֹרמָלִי",
"very": "מאוד",
"unknown": "unknown"
},
"name": "רמת עפר"
} }
}, },
"switch": { "switch": {
@ -884,6 +905,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Touch tone volume" "name": "Touch tone volume"
},
"hygiene": {
"name": "היגיינה פלוס"
},
"hood": {
"name": "Hood"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -875,6 +875,18 @@
"synthetic": "Sintetika" "synthetic": "Sintetika"
}, },
"name": "Razina pare" "name": "Razina pare"
},
"filter_cleaning": {
"name": "Čišćenje filtra"
},
"filter_life": {
"name": "Radni vijek filtra"
},
"air_quality": {
"name": "Kvaliteta zraka"
},
"fan_speed": {
"name": "Brzina ventilatora"
} }
}, },
"select": { "select": {
@ -1650,6 +1662,15 @@
"synthetic": "Sintetika" "synthetic": "Sintetika"
}, },
"name": "Razina pare" "name": "Razina pare"
},
"dirt_level": {
"state": {
"little": "Neznatno",
"normal": "Uobičajeno",
"very": "Izuzetno",
"unknown": "unknown"
},
"name": "Stupanj zaprljanosti"
} }
}, },
"switch": { "switch": {
@ -1763,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Glasnoća tona pri dodiru" "name": "Glasnoća tona pri dodiru"
},
"hygiene": {
"name": "Hygiene Plus"
},
"hood": {
"name": "Napa"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -880,6 +880,18 @@
"synthetic": "Sintetici" "synthetic": "Sintetici"
}, },
"name": "Livello vapore" "name": "Livello vapore"
},
"filter_cleaning": {
"name": "Pulizia del filtro"
},
"filter_life": {
"name": "Durata filtro"
},
"air_quality": {
"name": "Qualità dell'Aria"
},
"fan_speed": {
"name": "Velocità ventole"
} }
}, },
"select": { "select": {
@ -1655,6 +1667,15 @@
"synthetic": "Sintetici" "synthetic": "Sintetici"
}, },
"name": "Livello vapore" "name": "Livello vapore"
},
"dirt_level": {
"state": {
"little": "Poco",
"normal": "Normale",
"very": "Molto",
"unknown": "unknown"
},
"name": "Livello di sporco"
} }
}, },
"switch": { "switch": {
@ -1768,6 +1789,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Volume Tasti" "name": "Volume Tasti"
},
"hygiene": {
"name": "Hygiene plus"
},
"hood": {
"name": "Cappa"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -875,6 +875,18 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "Stoomniveau" "name": "Stoomniveau"
},
"filter_cleaning": {
"name": "Filterreiniging"
},
"filter_life": {
"name": "Levensduur filter"
},
"air_quality": {
"name": "Luchtkwaliteit"
},
"fan_speed": {
"name": "Ventilatorsnelheid"
} }
}, },
"select": { "select": {
@ -1650,6 +1662,15 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "Stoomniveau" "name": "Stoomniveau"
},
"dirt_level": {
"state": {
"little": "Weinig",
"normal": "Normaal",
"very": "Heel",
"unknown": "unknown"
},
"name": "Vuilheid"
} }
}, },
"switch": { "switch": {
@ -1763,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Volume van geluid bij aanraking" "name": "Volume van geluid bij aanraking"
},
"hygiene": {
"name": "Hygiëne plus"
},
"hood": {
"name": "Afzuigkap"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -875,6 +875,18 @@
"synthetic": "Syntetyczne" "synthetic": "Syntetyczne"
}, },
"name": "Poziom pary" "name": "Poziom pary"
},
"filter_cleaning": {
"name": "Czyszczenie filtra"
},
"filter_life": {
"name": "Żywotność filtra"
},
"air_quality": {
"name": "Jakość powietrza"
},
"fan_speed": {
"name": "Prędkość wentylatora"
} }
}, },
"select": { "select": {
@ -1650,6 +1662,15 @@
"synthetic": "Syntetyczne" "synthetic": "Syntetyczne"
}, },
"name": "Poziom pary" "name": "Poziom pary"
},
"dirt_level": {
"state": {
"little": "Niskie",
"normal": "Standardowe",
"very": "Wysokie",
"unknown": "unknown"
},
"name": "Stopień zabrudzenia"
} }
}, },
"switch": { "switch": {
@ -1763,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Dźwięk przycisku dotykowego" "name": "Dźwięk przycisku dotykowego"
},
"hygiene": {
"name": "Higiena plus"
},
"hood": {
"name": "Okap"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -875,6 +875,18 @@
"synthetic": "Sintéticos" "synthetic": "Sintéticos"
}, },
"name": "Nível de vapor" "name": "Nível de vapor"
},
"filter_cleaning": {
"name": "Limpeza do filtro"
},
"filter_life": {
"name": "Vida do filtro"
},
"air_quality": {
"name": "Qualidade do ar"
},
"fan_speed": {
"name": "Velocidade da bomba"
} }
}, },
"select": { "select": {
@ -1650,6 +1662,15 @@
"synthetic": "Sintéticos" "synthetic": "Sintéticos"
}, },
"name": "Nível de vapor" "name": "Nível de vapor"
},
"dirt_level": {
"state": {
"little": "Pouco",
"normal": "Normal",
"very": "Muito",
"unknown": "unknown"
},
"name": "Nível de sujidade"
} }
}, },
"switch": { "switch": {
@ -1763,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Volume do tom de toque" "name": "Volume do tom de toque"
},
"hygiene": {
"name": "Higiene mais"
},
"hood": {
"name": "Exaustor"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -875,6 +875,18 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "Nivel abur" "name": "Nivel abur"
},
"filter_cleaning": {
"name": "Curățarea filtrului"
},
"filter_life": {
"name": "Viața filtrului"
},
"air_quality": {
"name": "Calitatea aerului"
},
"fan_speed": {
"name": "Viteza ventilatorului"
} }
}, },
"select": { "select": {
@ -1650,6 +1662,15 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "Nivel abur" "name": "Nivel abur"
},
"dirt_level": {
"state": {
"little": "Puțin",
"normal": "Normal",
"very": "Foarte",
"unknown": "unknown"
},
"name": "Nivel de murdărie"
} }
}, },
"switch": { "switch": {
@ -1763,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Volum la atingerea tastelor" "name": "Volum la atingerea tastelor"
},
"hygiene": {
"name": "Igienizare plus"
},
"hood": {
"name": "Hotă"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -875,6 +875,18 @@
"synthetic": "Синтетика" "synthetic": "Синтетика"
}, },
"name": "Уровень пара" "name": "Уровень пара"
},
"filter_cleaning": {
"name": "Чистка фильтра"
},
"filter_life": {
"name": "Срок службы фильтра"
},
"air_quality": {
"name": "Качество воздуха"
},
"fan_speed": {
"name": "Скорость вентилятора"
} }
}, },
"select": { "select": {
@ -1650,6 +1662,15 @@
"synthetic": "Синтетика" "synthetic": "Синтетика"
}, },
"name": "Уровень пара" "name": "Уровень пара"
},
"dirt_level": {
"state": {
"little": "Мало",
"normal": "Нормально",
"very": "Очень",
"unknown": "unknown"
},
"name": "Уровень загрязнения"
} }
}, },
"switch": { "switch": {
@ -1763,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Громкость сенсорных кнопок" "name": "Громкость сенсорных кнопок"
},
"hygiene": {
"name": "Гигиена плюс"
},
"hood": {
"name": "Вытяжка"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -875,6 +875,18 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "Úroveň nastavenia pary" "name": "Úroveň nastavenia pary"
},
"filter_cleaning": {
"name": "Čistenie filtra"
},
"filter_life": {
"name": "Životnosť filtra"
},
"air_quality": {
"name": "Kvalita vzduchu"
},
"fan_speed": {
"name": "Rýchlosť ventilátora"
} }
}, },
"select": { "select": {
@ -1650,6 +1662,15 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "Úroveň nastavenia pary" "name": "Úroveň nastavenia pary"
},
"dirt_level": {
"state": {
"little": "Málo",
"normal": "Normálne",
"very": "Veľa",
"unknown": "unknown"
},
"name": "Úroveň znečistenia"
} }
}, },
"switch": { "switch": {
@ -1763,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Hlasitosť tónu dotyku" "name": "Hlasitosť tónu dotyku"
},
"hygiene": {
"name": "Hygiena plus"
},
"hood": {
"name": "Digestor"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -875,6 +875,18 @@
"synthetic": "Sintetika" "synthetic": "Sintetika"
}, },
"name": "Količina pare" "name": "Količina pare"
},
"filter_cleaning": {
"name": "Čiščenje filtra"
},
"filter_life": {
"name": "Življenjska doba filtra"
},
"air_quality": {
"name": "Kakovost zraka"
},
"fan_speed": {
"name": "Hitrost ventilatorja"
} }
}, },
"select": { "select": {
@ -1650,6 +1662,15 @@
"synthetic": "Sintetika" "synthetic": "Sintetika"
}, },
"name": "Količina pare" "name": "Količina pare"
},
"dirt_level": {
"state": {
"little": "Malo",
"normal": "Normalno",
"very": "Zelo",
"unknown": "unknown"
},
"name": "Stopnja umazanije"
} }
}, },
"switch": { "switch": {
@ -1763,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Glasnost tona dotika" "name": "Glasnost tona dotika"
},
"hygiene": {
"name": "Higiena plus"
},
"hood": {
"name": "Kuhinjska napa"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -875,6 +875,18 @@
"synthetic": "Sintetika" "synthetic": "Sintetika"
}, },
"name": "Nivo pare" "name": "Nivo pare"
},
"filter_cleaning": {
"name": "Čišćenje filtera"
},
"filter_life": {
"name": "Trajanje filtera"
},
"air_quality": {
"name": "Kvalitet vazduha"
},
"fan_speed": {
"name": "Brzina ventilatora"
} }
}, },
"select": { "select": {
@ -1650,6 +1662,15 @@
"synthetic": "Sintetika" "synthetic": "Sintetika"
}, },
"name": "Nivo pare" "name": "Nivo pare"
},
"dirt_level": {
"state": {
"little": "Malo",
"normal": "Normalno",
"very": "Veoma",
"unknown": "unknown"
},
"name": "Nivo zaprljanosti"
} }
}, },
"switch": { "switch": {
@ -1763,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Jačina tona dodira" "name": "Jačina tona dodira"
},
"hygiene": {
"name": "Higijenski plus"
},
"hood": {
"name": "Aspirator"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -875,6 +875,18 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "Buhar Seviyesi" "name": "Buhar Seviyesi"
},
"filter_cleaning": {
"name": "Filtre temizliği"
},
"filter_life": {
"name": "Filtre ömrü"
},
"air_quality": {
"name": "Hava kalitesi"
},
"fan_speed": {
"name": "Fan hızı"
} }
}, },
"select": { "select": {
@ -1650,6 +1662,15 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "Buhar Seviyesi" "name": "Buhar Seviyesi"
},
"dirt_level": {
"state": {
"little": "Az",
"normal": "Normal",
"very": "Çok",
"unknown": "unknown"
},
"name": "Kir seviyesi"
} }
}, },
"switch": { "switch": {
@ -1763,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Dokunma tonu seviyesi" "name": "Dokunma tonu seviyesi"
},
"hygiene": {
"name": "Hygiene plus"
},
"hood": {
"name": "Davlumbaz"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -875,6 +875,18 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "蒸汽档位" "name": "蒸汽档位"
},
"filter_cleaning": {
"name": "滤网清洁"
},
"filter_life": {
"name": "过滤器寿命"
},
"air_quality": {
"name": "空气质量"
},
"fan_speed": {
"name": "风扇速度"
} }
}, },
"select": { "select": {
@ -1650,6 +1662,15 @@
"synthetic": "Synthetic" "synthetic": "Synthetic"
}, },
"name": "蒸汽档位" "name": "蒸汽档位"
},
"dirt_level": {
"state": {
"little": "少量",
"normal": "正常",
"very": "非常",
"unknown": "unknown"
},
"name": "脏污程度"
} }
}, },
"switch": { "switch": {
@ -1763,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "按键音量" "name": "按键音量"
},
"hygiene": {
"name": "卫生增强"
},
"hood": {
"name": "机盖"
} }
}, },
"binary_sensor": { "binary_sensor": {

View File

@ -34,7 +34,7 @@ Support has been confirmed for these models, but many more will work. Please add
| **Washer Dryer** | HWD100-B14979 | HDQ 496AMBS/1-S <br/> HWPS4954DAMR-11 | RPW41066BWMR/1-S | | **Washer Dryer** | HWD100-B14979 | HDQ 496AMBS/1-S <br/> HWPS4954DAMR-11 | RPW41066BWMR/1-S |
| **Oven** | HWO60SM2F3XH | HSOT3161WG | | | **Oven** | HWO60SM2F3XH | HSOT3161WG | |
| **Dish Washer** | XIB 3B2SFS-80 <br/> XIB 6B2D3FB | HFB 6B2S3FX | | | **Dish Washer** | XIB 3B2SFS-80 <br/> XIB 6B2D3FB | HFB 6B2S3FX | |
| **Air Conditioner** | AD105S2SM3FA <br/> AS09TS4HRA-M <br/> AS20HPL1HRA <br/> AS25PBAHRA <br/> AS25S2SF1FA-WH <br/> AS25TADHRA-2 <br/> AS35PBAHRA <br/> AS35S2SF1FA-WH <br/> AS35S2SF2FA-3 <br/> AS35TADHRA-2 <br/> AS35TAMHRA-C | | | | **Air Conditioner** | AD105S2SM3FA <br/> AS09TS4HRA-M <br/> AS20HPL1HRA <br/> AS25PBAHRA <br/> AS25S2SF1FA-WH <br/> AS25TADHRA-2 <br/> AS35PBAHRA <br/> AS35S2SF1FA-WH <br/> AS35S2SF2FA-3 <br/> AS35TADHRA-2 <br/> AS35TAMHRA-C | | CY-12TAIN |
| **Fridge** | HFW7720ENMB | | CCE4T620EWU | | **Fridge** | HFW7720ENMB | | CCE4T620EWU |
| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI | | **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI |
| **Hood** | HADG6DS46BWIFI | | | | **Hood** | HADG6DS46BWIFI | | |

View File

@ -129,6 +129,7 @@ SELECT = {
"steam_level": STEAM_LEVEL, "steam_level": STEAM_LEVEL,
"mode": AP_MACH_MODE, "mode": AP_MACH_MODE,
"diffuser": AP_DIFFUSER_LEVEL, "diffuser": AP_DIFFUSER_LEVEL,
"dirt_level": DIRTY_LEVEL,
} }
PROGRAMS = { PROGRAMS = {
@ -239,6 +240,8 @@ NAMES = {
"super_freeze": "REF_CMD&CTRL.MODALITIES.SUPER_FREEZE", "super_freeze": "REF_CMD&CTRL.MODALITIES.SUPER_FREEZE",
"refrigerator": "REF.NAME", "refrigerator": "REF.NAME",
"touch_tone": "AP.FOOTER_MENU_MORE.TOUCH_TONE_VOLUME", "touch_tone": "AP.FOOTER_MENU_MORE.TOUCH_TONE_VOLUME",
"hygiene": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.HYGIENE",
"hood": "GLOBALS.APPLIANCES_NAME.HO",
}, },
"binary_sensor": { "binary_sensor": {
"door_lock": "WASHING_CMD&CTRL.CHECK_UP_RESULTS.DOOR_LOCK", "door_lock": "WASHING_CMD&CTRL.CHECK_UP_RESULTS.DOOR_LOCK",
@ -291,6 +294,7 @@ NAMES = {
"diffuser": "AP.TITLES.DIFFUSER", "diffuser": "AP.TITLES.DIFFUSER",
"mode": "CUBE90_GLOBAL.GENERAL.MODE", "mode": "CUBE90_GLOBAL.GENERAL.MODE",
"steam_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL", "steam_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL",
"dirt_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.DIRTY_LEVEL",
}, },
"sensor": { "sensor": {
"dry_levels": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_LEVEL", "dry_levels": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_LEVEL",
@ -347,6 +351,10 @@ NAMES = {
"programs_ac": "WC.SET_PROGRAM.PROGRAM", "programs_ac": "WC.SET_PROGRAM.PROGRAM",
"programs_ref": "WC.SET_PROGRAM.PROGRAM", "programs_ref": "WC.SET_PROGRAM.PROGRAM",
"voc": "HINTS.WHAT_POLLUTES_THE_AIR_IN_OUR_HOMES.GAS_VOC_TITLE", "voc": "HINTS.WHAT_POLLUTES_THE_AIR_IN_OUR_HOMES.GAS_VOC_TITLE",
"filter_cleaning": "AP.MAINTENANCE.FILTER_CLEANING",
"filter_life": "AP.MAINTENANCE.FILTER_LIFE",
"air_quality": "AP.DISCOVER.AIR_QUALITY",
"fan_speed": "AP.TITLES.FAN_SPEED",
}, },
"number": { "number": {
"power_management": "HINTS.COOKING_WITH_INDUCTION.POWER_MANAGEMENT", "power_management": "HINTS.COOKING_WITH_INDUCTION.POWER_MANAGEMENT",