Compare commits

..

15 Commits

Author SHA1 Message Date
8d6a6a509b Bump version 2023-07-19 19:59:40 +02:00
49ab7f605b Add compatibility documentation 2023-07-14 00:21:21 +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
35a07932e6 Bump version 2023-07-10 00:27:37 +02:00
a687c7715d Set switches unavailable if not changable 2023-07-10 00:22:40 +02:00
c0d25a4efe Fix some small bugs 2023-07-10 00:21:45 +02:00
bb700dd2f7 Fix steam level 2023-07-10 00:20:35 +02:00
2e056aa8d6 Update icons/translations 2023-07-10 00:19:43 +02:00
de844d96a5 Update appliance list 2023-07-09 02:00:17 +02:00
3036087925 Update readme 2023-07-01 17:09:53 +02:00
34 changed files with 1692 additions and 217 deletions

108
README.md
View File

@ -39,17 +39,19 @@ _If the integration is not in the list, you need to clear the browser cache._
Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8).
| | **Haier** | **Hoover** | **Candy** | | | **Haier** | **Hoover** | **Candy** |
|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| |---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------|
| **Washing Machine** | HW90-B14TEAM5 <br/> HW100-B14959U1 | H-WASH 500 <br/> H7W4 48MBC-S <br/> HW 410AMBCB/1-80 | CO4 107T1/2-07 <br/> CBWO49TWME-S <br/> RO44 1286DWMC4-07 <br/> HW 68AMC/1-80 <br/> HWPD 69AMBC/1-S | | **Washing Machine** | HW80-B14959TU1DE <br/> HW90-B14TEAM5 <br/> HW100-B14959U1 | H-WASH 500 <br/> H7W4 48MBC-S <br/> HW 410AMBCB/1-80 | CO4 107T1/2-07 <br/> CBWO49TWME-S <br/> RO44 1286DWMC4-07 <br/> HW 68AMC/1-80 <br/> HWPD 69AMBC/1-S |
| **Tumble Dryer** | HD80-A3959 | H-DRY 500 <br/> H9A3TCBEXS-S <br/> HLE C10DCE-80 <br/> NDE H10A2TCE-80 <br/> NDE H9A2TSBEXS-S <br/> NDPHY10A2TCBEXSS | BCTDH7A1TE <br/> CSOE C10DE-80 <br/> ROE H9A3TCEX-S | | **Tumble Dryer** | HD80-A3959 | H-DRY 500 <br/> H9A3TCBEXS-S <br/> HLE C10DCE-80 <br/> H5WPB447AMBC/1-S <br/> NDE H10A2TCE-80 <br/> NDE H9A2TSBEXS-S <br/> NDPHY10A2TCBEXSS | BCTDH7A1TE <br/> CSOE C10DE-80 <br/> ROE H9A3TCEX-S |
| **Washer Dryer** | HWD100-B14979 | 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/> AS20HPL1HRA <br/> AS25PBAHRA <br/> AS25S2SF1FA-WH <br/> AS25TADHRA-2 <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 | | |
| **Wine Cellar** | HWS247FDU1 | | | | **Wine Cellar** | HWS247FDU1 | | |
| **Air Purifier** | | HHP30C011 <br/> HHP50CA001 <br/> HHP50CA011 | |
| Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data). <br/>This helps us to develop new features and not to break compatibility in newer versions. | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data). <br/>This helps us to develop new features and not to break compatibility in newer versions. |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
@ -76,6 +78,19 @@ Translation of internal names like programs are available for all languages whic
* 🇪🇸 Spanish * 🇪🇸 Spanish
* 🇹🇷 Turkish * 🇹🇷 Turkish
## Compatiblity
Haier offers different apps for different markets. Some appliances are compatible with more than one app. This integration only supports appliances that can be controlled via hOn. Please download the hOn app and check compatibilty before you open an issue.
The apps on this (incomplete) list have been requested so far:
| App | Main Market | Supported | Alternative |
|-----------------|---------------|-----------------------------------------|---------------------------------------------------------------------------------|
| Haier hOn | Europe | :heavy_check_mark: | |
| Candy simply-Fi | Europe | :grey_question: (only newer appliances) | [ofalvai/home-assistant-candy](https://github.com/ofalvai/home-assistant-candy) |
| Hoover Wizard | Europe | :grey_question: (only newer appliances) | |
| Haier Uhome | China | :x: | [banto6/haier](https://github.com/banto6/haier) |
| Haier U+ | China | :x: | |
| GE SmartHQ | North America | :x: | [simbaja/ha_gehome](https://github.com/simbaja/ha_gehome) |
## Examples ## Examples
### Washing Machine ### Washing Machine
![washing_machine.png](assets/washing_machine.png) ![washing_machine.png](assets/washing_machine.png)
@ -146,7 +161,7 @@ For every device exists a button under diagnostics which can be used to log all
| 10° Heating | `heat-wave` | `switch` | `10degreeHeatingStatus` | | 10° Heating | `heat-wave` | `switch` | `10degreeHeatingStatus` |
| Air Conditioner | `air-conditioner` | `climate` | `settings` | | Air Conditioner | `air-conditioner` | `climate` | `settings` |
| Echo | `account-voice` | `switch` | `echoStatus` | | Echo | `account-voice` | `switch` | `echoStatus` |
| Eco Mode | | `switch` | `ecoMode` | | Eco Mode | `sprout` | `switch` | `ecoMode` |
| Eco Pilot | `run` | `select` | `settings.humanSensingStatus` | | Eco Pilot | `run` | `select` | `settings.humanSensingStatus` |
| Health Mode | `medication-outline` | `switch` | `healthMode` | | Health Mode | `medication-outline` | `switch` | `healthMode` |
| Night Mode | `bed` | `switch` | `silentSleepStatus` | | Night Mode | `bed` | `switch` | `silentSleepStatus` |
@ -177,30 +192,30 @@ 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 |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| Aroma Time Off | `thermometer` | `number` | `settings.aromaTimeOff` | | Aroma Time Off | `scent-off` | `number` | `settings.aromaTimeOff` |
| Aroma Time On | `thermometer` | `number` | `settings.aromaTimeOn` | | Aroma Time On | `scent` | `number` | `settings.aromaTimeOn` |
| Diffuser Level | | `select` | `settings.aromaStatus` | | Diffuser Level | `air-purifier` | `select` | `settings.aromaStatus` |
| Light status | | `light` | `settings.lightStatus` | | Light status | | `light` | `settings.lightStatus` |
| Mode | `run` | `select` | `settings.machMode` | | Lock Status | | `lock` | `lockStatus` |
| Pollen Level | | `number` | `settings.pollenLevel` | | Mode | `play` | `select` | `settings.machMode` |
| Touch Tone | | `switch` | `touchToneStatus` | | Pollen Level | `flower-pollen` | `number` | `settings.pollenLevel` |
| Touch Tone | `account-voice` | `switch` | `touchToneStatus` |
#### 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` |
| Lock Status | | `lock` | `lockStatus` | | Main Filter Status | `air-filter` | `sensor` | `mainFilterStatus` |
| Main Filter Status | | `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
@ -245,8 +260,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 |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| Start Program | `hvac` | `button` | `startProgram` | | Hood | `hvac` | `switch` | `startProgram` / `stopProgram` |
| Stop Program | `hvac-off` | `button` | `stopProgram` | | Light status | | `light` | `settings.lightStatus` |
| Wind Speed | | `fan` | `settings.windSpeed` | | Wind Speed | | `fan` | `settings.windSpeed` |
#### Sensors #### Sensors
| Name | Icon | Entity | Key | | Name | Icon | Entity | Key |
@ -258,7 +273,6 @@ For every device exists a button under diagnostics which can be used to log all
| Filter Cleaning Status | | `sensor` | `filterCleaningStatus` | | Filter Cleaning Status | | `sensor` | `filterCleaningStatus` |
| Last Work Time | `clock-start` | `sensor` | `lastWorkTime` | | Last Work Time | `clock-start` | `sensor` | `lastWorkTime` |
| Light Status | `lightbulb` | `sensor` | `lightStatus` | | Light Status | `lightbulb` | `sensor` | `lightStatus` |
| Light status | | `light` | `startProgram.lightStatus` |
| Mach Mode | | `sensor` | `machMode` | | Mach Mode | | `sensor` | `machMode` |
| On / Off Status | `lightbulb` | `sensor` | `onOffStatus` | | On / Off Status | `lightbulb` | `sensor` | `onOffStatus` |
| Quick Delay Time Status | | `sensor` | `quickDelayTimeStatus` | | Quick Delay Time Status | | `sensor` | `quickDelayTimeStatus` |
@ -358,8 +372,8 @@ For every device exists a button under diagnostics which can be used to log all
#### Configs #### Configs
| Name | Icon | Entity | Key | | Name | Icon | Entity | Key |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| Anti-Crease | `timer` | `switch` | `startProgram.antiCreaseTime` | | Anti-Crease | `iron` | `switch` | `startProgram.antiCreaseTime` |
| Anti-Crease | `timer` | `switch` | `startProgram.anticrease` | | Anti-Crease | `iron` | `switch` | `startProgram.anticrease` |
| Delay time | `timer-plus` | `number` | `startProgram.delayTime` | | Delay time | `timer-plus` | `number` | `startProgram.delayTime` |
| Dry Time | | `number` | `startProgram.dryTime` | | Dry Time | | `number` | `startProgram.dryTime` |
| Dry Time | `timer` | `select` | `startProgram.dryTimeMM` | | Dry Time | `timer` | `select` | `startProgram.dryTimeMM` |
@ -367,14 +381,13 @@ For every device exists a button under diagnostics which can be used to log all
| Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` | | Energy Label | `lightning-bolt-circle` | `sensor` | `startProgram.energyLabel` |
| Program | | `select` | `startProgram.program` | | Program | | `select` | `startProgram.program` |
| Steam Type | `weather-dust` | `sensor` | `steamType` | | Steam Type | `weather-dust` | `sensor` | `steamType` |
| Steam level | `smoke` | `sensor` | `startProgram.steamLevel` |
| Sterilization | `clock-start` | `switch` | `startProgram.sterilizationStatus` | | Sterilization | `clock-start` | `switch` | `startProgram.sterilizationStatus` |
| Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadD` | | Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadD` |
| Temperature level | `thermometer` | `number` | `startProgram.tempLevel` | | Temperature level | `thermometer` | `number` | `startProgram.tempLevel` |
#### Sensors #### Sensors
| Name | Icon | Entity | Key | | Name | Icon | Entity | Key |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| Anti-Crease | | `binary_sensor` | `anticrease` | | Anti-Crease | `iron` | `binary_sensor` | `anticrease` |
| Connection | | `binary_sensor` | `attributes.lastConnEvent.category` | | Connection | | `binary_sensor` | `attributes.lastConnEvent.category` |
| Door | | `binary_sensor` | `doorStatus` | | Door | | `binary_sensor` | `doorStatus` |
| Dry level | `hair-dryer` | `sensor` | `dryLevel` | | Dry level | `hair-dryer` | `sensor` | `dryLevel` |
@ -384,7 +397,6 @@ For every device exists a button under diagnostics which can be used to log all
| Program Phase | `washing-machine` | `sensor` | `prPhase` | | Program Phase | `washing-machine` | `sensor` | `prPhase` |
| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` |
| Start Time | `clock-start` | `sensor` | `delayTime` | | Start Time | `clock-start` | `sensor` | `delayTime` |
| Steam level | `smoke` | `sensor` | `steamLevel` |
| Temperature level | `thermometer` | `sensor` | `tempLevel` | | Temperature level | `thermometer` | `sensor` | `tempLevel` |
### Wine Cellar ### Wine Cellar
@ -418,12 +430,13 @@ For every device exists a button under diagnostics which can be used to log all
| Name | Icon | Entity | Key | | Name | Icon | Entity | Key |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| Acqua Plus | `water-plus` | `switch` | `startProgram.acquaplus` | | Acqua Plus | `water-plus` | `switch` | `startProgram.acquaplus` |
| Anti-Crease | `timer` | `switch` | `startProgram.antiCreaseTime` | | Anti-Crease | `iron` | `switch` | `startProgram.antiCreaseTime` |
| Anti-Crease | `timer` | `switch` | `startProgram.anticrease` | | Anti-Crease | `iron` | `switch` | `startProgram.anticrease` |
| Auto Dose Detergent | `cup` | `switch` | `startProgram.autoDetergentStatus` | | Auto Dose Detergent | `cup` | `switch` | `startProgram.autoDetergentStatus` |
| 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 +445,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` |
@ -441,9 +455,8 @@ For every device exists a button under diagnostics which can be used to log all
| Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | | Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` |
| Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | | Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` |
| Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | | Spin speed | `numeric` | `select` | `startProgram.spinSpeed` |
| Steam Level | `weather-dust` | `number` | `startProgram.steamLevel` |
| Steam Type | `weather-dust` | `sensor` | `steamType` | | Steam Type | `weather-dust` | `sensor` | `steamType` |
| Steam level | `smoke` | `sensor` | `startProgram.steamLevel` | | Steam level | `weather-dust` | `select` | `startProgram.steamLevel` |
| Sterilization | `clock-start` | `switch` | `startProgram.sterilizationStatus` | | Sterilization | `clock-start` | `switch` | `startProgram.sterilizationStatus` |
| Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadW` | | Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadW` |
| Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadD` | | Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadD` |
@ -455,29 +468,29 @@ 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 |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| Acqua Plus | | `binary_sensor` | `acquaplus` | | Acqua Plus | `water-plus` | `binary_sensor` | `acquaplus` |
| Anti-Crease | | `binary_sensor` | `anticrease` | | Anti-Crease | `iron` | `binary_sensor` | `anticrease` |
| 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` |
| Error | `math-log` | `sensor` | `errors` | | Error | `math-log` | `sensor` | `errors` |
| Extra Rinse 1 | | `binary_sensor` | `extraRinse1` | | Extra Rinse 1 | `numeric-1-box-multiple-outline` | `binary_sensor` | `extraRinse1` |
| Extra Rinse 2 | | `binary_sensor` | `extraRinse2` | | Extra Rinse 2 | `numeric-2-box-multiple-outline` | `binary_sensor` | `extraRinse2` |
| Extra Rinse 3 | | `binary_sensor` | `extraRinse3` | | Extra Rinse 3 | `numeric-3-box-multiple-outline` | `binary_sensor` | `extraRinse3` |
| Good Night Mode | | `binary_sensor` | `goodNight` | | Good Night Mode | `weather-night` | `binary_sensor` | `goodNight` |
| Machine Status | `information` | `sensor` | `machMode` | | Machine Status | `information` | `sensor` | `machMode` |
| Pre Wash | | `binary_sensor` | `startProgram.prewash` | | Pre Wash | `tshirt-crew` | `binary_sensor` | `prewash` |
| Program | `play` | `sensor` | `programName` | | Program | `play` | `sensor` | `programName` |
| Program Phase | `washing-machine` | `sensor` | `prPhase` | | Program Phase | `washing-machine` | `sensor` | `prPhase` |
| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` |
| Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | | Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` |
| Spin Speed | `speedometer` | `sensor` | `spinSpeed` | | Spin Speed | `speedometer` | `sensor` | `spinSpeed` |
| Start Time | `clock-start` | `sensor` | `delayTime` | | Start Time | `clock-start` | `sensor` | `delayTime` |
| Steam level | `smoke` | `sensor` | `steamLevel` | | Steam level | `weather-dust` | `sensor` | `steamLevel` |
| Temperature level | `thermometer` | `sensor` | `tempLevel` | | Temperature level | `thermometer` | `sensor` | `tempLevel` |
| Total Power | | `sensor` | `totalElectricityUsed` | | Total Power | | `sensor` | `totalElectricityUsed` |
| Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` | | Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` |
@ -497,11 +510,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` |
@ -511,7 +526,7 @@ For every device exists a button under diagnostics which can be used to log all
| Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` | | Rinse Iterations | `rotate-right` | `number` | `startProgram.rinseIterations` |
| Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` | | Soak Prewash Selection | `tshirt-crew` | `switch` | `startProgram.haier_SoakPrewashSelection` |
| Spin speed | `numeric` | `select` | `startProgram.spinSpeed` | | Spin speed | `numeric` | `select` | `startProgram.spinSpeed` |
| Steam Level | `weather-dust` | `number` | `startProgram.steamLevel` | | Steam level | `weather-dust` | `select` | `startProgram.steamLevel` |
| Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadW` | | Suggested Load | `weight-kilogram` | `sensor` | `startProgram.suggestedLoadW` |
| Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` | | Suggested weight | `weight-kilogram` | `sensor` | `startProgram.weight` |
| Temperature | `thermometer` | `select` | `startProgram.temp` | | Temperature | `thermometer` | `select` | `startProgram.temp` |
@ -520,25 +535,26 @@ 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 |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| Acqua Plus | | `binary_sensor` | `acquaplus` | | Acqua Plus | `water-plus` | `binary_sensor` | `acquaplus` |
| 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` |
| Extra Rinse 1 | | `binary_sensor` | `extraRinse1` | | Extra Rinse 1 | `numeric-1-box-multiple-outline` | `binary_sensor` | `extraRinse1` |
| Extra Rinse 2 | | `binary_sensor` | `extraRinse2` | | Extra Rinse 2 | `numeric-2-box-multiple-outline` | `binary_sensor` | `extraRinse2` |
| Extra Rinse 3 | | `binary_sensor` | `extraRinse3` | | Extra Rinse 3 | `numeric-3-box-multiple-outline` | `binary_sensor` | `extraRinse3` |
| Good Night Mode | | `binary_sensor` | `goodNight` | | Good Night Mode | `weather-night` | `binary_sensor` | `goodNight` |
| Machine Status | `information` | `sensor` | `machMode` | | Machine Status | `information` | `sensor` | `machMode` |
| Pre Wash | | `binary_sensor` | `startProgram.prewash` | | Pre Wash | `tshirt-crew` | `binary_sensor` | `prewash` |
| Program | `play` | `sensor` | `programName` | | Program | `play` | `sensor` | `programName` |
| Program Phase | `washing-machine` | `sensor` | `prPhase` | | Program Phase | `washing-machine` | `sensor` | `prPhase` |
| Remaining Time | `timer` | `sensor` | `remainingTimeMM` | | Remaining Time | `timer` | `sensor` | `remainingTimeMM` |
| Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` | | Remote Control | `remote` | `binary_sensor` | `attributes.lastConnEvent.category` |
| Spin Speed | `speedometer` | `sensor` | `spinSpeed` | | Spin Speed | `speedometer` | `sensor` | `spinSpeed` |
| Steam level | `weather-dust` | `sensor` | `steamLevel` |
| Total Power | | `sensor` | `totalElectricityUsed` | | Total Power | | `sensor` | `totalElectricityUsed` |
| Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` | | Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` |
| Total Water | | `sensor` | `totalWaterUsed` | | Total Water | | `sensor` | `totalWaterUsed` |

View File

@ -16,17 +16,10 @@ _LOGGER = logging.getLogger(__name__)
@dataclass @dataclass
class HonBinarySensorEntityDescriptionMixin: class HonBinarySensorEntityDescription(BinarySensorEntityDescription):
on_value: str | float = "" on_value: str | float = ""
@dataclass
class HonBinarySensorEntityDescription(
HonBinarySensorEntityDescriptionMixin, BinarySensorEntityDescription
):
pass
BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = { BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = {
"WM": ( "WM": (
HonBinarySensorEntityDescription( HonBinarySensorEntityDescription(
@ -52,22 +45,40 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = {
translation_key="door_open", translation_key="door_open",
), ),
HonBinarySensorEntityDescription( HonBinarySensorEntityDescription(
key="startProgram.prewash", name="Pre Wash", translation_key="prewash" key="prewash",
icon="mdi:tshirt-crew",
name="Pre Wash",
translation_key="prewash",
), ),
HonBinarySensorEntityDescription( HonBinarySensorEntityDescription(
key="extraRinse1", name="Extra Rinse 1", translation_key="extra_rinse_1" key="extraRinse1",
icon="mdi:numeric-1-box-multiple-outline",
name="Extra Rinse 1",
translation_key="extra_rinse_1",
), ),
HonBinarySensorEntityDescription( HonBinarySensorEntityDescription(
key="extraRinse2", name="Extra Rinse 2", translation_key="extra_rinse_2" key="extraRinse2",
icon="mdi:numeric-2-box-multiple-outline",
name="Extra Rinse 2",
translation_key="extra_rinse_2",
), ),
HonBinarySensorEntityDescription( HonBinarySensorEntityDescription(
key="extraRinse3", name="Extra Rinse 3", translation_key="extra_rinse_3" key="extraRinse3",
icon="mdi:numeric-3-box-multiple-outline",
name="Extra Rinse 3",
translation_key="extra_rinse_3",
), ),
HonBinarySensorEntityDescription( HonBinarySensorEntityDescription(
key="goodNight", name="Good Night Mode", translation_key="good_night" key="goodNight",
icon="mdi:weather-night",
name="Good Night Mode",
translation_key="good_night",
), ),
HonBinarySensorEntityDescription( HonBinarySensorEntityDescription(
key="acquaplus", name="Acqua Plus", translation_key="acqua_plus" key="acquaplus",
icon="mdi:water-plus",
name="Acqua Plus",
translation_key="acqua_plus",
), ),
), ),
"TD": ( "TD": (
@ -86,7 +97,10 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = {
translation_key="door_open", translation_key="door_open",
), ),
HonBinarySensorEntityDescription( HonBinarySensorEntityDescription(
key="anticrease", name="Anti-Crease", translation_key="anti_crease" key="anticrease",
name="Anti-Crease",
icon="mdi:iron",
translation_key="anti_crease",
), ),
), ),
"OV": ( "OV": (

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

@ -218,6 +218,7 @@ AP_MACH_MODE = {
} }
AP_DIFFUSER_LEVEL = { AP_DIFFUSER_LEVEL = {
0: "off",
1: "soft", 1: "soft",
2: "mid", 2: "mid",
3: "h_biotics", 3: "h_biotics",

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.7" "pyhOn==0.14.10"
], ],
"version": "0.9.0-beta.8" "version": "0.9.1-beta.1"
} }

View File

@ -48,12 +48,6 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = {
native_unit_of_measurement=UnitOfTime.MINUTES, native_unit_of_measurement=UnitOfTime.MINUTES,
translation_key="wash_time", translation_key="wash_time",
), ),
HonConfigNumberEntityDescription(
key="startProgram.steamLevel",
name="Steam Level",
icon="mdi:weather-dust",
translation_key="steam_level",
),
HonConfigNumberEntityDescription( HonConfigNumberEntityDescription(
key="startProgram.waterHard", key="startProgram.waterHard",
name="Water hard", name="Water hard",
@ -166,18 +160,21 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = {
HonNumberEntityDescription( HonNumberEntityDescription(
key="settings.aromaTimeOn", key="settings.aromaTimeOn",
name="Aroma Time On", name="Aroma Time On",
icon="mdi:thermometer", icon="mdi:scent",
native_unit_of_measurement=UnitOfTime.SECONDS, native_unit_of_measurement=UnitOfTime.SECONDS,
translation_key="aroma_time_on",
), ),
HonNumberEntityDescription( HonNumberEntityDescription(
key="settings.aromaTimeOff", key="settings.aromaTimeOff",
name="Aroma Time Off", name="Aroma Time Off",
icon="mdi:thermometer", icon="mdi:scent-off",
native_unit_of_measurement=UnitOfTime.SECONDS, native_unit_of_measurement=UnitOfTime.SECONDS,
translation_key="aroma_time_off",
), ),
HonNumberEntityDescription( HonNumberEntityDescription(
key="settings.pollenLevel", key="settings.pollenLevel",
name="Pollen Level", name="Pollen Level",
icon="mdi:flower-pollen",
translation_key="pollen_level", translation_key="pollen_level",
), ),
), ),

View File

@ -49,6 +49,20 @@ SELECTS = {
name="Program", name="Program",
translation_key="programs_wm", translation_key="programs_wm",
), ),
HonConfigSelectEntityDescription(
key="startProgram.steamLevel",
name="Steam level",
icon="mdi:weather-dust",
translation_key="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(
@ -139,11 +153,12 @@ 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-purifier",
), ),
HonSelectEntityDescription( HonSelectEntityDescription(
key="settings.machMode", key="settings.machMode",
name="Mode", name="Mode",
icon="mdi:run", icon="mdi:play",
option_list=const.AP_MACH_MODE, option_list=const.AP_MACH_MODE,
translation_key="mode", translation_key="mode",
), ),
@ -191,10 +206,12 @@ class HonConfigSelectEntity(HonEntity, SelectEntity):
def _option_to_number(self, option: str, values: List[str]): def _option_to_number(self, option: str, values: List[str]):
if (options := self.entity_description.option_list) is not None: if (options := self.entity_description.option_list) is not None:
return next( return str(
next(
(k for k, v in options.items() if str(k) in values and v == option), (k for k, v in options.items() if str(k) in values and v == option),
option, option,
) )
)
return option return option
async def async_select_option(self, option: str) -> None: async def async_select_option(self, option: str) -> None:

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",
@ -186,6 +186,14 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = {
device_class=SensorDeviceClass.ENUM, device_class=SensorDeviceClass.ENUM,
translation_key="programs_wm", translation_key="programs_wm",
), ),
HonSensorEntityDescription(
key="steamLevel",
name="Steam level",
icon="mdi:weather-dust",
device_class=SensorDeviceClass.ENUM,
translation_key="steam_level",
option_list=const.STEAM_LEVEL,
),
), ),
"TD": ( "TD": (
HonSensorEntityDescription( HonSensorEntityDescription(
@ -259,22 +267,6 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = {
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
translation_key="energy_label", translation_key="energy_label",
), ),
HonConfigSensorEntityDescription(
key="startProgram.steamLevel",
name="Steam level",
device_class=SensorDeviceClass.ENUM,
icon="mdi:smoke",
translation_key="steam_level",
option_list=const.STEAM_LEVEL,
),
HonSensorEntityDescription(
key="steamLevel",
name="Steam level",
icon="mdi:smoke",
device_class=SensorDeviceClass.ENUM,
translation_key="steam_level",
option_list=const.STEAM_LEVEL,
),
HonConfigSensorEntityDescription( HonConfigSensorEntityDescription(
key="steamType", key="steamType",
name="Steam Type", name="Steam Type",
@ -696,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(
@ -754,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(
@ -142,13 +148,13 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = {
HonConfigSwitchEntityDescription( HonConfigSwitchEntityDescription(
key="startProgram.antiCreaseTime", key="startProgram.antiCreaseTime",
name="Anti-Crease", name="Anti-Crease",
icon="mdi:timer", icon="mdi:iron",
translation_key="anti_crease", translation_key="anti_crease",
), ),
HonConfigSwitchEntityDescription( HonConfigSwitchEntityDescription(
key="startProgram.anticrease", key="startProgram.anticrease",
name="Anti-Crease", name="Anti-Crease",
icon="mdi:timer", icon="mdi:iron",
translation_key="anti_crease", translation_key="anti_crease",
), ),
), ),
@ -253,6 +259,7 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = {
HonSwitchEntityDescription( HonSwitchEntityDescription(
key="ecoMode", key="ecoMode",
name="Eco Mode", name="Eco Mode",
icon="mdi:sprout",
translation_key="eco_mode", translation_key="eco_mode",
), ),
HonSwitchEntityDescription( HonSwitchEntityDescription(
@ -330,10 +337,21 @@ 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",
name="Touch Tone", name="Touch Tone",
icon="mdi:account-voice",
translation_key="touch_tone", translation_key="touch_tone",
), ),
), ),
@ -386,7 +404,7 @@ class HonSwitchEntity(HonEntity, SwitchEntity):
setting = self._device.settings[f"settings.{self.entity_description.key}"] setting = self._device.settings[f"settings.{self.entity_description.key}"]
if type(setting) == HonParameter: if type(setting) == HonParameter:
return return
setting.value = setting.max if isinstance(setting, HonParameterRange) else "1" setting.value = setting.max if isinstance(setting, HonParameterRange) else 1
self.async_write_ha_state() self.async_write_ha_state()
await self._device.commands["settings"].send() await self._device.commands["settings"].send()
await self.coordinator.async_refresh() await self.coordinator.async_refresh()
@ -395,7 +413,7 @@ class HonSwitchEntity(HonEntity, SwitchEntity):
setting = self._device.settings[f"settings.{self.entity_description.key}"] setting = self._device.settings[f"settings.{self.entity_description.key}"]
if type(setting) == HonParameter: if type(setting) == HonParameter:
return return
setting.value = setting.min if isinstance(setting, HonParameterRange) else "0" setting.value = setting.min if isinstance(setting, HonParameterRange) else 0
self.async_write_ha_state() self.async_write_ha_state()
await self._device.commands["settings"].send() await self._device.commands["settings"].send()
await self.coordinator.async_refresh() await self.coordinator.async_refresh()
@ -403,16 +421,20 @@ class HonSwitchEntity(HonEntity, SwitchEntity):
@property @property
def available(self) -> bool: def available(self) -> bool:
"""Return True if entity is available.""" """Return True if entity is available."""
return ( if not super().available:
super().available return False
and int(self._device.get("remoteCtrValid", 1)) == 1 if not self._device.get("remoteCtrValid", 1) == 1:
and self._device.get("attributes.lastConnEvent.category") != "DISCONNECTED" return False
) if self._device.get("attributes.lastConnEvent.category") == "DISCONNECTED":
return False
setting = self._device.settings[f"settings.{self.entity_description.key}"]
if isinstance(setting, HonParameterRange) and len(setting.values) < 2:
return False
return True
@callback @callback
def _handle_coordinator_update(self, update=True) -> None: def _handle_coordinator_update(self, update=True) -> None:
value = self._device.get(self.entity_description.key, 0) self._attr_is_on = self.is_on
self._attr_state = value == 1
if update: if update:
self.async_write_ha_state() self.async_write_ha_state()
@ -426,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()
@ -488,7 +514,6 @@ class HonConfigSwitchEntity(HonEntity, SwitchEntity):
@callback @callback
def _handle_coordinator_update(self, update=True) -> None: def _handle_coordinator_update(self, update=True) -> None:
value = self._device.settings.get(self.entity_description.key, "0") self._attr_is_on = self.is_on
self._attr_state = value == "1"
if update: if update:
self.async_write_ha_state() self.async_write_ha_state()

View File

@ -808,7 +808,13 @@
"name": "Úroveň páry" "name": "Úroveň páry"
}, },
"dirt_level": { "dirt_level": {
"name": "Míra znečištění" "name": "Míra znečištění",
"state": {
"little": "Málo",
"normal": "Normální",
"very": "Velmi",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "Odložené spuštění" "name": "Odložené spuštění"
@ -860,6 +866,27 @@
}, },
"voc": { "voc": {
"name": "Plyn (VOC)" "name": "Plyn (VOC)"
},
"steam_level": {
"state": {
"no_steam": "Bez páry",
"cotton": "Bavlna",
"delicate": "Jemné",
"synthetic": "Synthetic"
},
"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": {
@ -1608,10 +1635,42 @@
"name": "Zbývající čas" "name": "Zbývající čas"
}, },
"diffuser": { "diffuser": {
"name": "Difuzér" "name": "Difuzér",
"state": {
"soft": "Mírná",
"mid": "Střední",
"h_biotics": "H-BIOTICS",
"custom": "Přizpůsobit",
"off": "Vypnout"
}
}, },
"mode": { "mode": {
"name": "Režim" "name": "Režim",
"state": {
"standby": "Pohotovostní režim",
"sleep": "Spánek",
"auto": "Auto",
"allergens": "Alergeny",
"max": "Max."
}
},
"steam_level": {
"state": {
"no_steam": "Bez páry",
"cotton": "Bavlna",
"delicate": "Jemné",
"synthetic": "Synthetic"
},
"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": {
@ -1725,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": {
@ -1857,6 +1922,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Hladina pylu" "name": "Hladina pylu"
},
"aroma_time_on": {
"name": "Difuzér (ZAPNOUT)"
},
"aroma_time_off": {
"name": "Difuzér (VYPNOUT)"
} }
}, },
"climate": { "climate": {

View File

@ -808,7 +808,13 @@
"name": "Dampfstufe" "name": "Dampfstufe"
}, },
"dirt_level": { "dirt_level": {
"name": "Verschmutzungsgrad" "name": "Verschmutzungsgrad",
"state": {
"little": "Wenig",
"normal": "Normal",
"very": "Sehr",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "Einschaltverzögerung" "name": "Einschaltverzögerung"
@ -860,6 +866,27 @@
}, },
"voc": { "voc": {
"name": "Gas (VOC)" "name": "Gas (VOC)"
},
"steam_level": {
"state": {
"no_steam": "Kein Dampf",
"cotton": "Baumwolle",
"delicate": "Feinwäsche",
"synthetic": "Synthetik"
},
"name": "Dampfstufe"
},
"filter_cleaning": {
"name": "Reinigung der Filter"
},
"filter_life": {
"name": "Filterlebensdauer"
},
"air_quality": {
"name": "Luftqualität"
},
"fan_speed": {
"name": "Gebläsegeschwindigkeit"
} }
}, },
"select": { "select": {
@ -1608,10 +1635,42 @@
"name": "Verbleibende Zeit" "name": "Verbleibende Zeit"
}, },
"diffuser": { "diffuser": {
"name": "Luftverteiler" "name": "Luftverteiler",
"state": {
"soft": "Weich",
"mid": "Mittel",
"h_biotics": "H-BIOTICS",
"custom": "Individuelle Anpassung",
"off": "Aus"
}
}, },
"mode": { "mode": {
"name": "Modus" "name": "Modus",
"state": {
"standby": "Standby-Modus",
"sleep": "Sleep",
"auto": "Auto",
"allergens": "Allergene",
"max": "Max"
}
},
"steam_level": {
"state": {
"no_steam": "Kein Dampf",
"cotton": "Baumwolle",
"delicate": "Feinwäsche",
"synthetic": "Synthetik"
},
"name": "Dampfstufe"
},
"dirt_level": {
"state": {
"little": "Wenig",
"normal": "Normal",
"very": "Sehr",
"unknown": "unknown"
},
"name": "Verschmutzungsgrad"
} }
}, },
"switch": { "switch": {
@ -1725,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Tastentonlautstärke" "name": "Tastentonlautstärke"
},
"hygiene": {
"name": "Hygiene plus"
},
"hood": {
"name": "Abzugshaube"
} }
}, },
"binary_sensor": { "binary_sensor": {
@ -1857,6 +1922,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Pollenkonzentration" "name": "Pollenkonzentration"
},
"aroma_time_on": {
"name": "Luftverteiler (AN)"
},
"aroma_time_off": {
"name": "Luftverteiler (AUS)"
} }
}, },
"climate": { "climate": {

View File

@ -808,7 +808,13 @@
"name": "Επίπεδο ατμού" "name": "Επίπεδο ατμού"
}, },
"dirt_level": { "dirt_level": {
"name": "Επίπεδο βρωμιάς" "name": "Επίπεδο βρωμιάς",
"state": {
"little": "Λίγη",
"normal": "Κανονική",
"very": "Πολύ",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "Καθυστερημένη έναρξη" "name": "Καθυστερημένη έναρξη"
@ -860,6 +866,27 @@
}, },
"voc": { "voc": {
"name": "Αέριο (VOC)" "name": "Αέριο (VOC)"
},
"steam_level": {
"state": {
"no_steam": "Χωρίς ατμό",
"cotton": "Βαμβακερό",
"delicate": "Ευαίσθητα",
"synthetic": "Συνθετικά"
},
"name": "Επίπεδο ατμού"
},
"filter_cleaning": {
"name": "Καθαρισμός φίλτρου"
},
"filter_life": {
"name": "Φιλτράρετε τη ζωή"
},
"air_quality": {
"name": "Ποιότητα αέρα"
},
"fan_speed": {
"name": "Ταχύτητα ανεμιστήρα"
} }
}, },
"select": { "select": {
@ -1608,10 +1635,42 @@
"name": "Χρόνος που απομένει" "name": "Χρόνος που απομένει"
}, },
"diffuser": { "diffuser": {
"name": "Διαχύτης" "name": "Διαχύτης",
"state": {
"soft": "Μαλακό",
"mid": "Μεσαίο",
"h_biotics": "H-BIOTICS",
"custom": "Προσαρμογή",
"off": "Ανενεργό"
}
}, },
"mode": { "mode": {
"name": "Mode" "name": "Mode",
"state": {
"standby": "Αναμονή",
"sleep": "Λειτουργία ύπνου",
"auto": "Αυτόματο",
"allergens": "Αλλεργιογόνα",
"max": "Μέγιστο"
}
},
"steam_level": {
"state": {
"no_steam": "Χωρίς ατμό",
"cotton": "Βαμβακερό",
"delicate": "Ευαίσθητα",
"synthetic": "Συνθετικά"
},
"name": "Επίπεδο ατμού"
},
"dirt_level": {
"state": {
"little": "Λίγη",
"normal": "Κανονική",
"very": "Πολύ",
"unknown": "unknown"
},
"name": "Επίπεδο βρωμιάς"
} }
}, },
"switch": { "switch": {
@ -1725,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Ένταση τόνου αφής" "name": "Ένταση τόνου αφής"
},
"hygiene": {
"name": "Hygiene plus"
},
"hood": {
"name": "Απορροφητήρας"
} }
}, },
"binary_sensor": { "binary_sensor": {
@ -1857,6 +1922,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Επίπεδο γύρης" "name": "Επίπεδο γύρης"
},
"aroma_time_on": {
"name": "Μεταδότης διάχυσης (ΕΝΕΡΓΟΠΟΙΗΣΗ)"
},
"aroma_time_off": {
"name": "Μεταδότης διάχυσης (ΑΠΕΝΕΡΓΟΠΟΙΗΣΗ)"
} }
}, },
"climate": { "climate": {

View File

@ -823,7 +823,13 @@
"name": "Steam Level" "name": "Steam Level"
}, },
"dirt_level": { "dirt_level": {
"name": "Dirt level" "name": "Dirt level",
"state": {
"little": "Little",
"normal": "Normal",
"very": "Very",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "Delay Start" "name": "Delay Start"
@ -880,6 +886,27 @@
}, },
"voc": { "voc": {
"name": "Gas (VOC)" "name": "Gas (VOC)"
},
"steam_level": {
"state": {
"no_steam": "No steam",
"cotton": "Cotton",
"delicate": "Delicate",
"synthetic": "Synthetic"
},
"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": {
@ -1635,10 +1662,42 @@
"name": "Time remaining" "name": "Time remaining"
}, },
"diffuser": { "diffuser": {
"name": "Diffuser" "name": "Diffuser",
"state": {
"soft": "Soft",
"mid": "Mid",
"h_biotics": "H-BIOTICS",
"custom": "Customise",
"off": "Off"
}
}, },
"mode": { "mode": {
"name": "Mode" "name": "Mode",
"state": {
"standby": "Standby",
"sleep": "Sleep",
"auto": "Auto",
"allergens": "Allergens",
"max": "Max"
}
},
"steam_level": {
"state": {
"no_steam": "No steam",
"cotton": "Cotton",
"delicate": "Delicate",
"synthetic": "Synthetic"
},
"name": "Steam Level"
},
"dirt_level": {
"state": {
"little": "Little",
"normal": "Normal",
"very": "Very",
"unknown": "unknown"
},
"name": "Dirt level"
} }
}, },
"switch": { "switch": {
@ -1752,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": {
@ -1884,6 +1949,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Pollen level" "name": "Pollen level"
},
"aroma_time_on": {
"name": "Diffuser (ON)"
},
"aroma_time_off": {
"name": "Diffuser (OFF)"
} }
}, },
"climate": { "climate": {

View File

@ -808,7 +808,13 @@
"name": "Nivel de vapor" "name": "Nivel de vapor"
}, },
"dirt_level": { "dirt_level": {
"name": "Nivel de suciedad" "name": "Nivel de suciedad",
"state": {
"little": "Poco",
"normal": "Normal",
"very": "Mucho",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "Inicio Diferido" "name": "Inicio Diferido"
@ -860,6 +866,27 @@
}, },
"voc": { "voc": {
"name": "Gas (COV)" "name": "Gas (COV)"
},
"steam_level": {
"state": {
"no_steam": "Sin vapor",
"cotton": "Algodón",
"delicate": "Ropa delicada",
"synthetic": "Synthetic"
},
"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": {
@ -1608,10 +1635,42 @@
"name": "Tiempo restante" "name": "Tiempo restante"
}, },
"diffuser": { "diffuser": {
"name": "Difusor" "name": "Difusor",
"state": {
"soft": "Suave",
"mid": "Medio",
"h_biotics": "H-BIOTICS",
"custom": "Personalizar",
"off": "Desactivado"
}
}, },
"mode": { "mode": {
"name": "Modo" "name": "Modo",
"state": {
"standby": "En espera",
"sleep": "Reposo",
"auto": "Automático",
"allergens": "Alérgenos",
"max": "Máx."
}
},
"steam_level": {
"state": {
"no_steam": "Sin vapor",
"cotton": "Algodón",
"delicate": "Ropa delicada",
"synthetic": "Synthetic"
},
"name": "Nivel de vapor"
},
"dirt_level": {
"state": {
"little": "Poco",
"normal": "Normal",
"very": "Mucho",
"unknown": "unknown"
},
"name": "Nivel de suciedad"
} }
}, },
"switch": { "switch": {
@ -1725,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": {
@ -1857,6 +1922,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Nivel de polen" "name": "Nivel de polen"
},
"aroma_time_on": {
"name": "Difusor (ENCENDIDO)"
},
"aroma_time_off": {
"name": "Difusor (APAGADO)"
} }
}, },
"climate": { "climate": {

View File

@ -808,7 +808,13 @@
"name": "Niveau de vapeur" "name": "Niveau de vapeur"
}, },
"dirt_level": { "dirt_level": {
"name": "Niveau de saleté" "name": "Niveau de saleté",
"state": {
"little": "Faible",
"normal": "Normal",
"very": "Élevé",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "Démarrage Différé" "name": "Démarrage Différé"
@ -860,6 +866,27 @@
}, },
"voc": { "voc": {
"name": "COV gazeux" "name": "COV gazeux"
},
"steam_level": {
"state": {
"no_steam": "Pas de vapeur",
"cotton": "Coton",
"delicate": "Délicats",
"synthetic": "Synthetic"
},
"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": {
@ -1608,10 +1635,42 @@
"name": "Temps restant" "name": "Temps restant"
}, },
"diffuser": { "diffuser": {
"name": "Diffuseur" "name": "Diffuseur",
"state": {
"soft": "Doux",
"mid": "Intermédiaire",
"h_biotics": "H-BIOTICS",
"custom": "Personnaliser",
"off": "Arrêt"
}
}, },
"mode": { "mode": {
"name": "Mode" "name": "Mode",
"state": {
"standby": "Pause",
"sleep": "Sleep",
"auto": "Automatique",
"allergens": "Allergènes",
"max": "Max"
}
},
"steam_level": {
"state": {
"no_steam": "Pas de vapeur",
"cotton": "Coton",
"delicate": "Délicats",
"synthetic": "Synthetic"
},
"name": "Niveau de vapeur"
},
"dirt_level": {
"state": {
"little": "Faible",
"normal": "Normal",
"very": "Élevé",
"unknown": "unknown"
},
"name": "Niveau de saleté"
} }
}, },
"switch": { "switch": {
@ -1725,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": {
@ -1857,6 +1922,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Niveau de pollen" "name": "Niveau de pollen"
},
"aroma_time_on": {
"name": "Diffuseur (ON)"
},
"aroma_time_off": {
"name": "Diffuseur (OFF)"
} }
}, },
"climate": { "climate": {

View File

@ -364,7 +364,13 @@
"name": "מפלס קיטור" "name": "מפלס קיטור"
}, },
"dirt_level": { "dirt_level": {
"name": "רמת עפר" "name": "רמת עפר",
"state": {
"little": "קטן",
"normal": "נוֹרמָלִי",
"very": "מאוד",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "Delay Start" "name": "Delay Start"
@ -416,6 +422,27 @@
}, },
"voc": { "voc": {
"name": "Gas (VOC)" "name": "Gas (VOC)"
},
"steam_level": {
"state": {
"no_steam": "אין קיטור",
"cotton": "כותנה",
"delicate": "עָדִין",
"synthetic": "מְלָאכוּתִי"
},
"name": "מפלס קיטור"
},
"filter_cleaning": {
"name": "Filter cleaning"
},
"filter_life": {
"name": "Filter life"
},
"air_quality": {
"name": "Air Quality"
},
"fan_speed": {
"name": "Fan speed"
} }
}, },
"select": { "select": {
@ -729,10 +756,42 @@
"name": "זמן שנותר" "name": "זמן שנותר"
}, },
"diffuser": { "diffuser": {
"name": "Diffuser" "name": "Diffuser",
"state": {
"soft": "Soft",
"mid": "Mid",
"h_biotics": "H-BIOTICS",
"custom": "Customise",
"off": "כבוי"
}
}, },
"mode": { "mode": {
"name": "Mode" "name": "Mode",
"state": {
"standby": "Standby",
"sleep": "Sleep",
"auto": "Auto",
"allergens": "Allergens",
"max": "Max"
}
},
"steam_level": {
"state": {
"no_steam": "אין קיטור",
"cotton": "כותנה",
"delicate": "עָדִין",
"synthetic": "מְלָאכוּתִי"
},
"name": "מפלס קיטור"
},
"dirt_level": {
"state": {
"little": "קטן",
"normal": "נוֹרמָלִי",
"very": "מאוד",
"unknown": "unknown"
},
"name": "רמת עפר"
} }
}, },
"switch": { "switch": {
@ -846,6 +905,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Touch tone volume" "name": "Touch tone volume"
},
"hygiene": {
"name": "היגיינה פלוס"
},
"hood": {
"name": "Hood"
} }
}, },
"binary_sensor": { "binary_sensor": {
@ -978,6 +1043,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Pollen level" "name": "Pollen level"
},
"aroma_time_on": {
"name": "Diffuser (ON)"
},
"aroma_time_off": {
"name": "Diffuser (OFF)"
} }
}, },
"climate": { "climate": {

View File

@ -808,7 +808,13 @@
"name": "Razina pare" "name": "Razina pare"
}, },
"dirt_level": { "dirt_level": {
"name": "Stupanj zaprljanosti" "name": "Stupanj zaprljanosti",
"state": {
"little": "Neznatno",
"normal": "Uobičajeno",
"very": "Izuzetno",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "Odgoda početka" "name": "Odgoda početka"
@ -860,6 +866,27 @@
}, },
"voc": { "voc": {
"name": "Plinovi (HOS-ovi)" "name": "Plinovi (HOS-ovi)"
},
"steam_level": {
"state": {
"no_steam": "Bez pare",
"cotton": "Pamuk",
"delicate": "Osjetljivo rublje",
"synthetic": "Sintetika"
},
"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": {
@ -1608,10 +1635,42 @@
"name": "Preostalo vrijeme" "name": "Preostalo vrijeme"
}, },
"diffuser": { "diffuser": {
"name": "Raspršivač" "name": "Raspršivač",
"state": {
"soft": "Manjeg intenziteta",
"mid": "Srednje",
"h_biotics": "H-BIOTICS",
"custom": "Prilagođavanje",
"off": "Isključeno"
}
}, },
"mode": { "mode": {
"name": "Mode" "name": "Mode",
"state": {
"standby": "Stanje pripravnosti",
"sleep": "Način mirovanja",
"auto": "Automatski",
"allergens": "Alergeni",
"max": "Najviše"
}
},
"steam_level": {
"state": {
"no_steam": "Bez pare",
"cotton": "Pamuk",
"delicate": "Osjetljivo rublje",
"synthetic": "Sintetika"
},
"name": "Razina pare"
},
"dirt_level": {
"state": {
"little": "Neznatno",
"normal": "Uobičajeno",
"very": "Izuzetno",
"unknown": "unknown"
},
"name": "Stupanj zaprljanosti"
} }
}, },
"switch": { "switch": {
@ -1725,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": {
@ -1857,6 +1922,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Razina peludi" "name": "Razina peludi"
},
"aroma_time_on": {
"name": "Raspršivač (ISKLJUČEN)"
},
"aroma_time_off": {
"name": "Raspršivač (UKLJUČEN)"
} }
}, },
"climate": { "climate": {

View File

@ -808,7 +808,13 @@
"name": "Livello vapore" "name": "Livello vapore"
}, },
"dirt_level": { "dirt_level": {
"name": "Livello di sporco" "name": "Livello di sporco",
"state": {
"little": "Poco",
"normal": "Normale",
"very": "Molto",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "Utilizzo nelle ore notturne" "name": "Utilizzo nelle ore notturne"
@ -865,6 +871,27 @@
}, },
"voc": { "voc": {
"name": "Gas (VOC)" "name": "Gas (VOC)"
},
"steam_level": {
"state": {
"no_steam": "No vapore",
"cotton": "Cotone",
"delicate": "Delicati",
"synthetic": "Sintetici"
},
"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": {
@ -1613,10 +1640,42 @@
"name": "Tempo rimanente" "name": "Tempo rimanente"
}, },
"diffuser": { "diffuser": {
"name": "Diffusore" "name": "Diffusore",
"state": {
"soft": "Soft",
"mid": "Medio",
"h_biotics": "H-BIOTICS",
"custom": "Personalizza",
"off": "Off"
}
}, },
"mode": { "mode": {
"name": "Modalità" "name": "Modalità",
"state": {
"standby": "Standby",
"sleep": "Sleep",
"auto": "Auto",
"allergens": "Allergeni",
"max": "Max"
}
},
"steam_level": {
"state": {
"no_steam": "No vapore",
"cotton": "Cotone",
"delicate": "Delicati",
"synthetic": "Sintetici"
},
"name": "Livello vapore"
},
"dirt_level": {
"state": {
"little": "Poco",
"normal": "Normale",
"very": "Molto",
"unknown": "unknown"
},
"name": "Livello di sporco"
} }
}, },
"switch": { "switch": {
@ -1730,6 +1789,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Volume Tasti" "name": "Volume Tasti"
},
"hygiene": {
"name": "Hygiene plus"
},
"hood": {
"name": "Cappa"
} }
}, },
"binary_sensor": { "binary_sensor": {
@ -1862,6 +1927,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Livello di polline" "name": "Livello di polline"
},
"aroma_time_on": {
"name": "Diffusore (ON)"
},
"aroma_time_off": {
"name": "Diffusore (OFF)"
} }
}, },
"climate": { "climate": {

View File

@ -808,7 +808,13 @@
"name": "Stoomniveau" "name": "Stoomniveau"
}, },
"dirt_level": { "dirt_level": {
"name": "Vuilheid" "name": "Vuilheid",
"state": {
"little": "Weinig",
"normal": "Normaal",
"very": "Heel",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "Vertraag Start" "name": "Vertraag Start"
@ -860,6 +866,27 @@
}, },
"voc": { "voc": {
"name": "Gas (VOC)" "name": "Gas (VOC)"
},
"steam_level": {
"state": {
"no_steam": "Geen stoom",
"cotton": "Katoen",
"delicate": "Fijne was",
"synthetic": "Synthetic"
},
"name": "Stoomniveau"
},
"filter_cleaning": {
"name": "Filterreiniging"
},
"filter_life": {
"name": "Levensduur filter"
},
"air_quality": {
"name": "Luchtkwaliteit"
},
"fan_speed": {
"name": "Ventilatorsnelheid"
} }
}, },
"select": { "select": {
@ -1608,10 +1635,42 @@
"name": "Resterende tijd" "name": "Resterende tijd"
}, },
"diffuser": { "diffuser": {
"name": "Diffuser" "name": "Diffuser",
"state": {
"soft": "Zacht",
"mid": "Medium",
"h_biotics": "H-BIOTICS",
"custom": "Personaliseren",
"off": "Uit"
}
}, },
"mode": { "mode": {
"name": "Modus" "name": "Modus",
"state": {
"standby": "Stand-by",
"sleep": "Slaap",
"auto": "Automatisch",
"allergens": "Allergenen",
"max": "Max"
}
},
"steam_level": {
"state": {
"no_steam": "Geen stoom",
"cotton": "Katoen",
"delicate": "Fijne was",
"synthetic": "Synthetic"
},
"name": "Stoomniveau"
},
"dirt_level": {
"state": {
"little": "Weinig",
"normal": "Normaal",
"very": "Heel",
"unknown": "unknown"
},
"name": "Vuilheid"
} }
}, },
"switch": { "switch": {
@ -1725,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": {
@ -1857,6 +1922,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Pollenniveau" "name": "Pollenniveau"
},
"aroma_time_on": {
"name": "Diffuser (AAN)"
},
"aroma_time_off": {
"name": "Diffuser (UIT)"
} }
}, },
"climate": { "climate": {

View File

@ -808,7 +808,13 @@
"name": "Poziom pary" "name": "Poziom pary"
}, },
"dirt_level": { "dirt_level": {
"name": "Stopień zabrudzenia" "name": "Stopień zabrudzenia",
"state": {
"little": "Niskie",
"normal": "Standardowe",
"very": "Wysokie",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "Opóźniony Start" "name": "Opóźniony Start"
@ -860,6 +866,27 @@
}, },
"voc": { "voc": {
"name": "Gaz (VOC)" "name": "Gaz (VOC)"
},
"steam_level": {
"state": {
"no_steam": "Bez pary",
"cotton": "Bawełna",
"delicate": "Delikatne",
"synthetic": "Syntetyczne"
},
"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": {
@ -1608,10 +1635,42 @@
"name": "Pozostały czas" "name": "Pozostały czas"
}, },
"diffuser": { "diffuser": {
"name": "Dyfuzor" "name": "Dyfuzor",
"state": {
"soft": "Program",
"mid": "Średnie",
"h_biotics": "H-BIOTICS",
"custom": "Dostosuj",
"off": "Wył."
}
}, },
"mode": { "mode": {
"name": "Tryb" "name": "Tryb",
"state": {
"standby": "Czuwanie",
"sleep": "Uśpiony",
"auto": "Auto",
"allergens": "Alergeny",
"max": "Maks."
}
},
"steam_level": {
"state": {
"no_steam": "Bez pary",
"cotton": "Bawełna",
"delicate": "Delikatne",
"synthetic": "Syntetyczne"
},
"name": "Poziom pary"
},
"dirt_level": {
"state": {
"little": "Niskie",
"normal": "Standardowe",
"very": "Wysokie",
"unknown": "unknown"
},
"name": "Stopień zabrudzenia"
} }
}, },
"switch": { "switch": {
@ -1725,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": {
@ -1857,6 +1922,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Poziom pyłków" "name": "Poziom pyłków"
},
"aroma_time_on": {
"name": "Dyfuzor (WŁ.)"
},
"aroma_time_off": {
"name": "Dyfuzor (WYŁ.)"
} }
}, },
"climate": { "climate": {

View File

@ -808,7 +808,13 @@
"name": "Nível de vapor" "name": "Nível de vapor"
}, },
"dirt_level": { "dirt_level": {
"name": "Nível de sujidade" "name": "Nível de sujidade",
"state": {
"little": "Pouco",
"normal": "Normal",
"very": "Muito",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "Início adiado" "name": "Início adiado"
@ -860,6 +866,27 @@
}, },
"voc": { "voc": {
"name": "Gás (VOC)" "name": "Gás (VOC)"
},
"steam_level": {
"state": {
"no_steam": "Sem vapor",
"cotton": "Algodão",
"delicate": "Roupa delicada",
"synthetic": "Sintéticos"
},
"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": {
@ -1608,10 +1635,42 @@
"name": "Tempo restante" "name": "Tempo restante"
}, },
"diffuser": { "diffuser": {
"name": "Difusor" "name": "Difusor",
"state": {
"soft": "Suave",
"mid": "Médio",
"h_biotics": "H-BIOTICS",
"custom": "Personalizar",
"off": "Off"
}
}, },
"mode": { "mode": {
"name": "Modo" "name": "Modo",
"state": {
"standby": "Em espera",
"sleep": "Sono",
"auto": "Auto",
"allergens": "Alergénios",
"max": "Máx."
}
},
"steam_level": {
"state": {
"no_steam": "Sem vapor",
"cotton": "Algodão",
"delicate": "Roupa delicada",
"synthetic": "Sintéticos"
},
"name": "Nível de vapor"
},
"dirt_level": {
"state": {
"little": "Pouco",
"normal": "Normal",
"very": "Muito",
"unknown": "unknown"
},
"name": "Nível de sujidade"
} }
}, },
"switch": { "switch": {
@ -1725,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": {
@ -1857,6 +1922,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Nível de pólenes" "name": "Nível de pólenes"
},
"aroma_time_on": {
"name": "Difusor (ON)"
},
"aroma_time_off": {
"name": "Difusor (OFF)"
} }
}, },
"climate": { "climate": {

View File

@ -808,7 +808,13 @@
"name": "Nivel abur" "name": "Nivel abur"
}, },
"dirt_level": { "dirt_level": {
"name": "Nivel de murdărie" "name": "Nivel de murdărie",
"state": {
"little": "Puțin",
"normal": "Normal",
"very": "Foarte",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "Pornire întârziată" "name": "Pornire întârziată"
@ -860,6 +866,27 @@
}, },
"voc": { "voc": {
"name": "Gaze (COV)" "name": "Gaze (COV)"
},
"steam_level": {
"state": {
"no_steam": "Fără abur",
"cotton": "Bumbac",
"delicate": "Delicate",
"synthetic": "Synthetic"
},
"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": {
@ -1608,10 +1635,42 @@
"name": "Timp rămas" "name": "Timp rămas"
}, },
"diffuser": { "diffuser": {
"name": "Difuzor" "name": "Difuzor",
"state": {
"soft": "încet",
"mid": "Mediu",
"h_biotics": "H-BIOTICS",
"custom": "Personalizați",
"off": "Oprit"
}
}, },
"mode": { "mode": {
"name": "Mode" "name": "Mode",
"state": {
"standby": "Mod de așteptare",
"sleep": "Somn",
"auto": "Automat",
"allergens": "Alergeni",
"max": "Max"
}
},
"steam_level": {
"state": {
"no_steam": "Fără abur",
"cotton": "Bumbac",
"delicate": "Delicate",
"synthetic": "Synthetic"
},
"name": "Nivel abur"
},
"dirt_level": {
"state": {
"little": "Puțin",
"normal": "Normal",
"very": "Foarte",
"unknown": "unknown"
},
"name": "Nivel de murdărie"
} }
}, },
"switch": { "switch": {
@ -1725,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": {
@ -1857,6 +1922,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Nivel polen" "name": "Nivel polen"
},
"aroma_time_on": {
"name": "Difuzor (PORNIT)"
},
"aroma_time_off": {
"name": "Difuzor (OPRIT)"
} }
}, },
"climate": { "climate": {

View File

@ -808,7 +808,13 @@
"name": "Уровень пара" "name": "Уровень пара"
}, },
"dirt_level": { "dirt_level": {
"name": "Уровень загрязнения" "name": "Уровень загрязнения",
"state": {
"little": "Мало",
"normal": "Нормально",
"very": "Очень",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "Отложенный пуск" "name": "Отложенный пуск"
@ -860,6 +866,27 @@
}, },
"voc": { "voc": {
"name": "Газ (ЛОС)" "name": "Газ (ЛОС)"
},
"steam_level": {
"state": {
"no_steam": "Без пара",
"cotton": "Хлопок",
"delicate": "Деликатные ткани",
"synthetic": "Синтетика"
},
"name": "Уровень пара"
},
"filter_cleaning": {
"name": "Чистка фильтра"
},
"filter_life": {
"name": "Срок службы фильтра"
},
"air_quality": {
"name": "Качество воздуха"
},
"fan_speed": {
"name": "Скорость вентилятора"
} }
}, },
"select": { "select": {
@ -1608,10 +1635,42 @@
"name": "Оставшееся время" "name": "Оставшееся время"
}, },
"diffuser": { "diffuser": {
"name": "Распылитель" "name": "Распылитель",
"state": {
"soft": "Мягкая",
"mid": "Средний",
"h_biotics": "H-BIOTICS",
"custom": "Настроить",
"off": "Выкл."
}
}, },
"mode": { "mode": {
"name": "Режим" "name": "Режим",
"state": {
"standby": "Режим ожидания",
"sleep": "Сон",
"auto": "Авто",
"allergens": "Аллергены",
"max": "Макс."
}
},
"steam_level": {
"state": {
"no_steam": "Без пара",
"cotton": "Хлопок",
"delicate": "Деликатные ткани",
"synthetic": "Синтетика"
},
"name": "Уровень пара"
},
"dirt_level": {
"state": {
"little": "Мало",
"normal": "Нормально",
"very": "Очень",
"unknown": "unknown"
},
"name": "Уровень загрязнения"
} }
}, },
"switch": { "switch": {
@ -1725,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "Громкость сенсорных кнопок" "name": "Громкость сенсорных кнопок"
},
"hygiene": {
"name": "Гигиена плюс"
},
"hood": {
"name": "Вытяжка"
} }
}, },
"binary_sensor": { "binary_sensor": {
@ -1857,6 +1922,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Уровень пыльцы в воздухе" "name": "Уровень пыльцы в воздухе"
},
"aroma_time_on": {
"name": "Распылитель (Вкл.)"
},
"aroma_time_off": {
"name": "Распылитель (Выкл.)"
} }
}, },
"climate": { "climate": {

View File

@ -808,7 +808,13 @@
"name": "Úroveň nastavenia pary" "name": "Úroveň nastavenia pary"
}, },
"dirt_level": { "dirt_level": {
"name": "Úroveň znečistenia" "name": "Úroveň znečistenia",
"state": {
"little": "Málo",
"normal": "Normálne",
"very": "Veľa",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "Odložený štart" "name": "Odložený štart"
@ -860,6 +866,27 @@
}, },
"voc": { "voc": {
"name": "Plyn (VOC)" "name": "Plyn (VOC)"
},
"steam_level": {
"state": {
"no_steam": "Bez pary",
"cotton": "Bavlna",
"delicate": "Jemné materiály",
"synthetic": "Synthetic"
},
"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": {
@ -1608,10 +1635,42 @@
"name": "Zostávajúci čas" "name": "Zostávajúci čas"
}, },
"diffuser": { "diffuser": {
"name": "Difuzér" "name": "Difuzér",
"state": {
"soft": "Mierny",
"mid": "Stredný",
"h_biotics": "H-BIOTICS",
"custom": "Prispôsobiť",
"off": "Vyp."
}
}, },
"mode": { "mode": {
"name": "Mode" "name": "Mode",
"state": {
"standby": "Pohotovostný režim",
"sleep": "Spánok",
"auto": "Automatika",
"allergens": "Alergény",
"max": "Max"
}
},
"steam_level": {
"state": {
"no_steam": "Bez pary",
"cotton": "Bavlna",
"delicate": "Jemné materiály",
"synthetic": "Synthetic"
},
"name": "Úroveň nastavenia pary"
},
"dirt_level": {
"state": {
"little": "Málo",
"normal": "Normálne",
"very": "Veľa",
"unknown": "unknown"
},
"name": "Úroveň znečistenia"
} }
}, },
"switch": { "switch": {
@ -1725,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": {
@ -1857,6 +1922,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Úroveň peľu" "name": "Úroveň peľu"
},
"aroma_time_on": {
"name": "Difuzér (ZAP)"
},
"aroma_time_off": {
"name": "Difuzér (VYP)"
} }
}, },
"climate": { "climate": {

View File

@ -808,7 +808,13 @@
"name": "Količina pare" "name": "Količina pare"
}, },
"dirt_level": { "dirt_level": {
"name": "Stopnja umazanije" "name": "Stopnja umazanije",
"state": {
"little": "Malo",
"normal": "Normalno",
"very": "Zelo",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "S funkcijo Zamik vklopa je možno odložiti začetek sušilnega cikla od 1 do 24 ur. Na zaslonu se prikaže izbrana zakasnitev. Da bi videli kako se zmanjšuje iz ure v uro, pritisnite ZAČETEK. Na ta način bo perilo suho takrat, ko boste to želeli, in zagnali cikel, ko vam to najbolj ustreza, celo ponoči." "name": "S funkcijo Zamik vklopa je možno odložiti začetek sušilnega cikla od 1 do 24 ur. Na zaslonu se prikaže izbrana zakasnitev. Da bi videli kako se zmanjšuje iz ure v uro, pritisnite ZAČETEK. Na ta način bo perilo suho takrat, ko boste to želeli, in zagnali cikel, ko vam to najbolj ustreza, celo ponoči."
@ -860,6 +866,27 @@
}, },
"voc": { "voc": {
"name": "Lahkohlapne organske spojine (HOS)" "name": "Lahkohlapne organske spojine (HOS)"
},
"steam_level": {
"state": {
"no_steam": "Brez pare",
"cotton": "Bombaž",
"delicate": "Občutljivo",
"synthetic": "Sintetika"
},
"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": {
@ -1608,10 +1635,42 @@
"name": "Time remaining" "name": "Time remaining"
}, },
"diffuser": { "diffuser": {
"name": "Razpršilnik" "name": "Razpršilnik",
"state": {
"soft": "Nežno",
"mid": "Srednje",
"h_biotics": "H-BIOTICS",
"custom": "Prilagodi",
"off": "Off"
}
}, },
"mode": { "mode": {
"name": "Mode" "name": "Mode",
"state": {
"standby": "Stanje pripravljenosti",
"sleep": "Spanje",
"auto": "Samodejno",
"allergens": "Alergeni",
"max": "Maksimalno"
}
},
"steam_level": {
"state": {
"no_steam": "Brez pare",
"cotton": "Bombaž",
"delicate": "Občutljivo",
"synthetic": "Sintetika"
},
"name": "Količina pare"
},
"dirt_level": {
"state": {
"little": "Malo",
"normal": "Normalno",
"very": "Zelo",
"unknown": "unknown"
},
"name": "Stopnja umazanije"
} }
}, },
"switch": { "switch": {
@ -1725,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": {
@ -1857,6 +1922,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Raven cvetnega prahu" "name": "Raven cvetnega prahu"
},
"aroma_time_on": {
"name": "Razpršilnik (VKLOP)"
},
"aroma_time_off": {
"name": "Razpršilnik (IZKLOP)"
} }
}, },
"climate": { "climate": {

View File

@ -808,7 +808,13 @@
"name": "Nivo pare" "name": "Nivo pare"
}, },
"dirt_level": { "dirt_level": {
"name": "Nivo zaprljanosti" "name": "Nivo zaprljanosti",
"state": {
"little": "Malo",
"normal": "Normalno",
"very": "Veoma",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "Odloženi start" "name": "Odloženi start"
@ -860,6 +866,27 @@
}, },
"voc": { "voc": {
"name": "Gas (VOC)" "name": "Gas (VOC)"
},
"steam_level": {
"state": {
"no_steam": "Bez vodene pare",
"cotton": "Pamuk",
"delicate": "Osetljivi materijali",
"synthetic": "Sintetika"
},
"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": {
@ -1608,10 +1635,42 @@
"name": "Preostalo vreme" "name": "Preostalo vreme"
}, },
"diffuser": { "diffuser": {
"name": "Difuzor" "name": "Difuzor",
"state": {
"soft": "Meki",
"mid": "Srednje",
"h_biotics": "„H-BIOTICS“",
"custom": "Prilagodi",
"off": "Isključeno"
}
}, },
"mode": { "mode": {
"name": "Mode" "name": "Mode",
"state": {
"standby": "U pripravnosti",
"sleep": "Spavanje",
"auto": "Automatski",
"allergens": "Alergeni",
"max": "Maks."
}
},
"steam_level": {
"state": {
"no_steam": "Bez vodene pare",
"cotton": "Pamuk",
"delicate": "Osetljivi materijali",
"synthetic": "Sintetika"
},
"name": "Nivo pare"
},
"dirt_level": {
"state": {
"little": "Malo",
"normal": "Normalno",
"very": "Veoma",
"unknown": "unknown"
},
"name": "Nivo zaprljanosti"
} }
}, },
"switch": { "switch": {
@ -1725,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": {
@ -1857,6 +1922,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Nivo polena u vazduhu" "name": "Nivo polena u vazduhu"
},
"aroma_time_on": {
"name": "Difuzor (UKLJUČENO)"
},
"aroma_time_off": {
"name": "Difuzor (ISKLJUČENO)"
} }
}, },
"climate": { "climate": {

View File

@ -808,7 +808,13 @@
"name": "Buhar Seviyesi" "name": "Buhar Seviyesi"
}, },
"dirt_level": { "dirt_level": {
"name": "Kir seviyesi" "name": "Kir seviyesi",
"state": {
"little": "Az",
"normal": "Normal",
"very": "Çok",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "Gecikmeli Başlatma" "name": "Gecikmeli Başlatma"
@ -860,6 +866,27 @@
}, },
"voc": { "voc": {
"name": "Gaz (VOC)" "name": "Gaz (VOC)"
},
"steam_level": {
"state": {
"no_steam": "Buhar yok",
"cotton": "Pamuk",
"delicate": "Hassas",
"synthetic": "Synthetic"
},
"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": {
@ -1608,10 +1635,42 @@
"name": "Kalan süre" "name": "Kalan süre"
}, },
"diffuser": { "diffuser": {
"name": "Difüzör" "name": "Difüzör",
"state": {
"soft": "Yumuşak",
"mid": "Orta",
"h_biotics": "H-BIOTICS",
"custom": "Özelleştir",
"off": "Kapalı"
}
}, },
"mode": { "mode": {
"name": "Mode" "name": "Mode",
"state": {
"standby": "Beklemede",
"sleep": "Uyku",
"auto": "Otomatik",
"allergens": "Alerjenler",
"max": "Maks"
}
},
"steam_level": {
"state": {
"no_steam": "Buhar yok",
"cotton": "Pamuk",
"delicate": "Hassas",
"synthetic": "Synthetic"
},
"name": "Buhar Seviyesi"
},
"dirt_level": {
"state": {
"little": "Az",
"normal": "Normal",
"very": "Çok",
"unknown": "unknown"
},
"name": "Kir seviyesi"
} }
}, },
"switch": { "switch": {
@ -1725,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": {
@ -1857,6 +1922,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "Polen seviyesi" "name": "Polen seviyesi"
},
"aroma_time_on": {
"name": "Difüzör (AÇIK)"
},
"aroma_time_off": {
"name": "Difüzör (KAPALI)"
} }
}, },
"climate": { "climate": {

View File

@ -808,7 +808,13 @@
"name": "蒸汽档位" "name": "蒸汽档位"
}, },
"dirt_level": { "dirt_level": {
"name": "脏污程度" "name": "脏污程度",
"state": {
"little": "少量",
"normal": "正常",
"very": "非常",
"unknown": "unknown"
}
}, },
"delay_time": { "delay_time": {
"name": "延时启动" "name": "延时启动"
@ -860,6 +866,27 @@
}, },
"voc": { "voc": {
"name": "气体VOC)" "name": "气体VOC)"
},
"steam_level": {
"state": {
"no_steam": "无蒸汽",
"cotton": "棉布",
"delicate": "精致衣物",
"synthetic": "Synthetic"
},
"name": "蒸汽档位"
},
"filter_cleaning": {
"name": "滤网清洁"
},
"filter_life": {
"name": "过滤器寿命"
},
"air_quality": {
"name": "空气质量"
},
"fan_speed": {
"name": "风扇速度"
} }
}, },
"select": { "select": {
@ -1608,10 +1635,42 @@
"name": "剩余时间" "name": "剩余时间"
}, },
"diffuser": { "diffuser": {
"name": "扩散器" "name": "扩散器",
"state": {
"soft": "“软”程序",
"mid": "中",
"h_biotics": "H-BIOTICS",
"custom": "定制",
"off": "关闭"
}
}, },
"mode": { "mode": {
"name": "Mode" "name": "Mode",
"state": {
"standby": "待机",
"sleep": "睡眠",
"auto": "自动",
"allergens": "过敏原",
"max": "最大"
}
},
"steam_level": {
"state": {
"no_steam": "无蒸汽",
"cotton": "棉布",
"delicate": "精致衣物",
"synthetic": "Synthetic"
},
"name": "蒸汽档位"
},
"dirt_level": {
"state": {
"little": "少量",
"normal": "正常",
"very": "非常",
"unknown": "unknown"
},
"name": "脏污程度"
} }
}, },
"switch": { "switch": {
@ -1725,6 +1784,12 @@
}, },
"touch_tone": { "touch_tone": {
"name": "按键音量" "name": "按键音量"
},
"hygiene": {
"name": "卫生增强"
},
"hood": {
"name": "机盖"
} }
}, },
"binary_sensor": { "binary_sensor": {
@ -1857,6 +1922,12 @@
}, },
"pollen_level": { "pollen_level": {
"name": "花粉水平" "name": "花粉水平"
},
"aroma_time_on": {
"name": "扩散器(开)"
},
"aroma_time_off": {
"name": "扩散器(关)"
} }
}, },
"climate": { "climate": {

24
info.md
View File

@ -28,17 +28,18 @@ _If the integration is not in the list, you need to clear the browser cache._
Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8). Support has been confirmed for these models, but many more will work. Please add already supported devices [with this form to complete the list](https://forms.gle/bTSD8qFotdZFytbf8).
| | **Haier** | **Hoover** | **Candy** | | | **Haier** | **Hoover** | **Candy** |
|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| |---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------|
| **Washing Machine** | HW90-B14TEAM5 <br/> HW100-B14959U1 <br/> HW 410AMBCB/1-80 | H-WASH 500 <br/> H7W4 48MBC-S <br/> | CO4 107T1/2-07 <br/> CBWO49TWME-S <br/> RO44 1286DWMC4-07 <br/> HW 68AMC/1-80 <br/> HWPD 69AMBC/1-S | | **Washing Machine** | HW80-B14959TU1DE <br/> HW90-B14TEAM5 <br/> HW100-B14959U1 | H-WASH 500 <br/> H7W4 48MBC-S <br/> HW 410AMBCB/1-80 | CO4 107T1/2-07 <br/> CBWO49TWME-S <br/> RO44 1286DWMC4-07 <br/> HW 68AMC/1-80 <br/> HWPD 69AMBC/1-S |
| **Tumble Dryer** | HD80-A3959 | H-DRY 500 <br/> H9A3TCBEXS-S <br/> HLE C10DCE-80 <br/> NDE H10A2TCE-80 <br/> NDE H9A2TSBEXS-S <br/> NDPHY10A2TCBEXSS | BCTDH7A1TE <br/> CSOE C10DE-80 <br/> ROE H9A3TCEX-S | | **Tumble Dryer** | HD80-A3959 | H-DRY 500 <br/> H9A3TCBEXS-S <br/> HLE C10DCE-80 <br/> H5WPB447AMBC/1-S <br/> NDE H10A2TCE-80 <br/> NDE H9A2TSBEXS-S <br/> NDPHY10A2TCBEXSS | BCTDH7A1TE <br/> CSOE C10DE-80 <br/> ROE H9A3TCEX-S |
| **Washer Dryer** | HWD100-B14979 | 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/> AS20HPL1HRA <br/> AS25PBAHRA <br/> AS25S2SF1FA-WH <br/> AS25TADHRA-2 <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 | | |
| **Wine Cellar** | HWS247FDU1 | | | | **Wine Cellar** | HWS247FDU1 | | |
| **Air Purifier** | | HHP30C011 <br/> HHP50CA001 <br/> HHP50CA011 | |
| Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data). <br/>This helps us to develop new features and not to break compatibility in newer versions. | | Please add your appliances data to our [hon-test-data collection](https://github.com/Andre0512/hon-test-data). <br/>This helps us to develop new features and not to break compatibility in newer versions. |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
@ -65,6 +66,19 @@ Translation of internal names like programs are available for all languages whic
* 🇪🇸 Spanish * 🇪🇸 Spanish
* 🇹🇷 Turkish * 🇹🇷 Turkish
## Compatiblity
Haier offers different apps for different markets. Some appliances are compatible with more than one app. This integration only supports appliances that can be controlled via hOn. Please download the hOn app and check compatibilty before you open an issue.
The apps on this (incomplete) list have been requested so far:
| App | Main Market | Supported | Alternative |
|-----------------|---------------|-----------------------------------------|---------------------------------------------------------------------------------|
| Haier hOn | Europe | :heavy_check_mark: | |
| Candy simply-Fi | Europe | :grey_question: (only newer appliances) | [ofalvai/home-assistant-candy](https://github.com/ofalvai/home-assistant-candy) |
| Hoover Wizard | Europe | :grey_question: (only newer appliances) | |
| Haier Uhome | China | :x: | [banto6/haier](https://github.com/banto6/haier) |
| Haier U+ | China | :x: | |
| GE SmartHQ | North America | :x: | [simbaja/ha_gehome](https://github.com/simbaja/ha_gehome) |
## Examples ## Examples
### Washing Machine ### Washing Machine
![washing_machine.png](assets/washing_machine.png) ![washing_machine.png](assets/washing_machine.png)

View File

@ -53,7 +53,7 @@ for entity_type, appliances in entities.items():
if entity.key.startswith("settings") if entity.key.startswith("settings")
or isinstance(entity, HonSwitchEntityDescription) or isinstance(entity, HonSwitchEntityDescription)
or isinstance(entity, HonControlSwitchEntityDescription) or isinstance(entity, HonControlSwitchEntityDescription)
or entity_type in ["button", "climate"] or entity_type in ["button", "climate", "lock", "light", "fan"]
else "sensor" else "sensor"
) )
result.setdefault(appliance, {}).setdefault( result.setdefault(appliance, {}).setdefault(

View File

@ -85,6 +85,23 @@ AC_HUMAN_SENSE = {
"unknown": "unknown", "unknown": "unknown",
} }
AP_MACH_MODE = {
"standby": "AP.RUNNING_MODE.STANDBY",
"sleep": "AP.RUNNING_MODE.SLEEP",
"auto": "AP.RUNNING_MODE.AUTO",
"allergens": "AP.RUNNING_MODE.ALLERGENS",
"max": "AP.RUNNING_MODE.MAX",
}
AP_DIFFUSER_LEVEL = {
"off": "GLOBALS.GENERAL.OFF",
"soft": "AP.MODE_DIFFUSER.LEVEL_SOFT",
"mid": "AP.MODE_DIFFUSER.LEVEL_MID",
"h_biotics": "AP.MODE_DIFFUSER.LEVEL_H_BIOTICS",
"custom": "AP.MODE_DIFFUSER.LEVEL_CUSTOM",
}
REF_ZONES = { REF_ZONES = {
"fridge": "REF.ZONES.FRIDGE", "fridge": "REF.ZONES.FRIDGE",
"freezer": "REF.ZONES.FREEZER", "freezer": "REF.ZONES.FREEZER",
@ -100,6 +117,8 @@ SENSOR = {
"program_phases_td": TUMBLE_DRYER_PR_PHASE, "program_phases_td": TUMBLE_DRYER_PR_PHASE,
"program_phases_dw": DISHWASHER_PR_PHASE, "program_phases_dw": DISHWASHER_PR_PHASE,
"dry_levels": TUMBLE_DRYER_DRY_LEVEL, "dry_levels": TUMBLE_DRYER_DRY_LEVEL,
"dirt_level": DIRTY_LEVEL,
"steam_level": STEAM_LEVEL,
} }
SELECT = { SELECT = {
@ -107,6 +126,10 @@ SELECT = {
"eco_pilot": AC_HUMAN_SENSE, "eco_pilot": AC_HUMAN_SENSE,
"fan_mode": AC_FAN_MODE, "fan_mode": AC_FAN_MODE,
"ref_zones": REF_ZONES, "ref_zones": REF_ZONES,
"steam_level": STEAM_LEVEL,
"mode": AP_MACH_MODE,
"diffuser": AP_DIFFUSER_LEVEL,
"dirt_level": DIRTY_LEVEL,
} }
PROGRAMS = { PROGRAMS = {
@ -217,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",
@ -268,6 +293,8 @@ NAMES = {
"ref_zones": "IH.COMMON.COIL", "ref_zones": "IH.COMMON.COIL",
"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",
"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",
@ -280,7 +307,7 @@ NAMES = {
"duration": "WASHING_CMD&CTRL.DRAWER_PROGRAM_FILTERS.DURATION", "duration": "WASHING_CMD&CTRL.DRAWER_PROGRAM_FILTERS.DURATION",
"target_temperature": "IH.COOKING_DETAIL.TEMPERATURE_TARGETING", "target_temperature": "IH.COOKING_DETAIL.TEMPERATURE_TARGETING",
"spin_speed": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.SPINSPEED", "spin_speed": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.SPINSPEED",
"steam_leve": "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", "dirt_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.DIRTY_LEVEL",
"program_phases_wm": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE", "program_phases_wm": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE",
"program_phases_td": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE", "program_phases_td": "WASHING_CMD&CTRL.STATISTICS_GRAPHIC_INSTANT_CONSUMPTION.PHASE",
@ -324,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",
@ -335,10 +366,11 @@ NAMES = {
"rinse_iterations": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL.DRAWER_HEADER_RINSE", "rinse_iterations": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL.DRAWER_HEADER_RINSE",
"wash_time": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL.WASHING_TIME", "wash_time": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL.WASHING_TIME",
"dry_time": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_TIME", "dry_time": "WASHING_CMD&CTRL.DRAWER_CYCLE_DRYING.TAB_TIME",
"steam_level": "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.STEAM_LEVEL",
"freezer_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FREEZER"], "freezer_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FREEZER"],
"fridge_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FRIDGE"], "fridge_temp_sel": ["OV.COMMON.GOAL_TEMPERATURE", "REF.ZONES.FRIDGE"],
"pollen_level": "AP.AIR_QUALITY.POLLEN_LEVEL", "pollen_level": "AP.AIR_QUALITY.POLLEN_LEVEL",
"aroma_time_on": "AP.TITLES.AROMA_ON",
"aroma_time_off": "AP.TITLES.AROMA_OFF",
}, },
"climate": { "climate": {
"air_conditioner": "GLOBALS.APPLIANCES_NAME.AC", "air_conditioner": "GLOBALS.APPLIANCES_NAME.AC",