[miio] add support for zhimi.airpurifier.vb2 Mi Air Purifier Pro H (#10183)

* [miio] add support for zhimi.airpurifier.vb2 Mi Air Purifier Pro H

close #10174 

* [miio] update modes to values visible in app
* [miio] cleanup and fix valuu mapping
* [miio] fix duration

Signed-off-by: Marcel Verpaalen <marcel@verpaalen.com>
pull/10249/head
Marcel 2021-02-26 19:58:56 +01:00 committed by GitHub
parent 522586156c
commit fdc22c0a4c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 1216 additions and 0 deletions

View File

@ -456,6 +456,7 @@ Currently the miio binding supports more than 270 different models.
| Mi Air Purifier v5 | miio:basic | [zhimi.airpurifier.v5](#zhimi-airpurifier-v5) | Yes | |
| Mi Air Purifier Pro v6 | miio:basic | [zhimi.airpurifier.v6](#zhimi-airpurifier-v6) | Yes | |
| Mi Air Purifier Pro v7 | miio:basic | [zhimi.airpurifier.v7](#zhimi-airpurifier-v7) | Yes | |
| Mi Air Purifier Pro H | miio:basic | [zhimi.airpurifier.vb2](#zhimi-airpurifier-vb2) | Yes | |
| Mi Air Purifier virtual | miio:unsupported | zhimi.airpurifier.virtual | No | |
| Mi Air Purifier 2(Virtual) | miio:unsupported | zhimi.airpurifier.vtl_m1 | No | |
| Mi Standing Fan | miio:basic | [zhimi.fan.sa1](#zhimi-fan-sa1) | Yes | |
@ -4248,6 +4249,62 @@ e.g. `openhab:send actionCommand 'upd_timer["1498595904821", "on"]'` would enabl
| temperature | Number:Temperature | Temperature | |
| childlock | Switch | Child Lock | |
### Mi Air Purifier Pro H (<a name="zhimi-airpurifier-vb2">zhimi.airpurifier.vb2</a>) Channels
| Channel | Type | Description | Comment |
|----------------------|----------------------|------------------------------------------|------------|
| actions | String | Actions | Value mapping ["button-toggle"="Toggle","button-toggle-mode"="Toggle Mode"] |
| fault | Number | Air Purifier - Device Fault | Value mapping ["0"="No faults","1"="m1_run","2"="m1_stuck","3"="no_sensor","4"="error_hum","5"="error_temp","6"="timer_error1","7"="timer_error2"] |
| on | Switch | Air Purifier - Power | |
| fan_level | Number | Air Purifier - Fan Level | Value mapping ["1"="Level1","2"="Level2","3"="Level3","0"="Sleep"] |
| mode | Number | Air Purifier - Mode | Value mapping ["0"="Auto","1"="Night","2"="Favourite","3"="Manual"] |
| pm2_5_density | Number | Environment - PM2 5 Density | |
| relative_humidity | Number:Dimensionless | Environment - Relative Humidity | |
| temperature | Number:Temperature | Environment - Temperature | |
| filter_life_level | Number:Dimensionless | Filter - Filter Life Level | |
| filter_used_time | Number:Time | Filter - Filter Used Time | |
| alarm | Switch | Alarm - Alarm | |
| volume | Number:Dimensionless | Alarm - Volume | |
| brightness | Number | Indicator Light - Brightness | Value mapping ["0"="brightest","1"="glimmer","2"="not bright"] |
| on1 | Switch | Indicator Light - Switch Status | |
| physical_controls_locked | Switch | Physical Control Locked - Physical Control Locked | |
| button_pressed | String | Button - Button_pressed | |
| filter_max_time | Number:Time | Filter Time - Filter Max Time | |
| filter_hour_used_debug | Number:Time | Filter Time - Filter Hour Used Debug | |
| m1_strong | Number | Motor Speed - M1 Strong | |
| m1_high | Number | Motor Speed - M1 High | |
| m1_med | Number | Motor Speed - M1 Med | |
| m1_med_l | Number | Motor Speed - M1 Med L | |
| m1_low | Number | Motor Speed - M1 Low | |
| m1_silent | Number | Motor Speed - M1 Silent | |
| m1_favorite | Number | Motor Speed - M1 Favorite | |
| motor1_speed | Number | Motor Speed - Motor1 Speed | |
| motor1_set_speed | Number | Motor Speed - Motor1 Set Speed | |
| favorite_level | Number | Motor Speed - Favorite Level | |
| use_time | Number:Time | Use Time - Use Time | |
| purify_volume | Number | Aqi - Purify Volume | |
| average_aqi | Number | Aqi - Average Aqi | |
| average_aqi_cnt | Number | Aqi - Average_aqi Read Times | |
| aqi_zone | String | Aqi - Aqi Zone | |
| sensor_state | Number | Aqi - Sensor State | Value mapping ["0"="waiting","1"="ready"] |
| aqi_goodh | Number | Aqi - Aqi Goodh | |
| aqi_runstate | Number | Aqi - Runstate | Value mapping ["0"="continue","1"="hold","2"="sleep"] |
| aqi_state | Number | Aqi - Aqi State | Value mapping ["0"="AQI_GOOD_L","1"="AQI_GOOD_H","2"="AQI_MID_L","3"="AQI_MID_H","4"="AQI_BAD_L","5"="AQI_BAD_H"] |
| rfid_tag | String | Rfid - Rfid Tag | |
| rfid_factory_id | String | Rfid - Rfid Factory Id | |
| rfid_product_id | String | Rfid - Rfid Product Id | |
| rfid_time | String | Rfid - Rfid Time | |
| rfid_serial_num | String | Rfid - Rfid Serial Num | |
| app_extra | Number | Others - App Extra | |
| main_channel | Number | Others - Main Channel | |
| slave_channel | Number | Others - Slave Channel | |
| cola | String | Others - Cola | |
| buttom_door | String | Others - Buttom Door | |
| reboot_cause | Number | Others - Reboot_cause | Value mapping ["0"="REASON_HW_BOOT","1"="REASON_USER_REBOOT","2"="REASON_UPDATE","3"="REASON_WDT"] |
| manual_level | Number | Others - Manual Level | Value mapping ["1"="level1","2"="level2","3"="level3"] |
| powertime | Number:duration | Others - Powertime | |
| country_code | Number | Others - Country Code | Value mapping ["91"="India","44"="UK","852"="Hong Kong","886"="Taiwan","82"="Korea"] |
### Mi Standing Fan (<a name="zhimi-fan-sa1">zhimi.fan.sa1</a>) Channels
| Channel | Type | Description | Comment |
@ -9149,6 +9206,65 @@ Number:Temperature temperature "Temperature" (G_airpurifier) {channel="miio:basi
Switch childlock "Child Lock" (G_airpurifier) {channel="miio:basic:airpurifier:childlock"}
```
### Mi Air Purifier Pro H (zhimi.airpurifier.vb2) item file lines
note: Autogenerated example. Replace the id (airpurifier) in the channel with your own. Replace `basic` with `generic` in the thing UID depending on how your thing was discovered.
```
Group G_airpurifier "Mi Air Purifier Pro H" <status>
String actions "Actions" (G_airpurifier) {channel="miio:basic:airpurifier:actions"}
Number fault "Air Purifier - Device Fault" (G_airpurifier) {channel="miio:basic:airpurifier:fault"}
Switch on "Air Purifier - Power" (G_airpurifier) {channel="miio:basic:airpurifier:on"}
Number fan_level "Air Purifier - Fan Level" (G_airpurifier) {channel="miio:basic:airpurifier:fan_level"}
Number mode "Air Purifier - Mode" (G_airpurifier) {channel="miio:basic:airpurifier:mode"}
Number pm2_5_density "Environment - PM2 5 Density" (G_airpurifier) {channel="miio:basic:airpurifier:pm2_5_density"}
Number:Dimensionless relative_humidity "Environment - Relative Humidity" (G_airpurifier) {channel="miio:basic:airpurifier:relative_humidity"}
Number:Temperature temperature "Environment - Temperature" (G_airpurifier) {channel="miio:basic:airpurifier:temperature"}
Number:Dimensionless filter_life_level "Filter - Filter Life Level" (G_airpurifier) {channel="miio:basic:airpurifier:filter_life_level"}
Number:Time filter_used_time "Filter - Filter Used Time" (G_airpurifier) {channel="miio:basic:airpurifier:filter_used_time"}
Switch alarm "Alarm - Alarm" (G_airpurifier) {channel="miio:basic:airpurifier:alarm"}
Number:Dimensionless volume "Alarm - Volume" (G_airpurifier) {channel="miio:basic:airpurifier:volume"}
Number brightness "Indicator Light - Brightness" (G_airpurifier) {channel="miio:basic:airpurifier:brightness"}
Switch on1 "Indicator Light - Switch Status" (G_airpurifier) {channel="miio:basic:airpurifier:on1"}
Switch physical_controls_locked "Physical Control Locked - Physical Control Locked" (G_airpurifier) {channel="miio:basic:airpurifier:physical_controls_locked"}
String button_pressed "Button - Button_pressed" (G_airpurifier) {channel="miio:basic:airpurifier:button_pressed"}
Number:Time filter_max_time "Filter Time - Filter Max Time" (G_airpurifier) {channel="miio:basic:airpurifier:filter_max_time"}
Number:Time filter_hour_used_debug "Filter Time - Filter Hour Used Debug" (G_airpurifier) {channel="miio:basic:airpurifier:filter_hour_used_debug"}
Number m1_strong "Motor Speed - M1 Strong" (G_airpurifier) {channel="miio:basic:airpurifier:m1_strong"}
Number m1_high "Motor Speed - M1 High" (G_airpurifier) {channel="miio:basic:airpurifier:m1_high"}
Number m1_med "Motor Speed - M1 Med" (G_airpurifier) {channel="miio:basic:airpurifier:m1_med"}
Number m1_med_l "Motor Speed - M1 Med L" (G_airpurifier) {channel="miio:basic:airpurifier:m1_med_l"}
Number m1_low "Motor Speed - M1 Low" (G_airpurifier) {channel="miio:basic:airpurifier:m1_low"}
Number m1_silent "Motor Speed - M1 Silent" (G_airpurifier) {channel="miio:basic:airpurifier:m1_silent"}
Number m1_favorite "Motor Speed - M1 Favorite" (G_airpurifier) {channel="miio:basic:airpurifier:m1_favorite"}
Number motor1_speed "Motor Speed - Motor1 Speed" (G_airpurifier) {channel="miio:basic:airpurifier:motor1_speed"}
Number motor1_set_speed "Motor Speed - Motor1 Set Speed" (G_airpurifier) {channel="miio:basic:airpurifier:motor1_set_speed"}
Number favorite_level "Motor Speed - Favorite Level" (G_airpurifier) {channel="miio:basic:airpurifier:favorite_level"}
Number:Time use_time "Use Time - Use Time" (G_airpurifier) {channel="miio:basic:airpurifier:use_time"}
Number purify_volume "Aqi - Purify Volume" (G_airpurifier) {channel="miio:basic:airpurifier:purify_volume"}
Number average_aqi "Aqi - Average Aqi" (G_airpurifier) {channel="miio:basic:airpurifier:average_aqi"}
Number average_aqi_cnt "Aqi - Average_aqi Read Times" (G_airpurifier) {channel="miio:basic:airpurifier:average_aqi_cnt"}
String aqi_zone "Aqi - Aqi Zone" (G_airpurifier) {channel="miio:basic:airpurifier:aqi_zone"}
Number sensor_state "Aqi - Sensor State" (G_airpurifier) {channel="miio:basic:airpurifier:sensor_state"}
Number aqi_goodh "Aqi - Aqi Goodh" (G_airpurifier) {channel="miio:basic:airpurifier:aqi_goodh"}
Number aqi_runstate "Aqi - Runstate" (G_airpurifier) {channel="miio:basic:airpurifier:aqi_runstate"}
Number aqi_state "Aqi - Aqi State" (G_airpurifier) {channel="miio:basic:airpurifier:aqi_state"}
String rfid_tag "Rfid - Rfid Tag" (G_airpurifier) {channel="miio:basic:airpurifier:rfid_tag"}
String rfid_factory_id "Rfid - Rfid Factory Id" (G_airpurifier) {channel="miio:basic:airpurifier:rfid_factory_id"}
String rfid_product_id "Rfid - Rfid Product Id" (G_airpurifier) {channel="miio:basic:airpurifier:rfid_product_id"}
String rfid_time "Rfid - Rfid Time" (G_airpurifier) {channel="miio:basic:airpurifier:rfid_time"}
String rfid_serial_num "Rfid - Rfid Serial Num" (G_airpurifier) {channel="miio:basic:airpurifier:rfid_serial_num"}
Number app_extra "Others - App Extra" (G_airpurifier) {channel="miio:basic:airpurifier:app_extra"}
Number main_channel "Others - Main Channel" (G_airpurifier) {channel="miio:basic:airpurifier:main_channel"}
Number slave_channel "Others - Slave Channel" (G_airpurifier) {channel="miio:basic:airpurifier:slave_channel"}
String cola "Others - Cola" (G_airpurifier) {channel="miio:basic:airpurifier:cola"}
String buttom_door "Others - Buttom Door" (G_airpurifier) {channel="miio:basic:airpurifier:buttom_door"}
Number reboot_cause "Others - Reboot_cause" (G_airpurifier) {channel="miio:basic:airpurifier:reboot_cause"}
Number manual_level "Others - Manual Level" (G_airpurifier) {channel="miio:basic:airpurifier:manual_level"}
Number:duration powertime "Others - Powertime" (G_airpurifier) {channel="miio:basic:airpurifier:powertime"}
Number country_code "Others - Country Code" (G_airpurifier) {channel="miio:basic:airpurifier:country_code"}
```
### Mi Standing Fan (zhimi.fan.sa1) item file lines
note: Autogenerated example. Replace the id (fan) in the channel with your own. Replace `basic` with `generic` in the thing UID depending on how your thing was discovered.

View File

@ -340,6 +340,7 @@ public enum MiIoDevices {
ZHIMI_AIRPURIFIER_V5("zhimi.airpurifier.v5", "Mi Air Purifier v5", THING_TYPE_BASIC),
ZHIMI_AIRPURIFIER_V6("zhimi.airpurifier.v6", "Mi Air Purifier Pro v6", THING_TYPE_BASIC),
ZHIMI_AIRPURIFIER_V7("zhimi.airpurifier.v7", "Mi Air Purifier Pro v7", THING_TYPE_BASIC),
ZHIMI_AIRPURIFIER_VB2("zhimi.airpurifier.vb2", "Mi Air Purifier Pro H", THING_TYPE_BASIC),
ZHIMI_AIRPURIFIER_VIRTUAL("zhimi.airpurifier.virtual", "Mi Air Purifier virtual", THING_TYPE_UNSUPPORTED),
ZHIMI_AIRPURIFIER_VTL_M1("zhimi.airpurifier.vtl_m1", "Mi Air Purifier 2(Virtual)", THING_TYPE_UNSUPPORTED),
ZHIMI_FAN_SA1("zhimi.fan.sa1", "Mi Standing Fan", THING_TYPE_BASIC),