diff --git a/bundles/org.openhab.binding.miio/README.md b/bundles/org.openhab.binding.miio/README.md
index eb857bfe5..99228dab5 100644
--- a/bundles/org.openhab.binding.miio/README.md
+++ b/bundles/org.openhab.binding.miio/README.md
@@ -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 (zhimi.airpurifier.vb2) 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 (zhimi.fan.sa1) 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"
+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.
diff --git a/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/MiIoDevices.java b/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/MiIoDevices.java
index e602b2bbc..64c031648 100644
--- a/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/MiIoDevices.java
+++ b/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/MiIoDevices.java
@@ -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),
diff --git a/bundles/org.openhab.binding.miio/src/main/resources/database/zhimi.airpurifier.vb2-miot.json b/bundles/org.openhab.binding.miio/src/main/resources/database/zhimi.airpurifier.vb2-miot.json
new file mode 100644
index 000000000..4e20dcae1
--- /dev/null
+++ b/bundles/org.openhab.binding.miio/src/main/resources/database/zhimi.airpurifier.vb2-miot.json
@@ -0,0 +1,1099 @@
+{
+ "deviceMapping": {
+ "id": [
+ "zhimi.airpurifier.vb2"
+ ],
+ "propertyMethod": "get_properties",
+ "maxProperties": 3,
+ "channels": [
+ {
+ "property": "",
+ "friendlyName": "Actions",
+ "channel": "actions",
+ "type": "String",
+ "stateDescription": {
+ "options": [
+ {
+ "value": "button-toggle",
+ "label": "Toggle"
+ },
+ {
+ "value": "button-toggle-mode",
+ "label": "Toggle Mode"
+ }
+ ]
+ },
+ "actions": [
+ {
+ "command": "action",
+ "parameterType": "EMPTY",
+ "siid": 8,
+ "aiid": 1,
+ "condition": {
+ "name": "matchValue",
+ "parameters": [
+ {
+ "matchValue": "button-toggle"
+ }
+ ]
+ }
+ },
+ {
+ "command": "action",
+ "parameterType": "EMPTY",
+ "siid": 8,
+ "aiid": 2,
+ "condition": {
+ "name": "matchValue",
+ "parameters": [
+ {
+ "matchValue": "button-toggle-mode"
+ }
+ ]
+ }
+ }
+ ],
+ "readmeComment": "Value mapping [\"button-toggle\"\u003d\"Toggle\",\"button-toggle-mode\"\u003d\"Toggle Mode\"]"
+ },
+ {
+ "property": "fault",
+ "siid": 2,
+ "piid": 1,
+ "friendlyName": "Air Purifier - Device Fault",
+ "channel": "fault",
+ "type": "Number",
+ "stateDescription": {
+ "readOnly": true,
+ "options": [
+ {
+ "value": "0",
+ "label": "No faults"
+ },
+ {
+ "value": "1",
+ "label": "m1_run"
+ },
+ {
+ "value": "2",
+ "label": "m1_stuck"
+ },
+ {
+ "value": "3",
+ "label": "no_sensor"
+ },
+ {
+ "value": "4",
+ "label": "error_hum"
+ },
+ {
+ "value": "5",
+ "label": "error_temp"
+ },
+ {
+ "value": "6",
+ "label": "timer_error1"
+ },
+ {
+ "value": "7",
+ "label": "timer_error2"
+ }
+ ]
+ },
+ "refresh": true,
+ "actions": [],
+ "readmeComment": "Value mapping [\"0\"\u003d\"No faults\",\"1\"\u003d\"m1_run\",\"2\"\u003d\"m1_stuck\",\"3\"\u003d\"no_sensor\",\"4\"\u003d\"error_hum\",\"5\"\u003d\"error_temp\",\"6\"\u003d\"timer_error1\",\"7\"\u003d\"timer_error2\"]"
+ },
+ {
+ "property": "on",
+ "siid": 2,
+ "piid": 2,
+ "friendlyName": "Air Purifier - Power",
+ "channel": "on",
+ "type": "Switch",
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "ONOFFBOOL"
+ }
+ ]
+ },
+ {
+ "property": "fan-level",
+ "siid": 2,
+ "piid": 4,
+ "friendlyName": "Air Purifier - Fan Level",
+ "channel": "fan_level",
+ "type": "Number",
+ "stateDescription": {
+ "options": [
+ {
+ "value": "1",
+ "label": "Level1"
+ },
+ {
+ "value": "2",
+ "label": "Level2"
+ },
+ {
+ "value": "3",
+ "label": "Level3"
+ },
+ {
+ "value": "0",
+ "label": "Sleep"
+ }
+ ]
+ },
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "NUMBER"
+ }
+ ],
+ "readmeComment": "Value mapping [\"1\"\u003d\"Level1\",\"2\"\u003d\"Level2\",\"3\"\u003d\"Level3\",\"0\"\u003d\"Sleep\"]"
+ },
+ {
+ "property": "mode",
+ "siid": 2,
+ "piid": 5,
+ "friendlyName": "Air Purifier - Mode",
+ "channel": "mode",
+ "type": "Number",
+ "stateDescription": {
+ "options": [
+ {
+ "value": "0",
+ "label": "Auto"
+ },
+ {
+ "value": "1",
+ "label": "Night"
+ },
+ {
+ "value": "2",
+ "label": "Favourite"
+ },
+ {
+ "value": "3",
+ "label": "Manual"
+ }
+ ]
+ },
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "NUMBER"
+ }
+ ],
+ "readmeComment": "Value mapping [\"0\"\u003d\"Auto\",\"1\"\u003d\"Night\",\"2\"\u003d\"Favourite\",\"3\"\u003d\"Manual\"]"
+ },
+ {
+ "property": "pm2.5-density",
+ "siid": 3,
+ "piid": 6,
+ "friendlyName": "Environment - PM2 5 Density",
+ "channel": "pm2_5_density",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 600,
+ "step": 1,
+ "pattern": "%.1f",
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "relative-humidity",
+ "siid": 3,
+ "piid": 7,
+ "friendlyName": "Environment - Relative Humidity",
+ "channel": "relative_humidity",
+ "type": "Number:Dimensionless",
+ "unit": "percentage",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 100,
+ "step": 1,
+ "pattern": "%.0f %unit%",
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "temperature",
+ "siid": 3,
+ "piid": 8,
+ "friendlyName": "Environment - Temperature",
+ "channel": "temperature",
+ "type": "Number:Temperature",
+ "unit": "CELCIUS",
+ "stateDescription": {
+ "minimum": -40,
+ "maximum": 125,
+ "pattern": "%.1f",
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "filter-life-level",
+ "siid": 4,
+ "piid": 3,
+ "friendlyName": "Filter - Filter Life Level",
+ "channel": "filter_life_level",
+ "type": "Number:Dimensionless",
+ "unit": "percentage",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 100,
+ "step": 1,
+ "pattern": "%.0f %unit%",
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "filter-used-time",
+ "siid": 4,
+ "piid": 5,
+ "friendlyName": "Filter - Filter Used Time",
+ "channel": "filter_used_time",
+ "type": "Number:Time",
+ "unit": "hours",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 18000,
+ "step": 1,
+ "pattern": "%.0f %unit%",
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "alarm",
+ "siid": 5,
+ "piid": 1,
+ "friendlyName": "Alarm - Alarm",
+ "channel": "alarm",
+ "type": "Switch",
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "ONOFFBOOL"
+ }
+ ]
+ },
+ {
+ "property": "volume",
+ "siid": 5,
+ "piid": 2,
+ "friendlyName": "Alarm - Volume",
+ "channel": "volume",
+ "type": "Number:Dimensionless",
+ "unit": "percentage",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 100,
+ "step": 1,
+ "pattern": "%.0f %unit%"
+ },
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "NUMBER"
+ }
+ ]
+ },
+ {
+ "property": "brightness",
+ "siid": 6,
+ "piid": 1,
+ "friendlyName": "Indicator Light - Brightness",
+ "channel": "brightness",
+ "type": "Number",
+ "stateDescription": {
+ "options": [
+ {
+ "value": "0",
+ "label": "brightest"
+ },
+ {
+ "value": "1",
+ "label": "glimmer"
+ },
+ {
+ "value": "2",
+ "label": "not bright"
+ }
+ ]
+ },
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "NUMBER"
+ }
+ ],
+ "readmeComment": "Value mapping [\"0\"\u003d\"brightest\",\"1\"\u003d\"glimmer\",\"2\"\u003d\"not bright\"]"
+ },
+ {
+ "property": "on1",
+ "siid": 6,
+ "piid": 6,
+ "friendlyName": "Indicator Light - Switch Status",
+ "channel": "on1",
+ "type": "Switch",
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "ONOFFBOOL"
+ }
+ ]
+ },
+ {
+ "property": "physical-controls-locked",
+ "siid": 7,
+ "piid": 1,
+ "friendlyName": "Physical Control Locked - Physical Control Locked",
+ "channel": "physical_controls_locked",
+ "type": "Switch",
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "ONOFFBOOL"
+ }
+ ]
+ },
+ {
+ "property": "button-pressed",
+ "siid": 8,
+ "piid": 1,
+ "friendlyName": "Button - Button_pressed",
+ "channel": "button_pressed",
+ "type": "String",
+ "stateDescription": {
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "filter-max-time",
+ "siid": 9,
+ "piid": 1,
+ "friendlyName": "Filter Time - Filter Max Time",
+ "channel": "filter_max_time",
+ "type": "Number:Time",
+ "unit": "hours",
+ "stateDescription": {
+ "minimum": 2000,
+ "maximum": 8000,
+ "step": 1,
+ "pattern": "%.0f %unit%"
+ },
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "NUMBER"
+ }
+ ]
+ },
+ {
+ "property": "filter-hour-used-debug",
+ "siid": 9,
+ "piid": 2,
+ "friendlyName": "Filter Time - Filter Hour Used Debug",
+ "channel": "filter_hour_used_debug",
+ "type": "Number:Time",
+ "unit": "hours",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 18000,
+ "step": 1,
+ "pattern": "%.0f %unit%"
+ },
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "NUMBER"
+ }
+ ]
+ },
+ {
+ "property": "m1-strong",
+ "siid": 10,
+ "piid": 1,
+ "friendlyName": "Motor Speed - M1 Strong",
+ "channel": "m1_strong",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 300,
+ "maximum": 2300,
+ "step": 10,
+ "pattern": "%.0f"
+ },
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "NUMBER"
+ }
+ ]
+ },
+ {
+ "property": "m1-high",
+ "siid": 10,
+ "piid": 2,
+ "friendlyName": "Motor Speed - M1 High",
+ "channel": "m1_high",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 300,
+ "maximum": 2300,
+ "step": 10,
+ "pattern": "%.0f"
+ },
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "NUMBER"
+ }
+ ]
+ },
+ {
+ "property": "m1-med",
+ "siid": 10,
+ "piid": 3,
+ "friendlyName": "Motor Speed - M1 Med",
+ "channel": "m1_med",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 300,
+ "maximum": 2300,
+ "step": 10,
+ "pattern": "%.0f"
+ },
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "NUMBER"
+ }
+ ]
+ },
+ {
+ "property": "m1-med-l",
+ "siid": 10,
+ "piid": 4,
+ "friendlyName": "Motor Speed - M1 Med L",
+ "channel": "m1_med_l",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 300,
+ "maximum": 2300,
+ "step": 10,
+ "pattern": "%.0f"
+ },
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "NUMBER"
+ }
+ ]
+ },
+ {
+ "property": "m1-low",
+ "siid": 10,
+ "piid": 5,
+ "friendlyName": "Motor Speed - M1 Low",
+ "channel": "m1_low",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 300,
+ "maximum": 2300,
+ "step": 10,
+ "pattern": "%.0f"
+ },
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "NUMBER"
+ }
+ ]
+ },
+ {
+ "property": "m1-silent",
+ "siid": 10,
+ "piid": 6,
+ "friendlyName": "Motor Speed - M1 Silent",
+ "channel": "m1_silent",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 300,
+ "maximum": 2300,
+ "step": 10,
+ "pattern": "%.0f"
+ },
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "NUMBER"
+ }
+ ]
+ },
+ {
+ "property": "m1-favorite",
+ "siid": 10,
+ "piid": 7,
+ "friendlyName": "Motor Speed - M1 Favorite",
+ "channel": "m1_favorite",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 300,
+ "maximum": 2300,
+ "step": 10,
+ "pattern": "%.0f",
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "motor1-speed",
+ "siid": 10,
+ "piid": 8,
+ "friendlyName": "Motor Speed - Motor1 Speed",
+ "channel": "motor1_speed",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 10000,
+ "step": 1,
+ "pattern": "%.0f",
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "motor1-set-speed",
+ "siid": 10,
+ "piid": 9,
+ "friendlyName": "Motor Speed - Motor1 Set Speed",
+ "channel": "motor1_set_speed",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 10000,
+ "step": 1,
+ "pattern": "%.0f",
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "favorite-level",
+ "siid": 10,
+ "piid": 10,
+ "friendlyName": "Motor Speed - Favorite Level",
+ "channel": "favorite_level",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 9,
+ "step": 1,
+ "pattern": "%.0f"
+ },
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "NUMBER"
+ }
+ ]
+ },
+ {
+ "property": "use-time",
+ "siid": 12,
+ "piid": 1,
+ "friendlyName": "Use Time - Use Time",
+ "channel": "use_time",
+ "type": "Number:Time",
+ "unit": "seconds",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 2147483647,
+ "step": 1,
+ "pattern": "%.0f %unit%",
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "purify-volume",
+ "siid": 13,
+ "piid": 1,
+ "friendlyName": "Aqi - Purify Volume",
+ "channel": "purify_volume",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 2147483647,
+ "step": 1,
+ "pattern": "%.0f",
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "average-aqi",
+ "siid": 13,
+ "piid": 2,
+ "friendlyName": "Aqi - Average Aqi",
+ "channel": "average_aqi",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 600,
+ "step": 1,
+ "pattern": "%.0f",
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "average-aqi-cnt",
+ "siid": 13,
+ "piid": 3,
+ "friendlyName": "Aqi - Average_aqi Read Times",
+ "channel": "average_aqi_cnt",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 2147483647,
+ "step": 1,
+ "pattern": "%.0f",
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "aqi-zone",
+ "siid": 13,
+ "piid": 4,
+ "friendlyName": "Aqi - Aqi Zone",
+ "channel": "aqi_zone",
+ "type": "String",
+ "stateDescription": {
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "sensor-state",
+ "siid": 13,
+ "piid": 5,
+ "friendlyName": "Aqi - Sensor State",
+ "channel": "sensor_state",
+ "type": "Number",
+ "stateDescription": {
+ "readOnly": true,
+ "options": [
+ {
+ "value": "0",
+ "label": "waiting"
+ },
+ {
+ "value": "1",
+ "label": "ready"
+ }
+ ]
+ },
+ "refresh": true,
+ "actions": [],
+ "readmeComment": "Value mapping [\"0\"\u003d\"waiting\",\"1\"\u003d\"ready\"]"
+ },
+ {
+ "property": "aqi-goodh",
+ "siid": 13,
+ "piid": 6,
+ "friendlyName": "Aqi - Aqi Goodh",
+ "channel": "aqi_goodh",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 255,
+ "step": 1,
+ "pattern": "%.0f"
+ },
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "NUMBER"
+ }
+ ]
+ },
+ {
+ "property": "aqi-runstate",
+ "siid": 13,
+ "piid": 7,
+ "friendlyName": "Aqi - Runstate",
+ "channel": "aqi_runstate",
+ "type": "Number",
+ "stateDescription": {
+ "readOnly": true,
+ "options": [
+ {
+ "value": "0",
+ "label": "continue"
+ },
+ {
+ "value": "1",
+ "label": "hold"
+ },
+ {
+ "value": "2",
+ "label": "sleep"
+ }
+ ]
+ },
+ "refresh": true,
+ "actions": [],
+ "readmeComment": "Value mapping [\"0\"\u003d\"continue\",\"1\"\u003d\"hold\",\"2\"\u003d\"sleep\"]"
+ },
+ {
+ "property": "aqi-state",
+ "siid": 13,
+ "piid": 8,
+ "friendlyName": "Aqi - Aqi State",
+ "channel": "aqi_state",
+ "type": "Number",
+ "stateDescription": {
+ "readOnly": true,
+ "options": [
+ {
+ "value": "0",
+ "label": "AQI_GOOD_L"
+ },
+ {
+ "value": "1",
+ "label": "AQI_GOOD_H"
+ },
+ {
+ "value": "2",
+ "label": "AQI_MID_L"
+ },
+ {
+ "value": "3",
+ "label": "AQI_MID_H"
+ },
+ {
+ "value": "4",
+ "label": "AQI_BAD_L"
+ },
+ {
+ "value": "5",
+ "label": "AQI_BAD_H"
+ }
+ ]
+ },
+ "refresh": true,
+ "actions": [],
+ "readmeComment": "Value mapping [\"0\"\u003d\"AQI_GOOD_L\",\"1\"\u003d\"AQI_GOOD_H\",\"2\"\u003d\"AQI_MID_L\",\"3\"\u003d\"AQI_MID_H\",\"4\"\u003d\"AQI_BAD_L\",\"5\"\u003d\"AQI_BAD_H\"]"
+ },
+ {
+ "property": "rfid-tag",
+ "siid": 14,
+ "piid": 1,
+ "friendlyName": "Rfid - Rfid Tag",
+ "channel": "rfid_tag",
+ "type": "String",
+ "stateDescription": {
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "rfid-factory-id",
+ "siid": 14,
+ "piid": 2,
+ "friendlyName": "Rfid - Rfid Factory Id",
+ "channel": "rfid_factory_id",
+ "type": "String",
+ "stateDescription": {
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "rfid-product-id",
+ "siid": 14,
+ "piid": 3,
+ "friendlyName": "Rfid - Rfid Product Id",
+ "channel": "rfid_product_id",
+ "type": "String",
+ "stateDescription": {
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "rfid-time",
+ "siid": 14,
+ "piid": 4,
+ "friendlyName": "Rfid - Rfid Time",
+ "channel": "rfid_time",
+ "type": "String",
+ "stateDescription": {
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "rfid-serial-num",
+ "siid": 14,
+ "piid": 5,
+ "friendlyName": "Rfid - Rfid Serial Num",
+ "channel": "rfid_serial_num",
+ "type": "String",
+ "stateDescription": {
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "app-extra",
+ "siid": 15,
+ "piid": 1,
+ "friendlyName": "Others - App Extra",
+ "channel": "app_extra",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 2147483647,
+ "step": 1,
+ "pattern": "%.0f"
+ },
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "NUMBER"
+ }
+ ]
+ },
+ {
+ "property": "main-channel",
+ "siid": 15,
+ "piid": 2,
+ "friendlyName": "Others - Main Channel",
+ "channel": "main_channel",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 2147483647,
+ "step": 1,
+ "pattern": "%.0f",
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "slave-channel",
+ "siid": 15,
+ "piid": 3,
+ "friendlyName": "Others - Slave Channel",
+ "channel": "slave_channel",
+ "type": "Number",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 2147483647,
+ "step": 1,
+ "pattern": "%.0f",
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "cola",
+ "siid": 15,
+ "piid": 4,
+ "friendlyName": "Others - Cola",
+ "channel": "cola",
+ "type": "String",
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "STRING"
+ }
+ ]
+ },
+ {
+ "property": "buttom-door",
+ "siid": 15,
+ "piid": 5,
+ "friendlyName": "Others - Buttom Door",
+ "channel": "buttom_door",
+ "type": "String",
+ "stateDescription": {
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "reboot-cause",
+ "siid": 15,
+ "piid": 6,
+ "friendlyName": "Others - Reboot_cause",
+ "channel": "reboot_cause",
+ "type": "Number",
+ "stateDescription": {
+ "readOnly": true,
+ "options": [
+ {
+ "value": "0",
+ "label": "REASON_HW_BOOT"
+ },
+ {
+ "value": "1",
+ "label": "REASON_USER_REBOOT"
+ },
+ {
+ "value": "2",
+ "label": "REASON_UPDATE"
+ },
+ {
+ "value": "3",
+ "label": "REASON_WDT"
+ }
+ ]
+ },
+ "refresh": true,
+ "actions": [],
+ "readmeComment": "Value mapping [\"0\"\u003d\"REASON_HW_BOOT\",\"1\"\u003d\"REASON_USER_REBOOT\",\"2\"\u003d\"REASON_UPDATE\",\"3\"\u003d\"REASON_WDT\"]"
+ },
+ {
+ "property": "manual-level",
+ "siid": 15,
+ "piid": 7,
+ "friendlyName": "Others - Manual Level",
+ "channel": "manual_level",
+ "type": "Number",
+ "stateDescription": {
+ "readOnly": true,
+ "options": [
+ {
+ "value": "1",
+ "label": "level1"
+ },
+ {
+ "value": "2",
+ "label": "level2"
+ },
+ {
+ "value": "3",
+ "label": "level3"
+ }
+ ]
+ },
+ "refresh": true,
+ "actions": [],
+ "readmeComment": "Value mapping [\"1\"\u003d\"level1\",\"2\"\u003d\"level2\",\"3\"\u003d\"level3\"]"
+ },
+ {
+ "property": "powertime",
+ "siid": 15,
+ "piid": 8,
+ "friendlyName": "Others - Powertime",
+ "channel": "powertime",
+ "type": "Number:duration",
+ "unit": "seconds",
+ "stateDescription": {
+ "minimum": 0,
+ "maximum": 2147483647,
+ "step": 1,
+ "pattern": "%.0f",
+ "readOnly": true
+ },
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "country-code",
+ "siid": 15,
+ "piid": 9,
+ "friendlyName": "Others - Country Code",
+ "channel": "country_code",
+ "type": "Number",
+ "stateDescription": {
+ "options": [
+ {
+ "value": "91",
+ "label": "India"
+ },
+ {
+ "value": "44",
+ "label": "UK"
+ },
+ {
+ "value": "852",
+ "label": "Hong Kong"
+ },
+ {
+ "value": "886",
+ "label": "Taiwan"
+ },
+ {
+ "value": "82",
+ "label": "Korea"
+ }
+ ]
+ },
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_properties",
+ "parameterType": "NUMBER"
+ }
+ ],
+ "readmeComment": "Value mapping [\"91\"\u003d\"India\",\"44\"\u003d\"UK\",\"852\"\u003d\"Hong Kong\",\"886\"\u003d\"Taiwan\",\"82\"\u003d\"Korea\"]"
+ }
+ ],
+ "experimental": false
+ }
+}