Add entites for air purifier #72

This commit is contained in:
Andre Basche 2023-06-21 00:59:00 +02:00
parent a181359faa
commit 78727e89cd
9 changed files with 225 additions and 50 deletions

View file

@ -14,9 +14,10 @@ Home Assistant integration for [Haier's mobile app hOn](https://hon-smarthome.co
- [Dish Washer](https://github.com/Andre0512/hon#dish-washer)
- [Air conditioner](https://github.com/Andre0512/hon#air-conditioner)
- [Fridge](https://github.com/Andre0512/hon#fridge)
- [Hob](https://github.com/Andre0512/hon#hob) [BETA]
- [Induction Hob](https://github.com/Andre0512/hon#induction-hob) [BETA]
- [Hood](https://github.com/Andre0512/hon#hood) [BETA]
- [Wine Cellar](https://github.com/Andre0512/hon#wine-cellar) [BETA]
- [Air Purifier](https://github.com/Andre0512/hon#air-purifier) [BETA]
## Installation
**Method 1:** [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Andre0512&repository=hon&category=integration)
@ -37,18 +38,18 @@ _If the integration is not in the list, you need to clear the browser cache._
## Supported Models
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** |
|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------|
| **Washing Machine** | HW90-B14TEAM5 <br/> HW100-B14959U1 | H-WASH 500 <br/> H7W4 48MBC-S | CO4 107T1/2-07 <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 |
| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S |
| **Oven** | HWO60SM2F3XH | HSOT3161WG | |
| **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 | | |
| **Fridge** | HFW7720ENMB | | CCE4T620EWU |
| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI |
| **Hood** | HADG6DS46BWIFI | | |
| **Wine Cellar** | HWS247FDU1 | | |
| | **Haier** | **Hoover** | **Candy** |
|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------|
| **Washing Machine** | HW90-B14TEAM5 <br/> HW100-B14959U1 | H-WASH 500 <br/> H7W4 48MBC-S | 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 |
| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S |
| **Oven** | HWO60SM2F3XH | HSOT3161WG | |
| **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 | | |
| **Fridge** | HFW7720ENMB | | CCE4T620EWU |
| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI |
| **Hood** | HADG6DS46BWIFI | | |
| **Wine Cellar** | HWS247FDU1 | | |
## Supported Languages
Translation of internal names like programs are available for all languages which are official supported by the hOn app:
@ -137,7 +138,7 @@ For every device exists a hidden button which can be used to log all infos of yo
## Appliance Features
### Air conditioner
### Air Conditioner
#### Controls
| Name | Icon | Entity | Key |
| --- | --- | --- | --- |
@ -171,7 +172,36 @@ For every device exists a hidden button which can be used to log all infos of yo
| Program | `play` | `sensor` | `programName` |
| Selected Temperature | `thermometer` | `sensor` | `tempSel` |
### Dish washer
### Air Purifier
#### Controls
| Name | Icon | Entity | Key |
| --- | --- | --- | --- |
| Aroma Time Off | `thermometer` | `number` | `settings.aromaTimeOff` |
| Aroma Time On | `thermometer` | `number` | `settings.aromaTimeOn` |
| Diffuser Level | | `select` | `settings.aromaStatus` |
| Light status | `lightbulb` | `number` | `settings.lightStatus` |
| Lock Status | | `switch` | `lockStatus` |
| Mode | `run` | `select` | `settings.machMode` |
| Pollen Level | | `number` | `settings.pollenLevel` |
| Touch Tone | | `switch` | `touchToneStatus` |
#### Sensors
| Name | Icon | Entity | Key |
| --- | --- | --- | --- |
| Air Quality | | `sensor` | `airQuality` |
| CO Level | | `sensor` | `coLevel` |
| Error | `math-log` | `sensor` | `errors` |
| Humidity | | `sensor` | `humidityIndoor` |
| Main Filter Status | | `sensor` | `mainFilterStatus` |
| On | `power-cycle` | `binary_sensor` | `attributes.parameters.onOffStatus` |
| Pre Filter Status | | `sensor` | `preFilterStatus` |
| Temperature | | `sensor` | `temp` |
| Total Work Time | | `sensor` | `totalWorkTime` |
| VOC | | `sensor` | `vocValueIndoor` |
| Wind Speed | | `sensor` | `windSpeed` |
| pm10 | | `sensor` | `pm10ValueIndoor` |
| pm2p5 | | `sensor` | `pm2p5ValueIndoor` |
### Dish Washer
#### Controls
| Name | Icon | Entity | Key |
| --- | --- | --- | --- |
@ -217,10 +247,6 @@ For every device exists a hidden button which can be used to log all infos of yo
| Start Program | `hvac` | `button` | `startProgram` |
| Stop Program | `hvac-off` | `button` | `stopProgram` |
| Wind Speed | | `fan` | `settings.windSpeed` |
#### Configs
| Name | Icon | Entity | Key |
| --- | --- | --- | --- |
| Light status | `lightbulb` | `number` | `startProgram.lightStatus` |
#### Sensors
| Name | Icon | Entity | Key |
| --- | --- | --- | --- |
@ -231,13 +257,14 @@ For every device exists a hidden button which can be used to log all infos of yo
| Filter Cleaning Status | | `sensor` | `filterCleaningStatus` |
| Last Work Time | `clock-start` | `sensor` | `lastWorkTime` |
| Light Status | `lightbulb` | `sensor` | `lightStatus` |
| Light status | `lightbulb` | `number` | `startProgram.lightStatus` |
| Mach Mode | | `sensor` | `machMode` |
| On / Off Status | `lightbulb` | `sensor` | `onOffStatus` |
| Quick Delay Time Status | | `sensor` | `quickDelayTimeStatus` |
| RGB Light Color | `lightbulb` | `sensor` | `rgbLightColors` |
| RGB Light Status | `lightbulb` | `sensor` | `rgbLightStatus` |
### Hob
### Induction Hob
#### Controls
| Name | Icon | Entity | Key |
| --- | --- | --- | --- |
@ -321,7 +348,7 @@ For every device exists a hidden button which can be used to log all infos of yo
| Temperature Freezer | `snowflake-thermometer` | `sensor` | `tempZ2` |
| Temperature Fridge | `thermometer` | `sensor` | `tempZ1` |
### Tumble dryer
### Tumble Dryer
#### Controls
| Name | Icon | Entity | Key |
| --- | --- | --- | --- |
@ -380,7 +407,7 @@ For every device exists a hidden button which can be used to log all infos of yo
| Temperature | `thermometer` | `sensor` | `temp` |
| Temperature 2 | `thermometer` | `sensor` | `tempZ2` |
### Washer dryer
### Washer Dryer
#### Controls
| Name | Icon | Entity | Key |
| --- | --- | --- | --- |
@ -455,7 +482,7 @@ For every device exists a hidden button which can be used to log all infos of yo
| Total Wash Cycle | `counter` | `sensor` | `totalWashCycle` |
| Total Water | | `sensor` | `totalWaterUsed` |
### Washing machine
### Washing Machine
#### Controls
| Name | Icon | Entity | Key |
| --- | --- | --- | --- |

View file

@ -242,6 +242,16 @@ BINARY_SENSORS: dict[str, tuple[HonBinarySensorEntityDescription, ...]] = {
translation_key="holiday_mode",
),
),
"AP": (
HonBinarySensorEntityDescription(
key="attributes.parameters.onOffStatus",
name="On",
device_class=BinarySensorDeviceClass.RUNNING,
on_value="1",
icon="mdi:power-cycle",
translation_key="on",
),
),
}

View file

@ -188,3 +188,18 @@ AC_HUMAN_SENSE = {
"2": "follow_touch",
"3": "unknown",
}
AP_MACH_MODE = {
"0": "standby",
"1": "sleep",
"2": "auto",
"3": "allergens",
"4": "max",
}
AP_DIFFUSER_LEVEL = {
"1": "soft",
"2": "mid",
"3": "h_biotics",
"4": "custom",
}

View file

@ -167,7 +167,29 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = {
key="startProgram.lightStatus",
name="Light status",
icon="mdi:lightbulb",
entity_category=EntityCategory.CONFIG,
),
),
"AP": (
HonNumberEntityDescription(
key="settings.aromaTimeOn",
name="Aroma Time On",
icon="mdi:thermometer",
native_unit_of_measurement=UnitOfTime.SECONDS,
),
HonNumberEntityDescription(
key="settings.aromaTimeOff",
name="Aroma Time Off",
icon="mdi:thermometer",
native_unit_of_measurement=UnitOfTime.SECONDS,
),
HonNumberEntityDescription(
key="settings.lightStatus",
name="Light status",
icon="mdi:lightbulb",
),
HonNumberEntityDescription(
key="settings.pollenLevel",
name="Pollen Level",
),
),
}
@ -206,7 +228,7 @@ class HonNumberEntity(HonEntity, NumberEntity):
@property
def native_value(self) -> float | None:
return self._device.get(self.entity_description.key)
return self._device.get(self.entity_description.key.split(".")[-1])
async def async_set_native_value(self, value: float) -> None:
setting = self._device.settings[self.entity_description.key]
@ -223,7 +245,7 @@ class HonNumberEntity(HonEntity, NumberEntity):
self._attr_native_max_value = setting.max
self._attr_native_min_value = setting.min
self._attr_native_step = setting.step
self._attr_native_value = setting.value
self._attr_native_value = self.native_value
if update:
self.async_write_ha_state()

View file

@ -133,6 +133,19 @@ SELECTS = {
translation_key="ref_zones",
),
),
"AP": (
HonSelectEntityDescription(
key="settings.aromaStatus",
name="Diffuser Level",
option_list=const.AP_DIFFUSER_LEVEL,
),
HonSelectEntityDescription(
key="settings.machMode",
name="Mode",
icon="mdi:run",
option_list=const.AP_MACH_MODE,
),
),
}
SELECTS["WD"] = unique_entities(SELECTS["WM"], SELECTS["TD"])

View file

@ -9,7 +9,12 @@ from homeassistant.components.sensor import (
SensorEntityDescription,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import PERCENTAGE
from homeassistant.const import (
PERCENTAGE,
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
CONCENTRATION_PARTS_PER_BILLION,
CONCENTRATION_PARTS_PER_MILLION,
)
from homeassistant.const import (
REVOLUTIONS_PER_MINUTE,
UnitOfEnergy,
@ -637,6 +642,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = {
name="Temperature",
icon="mdi:thermometer",
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.TEMPERATURE,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
translation_key="temperature",
),
@ -673,6 +679,7 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = {
icon="mdi:thermometer",
state_class=SensorStateClass.MEASUREMENT,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
translation_key="temperature",
),
HonSensorEntityDescription(
@ -683,6 +690,76 @@ SENSORS: dict[str, tuple[SensorEntityDescription, ...]] = {
translation_key="programs_wc",
),
),
"AP": (
HonSensorEntityDescription(
key="errors", name="Error", icon="mdi:math-log", translation_key="errors"
),
HonSensorEntityDescription(
key="mainFilterStatus",
name="Main Filter Status",
native_unit_of_measurement=PERCENTAGE,
),
HonSensorEntityDescription(
key="preFilterStatus",
name="Pre Filter Status",
native_unit_of_measurement=PERCENTAGE,
),
HonSensorEntityDescription(
key="totalWorkTime",
name="Total Work Time",
native_unit_of_measurement=UnitOfTime.MINUTES,
device_class=SensorDeviceClass.DURATION,
),
HonSensorEntityDescription(
key="coLevel",
name="CO Level",
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.CO,
native_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION,
),
HonSensorEntityDescription(
key="pm10ValueIndoor",
name="pm10",
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.PM10,
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
),
HonSensorEntityDescription(
key="pm2p5ValueIndoor",
name="pm2p5",
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.PM25,
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
),
HonSensorEntityDescription(
key="vocValueIndoor",
name="VOC",
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
native_unit_of_measurement=CONCENTRATION_PARTS_PER_BILLION,
),
HonSensorEntityDescription(
key="humidityIndoor",
name="Humidity",
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.HUMIDITY,
native_unit_of_measurement=PERCENTAGE,
translation_key="humidity",
),
HonSensorEntityDescription(
key="temp",
name="Temperature",
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.TEMPERATURE,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
translation_key="temperature",
),
HonSensorEntityDescription(key="windSpeed", name="Wind Speed"),
HonSensorEntityDescription(
key="airQuality",
name="Air Quality",
),
),
}
SENSORS["WD"] = unique_entities(SENSORS["WM"], SENSORS["TD"])

View file

@ -333,6 +333,16 @@ SWITCHES: dict[str, tuple[HonSwitchEntityDescription, ...]] = {
key="lightStatus", name="Light", icon="mdi:lightbulb"
),
),
"AP": (
HonSwitchEntityDescription(
key="touchToneStatus",
name="Touch Tone",
),
HonSwitchEntityDescription(
key="lockStatus",
name="Lock Status",
),
),
}
SWITCHES["WD"] = unique_entities(SWITCHES["WD"], SWITCHES["WM"])

29
info.md
View file

@ -10,11 +10,12 @@ Support for home appliances of [Haier's mobile app hOn](https://hon-smarthome.co
- [Washer Dryer](https://github.com/Andre0512/hon#washer-dryer)
- [Oven](https://github.com/Andre0512/hon#oven)
- [Dish Washer](https://github.com/Andre0512/hon#dish-washer)
- [Air conditioner](https://github.com/Andre0512/hon#air-conditioner)
- [Air Conditioner](https://github.com/Andre0512/hon#air-conditioner)
- [Fridge](https://github.com/Andre0512/hon#fridge)
- [Hob](https://github.com/Andre0512/hon#hob) [BETA]
- [Induction Hob](https://github.com/Andre0512/hon#induction-hob) [BETA]
- [Hood](https://github.com/Andre0512/hon#hood) [BETA]
- [Wine Cellar](https://github.com/Andre0512/hon#wine-cellar) [BETA]
- [Air Purifier](https://github.com/Andre0512/hon#air-purifier) [BETA]
## Configuration
@ -26,18 +27,18 @@ _If the integration is not in the list, you need to clear the browser cache._
## Supported Models
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** |
|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------|
| **Washing Machine** | HW90-B14TEAM5 <br/> HW100-B14959U1 | H-WASH 500 <br/> H7W4 48MBC-S | CO4 107T1/2-07 <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 |
| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S |
| **Oven** | HWO60SM2F3XH | HSOT3161WG | |
| **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 | | |
| **Fridge** | HFW7720ENMB | | CCE4T620EWU |
| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI |
| **Hood** | HADG6DS46BWIFI | | |
| **Wine Cellar** | HWS247FDU1 | | |
| | **Haier** | **Hoover** | **Candy** |
|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------|
| **Washing Machine** | HW90-B14TEAM5 <br/> HW100-B14959U1 | H-WASH 500 <br/> H7W4 48MBC-S | 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 |
| **Washer Dryer** | HWD100-B14979 | HWPS4954DAMR-11 | RPW41066BWMR/1-S |
| **Oven** | HWO60SM2F3XH | HSOT3161WG | |
| **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 | | |
| **Fridge** | HFW7720ENMB | | CCE4T620EWU |
| **Hob** | HA2MTSJ68MC | | CIS633SCTTWIFI |
| **Hood** | HADG6DS46BWIFI | | |
| **Wine Cellar** | HWS247FDU1 | | |
## Supported Languages
Translation of internal names like programs are available for all languages which are official supported by the hOn app:

View file

@ -22,21 +22,21 @@ from custom_components.hon.switch import (
)
APPLIANCES = {
"AC": "Air conditioner",
"AP": "Air purifier",
"AS": "Air scanner",
"DW": "Dish washer",
"AC": "Air Conditioner",
"AP": "Air Purifier",
"AS": "Air Scanner",
"DW": "Dish Washer",
"HO": "Hood",
"IH": "Hob",
"IH": "Induction Hob",
"MW": "Microwave",
"OV": "Oven",
"REF": "Fridge",
"RVC": "Robot vacuum cleaner",
"TD": "Tumble dryer",
"RVC": "Robot Vacuum Cleaner",
"TD": "Tumble Dryer",
"WC": "Wine Cellar",
"WD": "Washer dryer",
"WD": "Washer Dryer",
"WH": "Water Heater",
"WM": "Washing machine",
"WM": "Washing Machine",
}
ENTITY_CATEGORY_SORT = ["control", "config", "sensor"]