[miio] add support for zhimi airpurifier 3C (mb4) (#9885)

Signed-off-by: Marcel Verpaalen <marcel@verpaalen.com>
This commit is contained in:
Marcel 2021-01-22 23:36:58 +01:00 committed by GitHub
parent ab290c5464
commit 86efd73a17
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 302 additions and 4 deletions

View File

@ -441,6 +441,7 @@ Currently the miio binding supports more than 260 different models.
| Mi Air Purifier 3 | miio:basic | [zhimi.airpurifier.ma4](#zhimi-airpurifier-ma4) | Yes | Identified manual actions for execution<br />`action{"did":"filter-reset-filter-life","siid":4,"aiid":1,"in":[]}`<br />`action{"did":"button-toggle","siid":8,"aiid":1,"in":[]}`<br />`action{"did":"button-toggle-mode","siid":8,"aiid":2,"in":[]}`<br />Please test and feedback if they are working to they can be linked to a channel.<br />Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses | | Mi Air Purifier 3 | miio:basic | [zhimi.airpurifier.ma4](#zhimi-airpurifier-ma4) | Yes | Identified manual actions for execution<br />`action{"did":"filter-reset-filter-life","siid":4,"aiid":1,"in":[]}`<br />`action{"did":"button-toggle","siid":8,"aiid":1,"in":[]}`<br />`action{"did":"button-toggle-mode","siid":8,"aiid":2,"in":[]}`<br />Please test and feedback if they are working to they can be linked to a channel.<br />Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses |
| Mi Air Purifier 2S | miio:basic | [zhimi.airpurifier.mb1](#zhimi-airpurifier-mb1) | Yes | | | Mi Air Purifier 2S | miio:basic | [zhimi.airpurifier.mb1](#zhimi-airpurifier-mb1) | Yes | |
| Mi Air Purifier 3/3H | miio:basic | [zhimi.airpurifier.mb3](#zhimi-airpurifier-mb3) | Yes | Identified manual actions for execution<br />`action{"did":"filter-reset-filter-life","siid":4,"aiid":1,"in":[]}`<br />`action{"did":"button-toggle","siid":8,"aiid":1,"in":[]}`<br />`action{"did":"button-toggle-mode","siid":8,"aiid":2,"in":[]}`<br />Please test and feedback if they are working to they can be linked to a channel.<br />Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses | | Mi Air Purifier 3/3H | miio:basic | [zhimi.airpurifier.mb3](#zhimi-airpurifier-mb3) | Yes | Identified manual actions for execution<br />`action{"did":"filter-reset-filter-life","siid":4,"aiid":1,"in":[]}`<br />`action{"did":"button-toggle","siid":8,"aiid":1,"in":[]}`<br />`action{"did":"button-toggle-mode","siid":8,"aiid":2,"in":[]}`<br />Please test and feedback if they are working to they can be linked to a channel.<br />Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses |
| Mi Air Purifier 3C | miio:basic | [zhimi.airpurifier.mb4](#zhimi-airpurifier-mb4) | Yes | Specified action for filter reset <br />`action{"did":"filter-reset-filter-life","siid":4,"aiid":1,"in":[3.0]}`<br />However, this has not been successfully tested yet. |
| Mi Air Purifier 2S | miio:basic | [zhimi.airpurifier.mc1](#zhimi-airpurifier-mc1) | Yes | | | Mi Air Purifier 2S | miio:basic | [zhimi.airpurifier.mc1](#zhimi-airpurifier-mc1) | Yes | |
| Mi Air Purifier 2H | miio:basic | [zhimi.airpurifier.mc2](#zhimi-airpurifier-mc2) | Yes | | | Mi Air Purifier 2H | miio:basic | [zhimi.airpurifier.mc2](#zhimi-airpurifier-mc2) | Yes | |
| Mi Air Purifier Super | miio:basic | [zhimi.airpurifier.sa1](#zhimi-airpurifier-sa1) | Yes | | | Mi Air Purifier Super | miio:basic | [zhimi.airpurifier.sa1](#zhimi-airpurifier-sa1) | Yes | |
@ -3770,7 +3771,7 @@ e.g. `openhab:send actionCommand 'upd_timer["1498595904821", "on"]'` would enabl
| on | Switch | Air Purifier - Switch Status | | | on | Switch | Air Purifier - Switch Status | |
| fan-level | Number | Air Purifier - Fan Level | Value mapping ["1"="Level1","2"="Level2","3"="Level3"] | | fan-level | Number | Air Purifier - Fan Level | Value mapping ["1"="Level1","2"="Level2","3"="Level3"] |
| mode | Number | Air Purifier - Mode | Value mapping ["0"="Auto","1"="Sleep","2"="Favorite","3"="None"] | | mode | Number | Air Purifier - Mode | Value mapping ["0"="Auto","1"="Sleep","2"="Favorite","3"="None"] |
| pm2.5-density | Number | Environment - Pm2 5 Density | | | pm2_5-density | Number | Environment - Pm2.5 Density | |
| relative-humidity | Number:Dimensionless | Environment - Relative Humidity | | | relative-humidity | Number:Dimensionless | Environment - Relative Humidity | |
| temperature | Number:Temperature | Environment - Temperature | | | temperature | Number:Temperature | Environment - Temperature | |
| filter-life-level | Number:Dimensionless | Filter - Filter Life Level | | | filter-life-level | Number:Dimensionless | Filter - Filter Life Level | |
@ -3846,7 +3847,7 @@ e.g. `openhab:send actionCommand 'upd_timer["1498595904821", "on"]'` would enabl
| on | Switch | Air Purifier - Switch Status | | | on | Switch | Air Purifier - Switch Status | |
| fan-level | Number | Air Purifier - Fan Level | Value mapping ["1"="Level1","2"="Level2","3"="Level3"] | | fan-level | Number | Air Purifier - Fan Level | Value mapping ["1"="Level1","2"="Level2","3"="Level3"] |
| mode | Number | Air Purifier - Mode | Value mapping ["0"="Auto","1"="Sleep","2"="Favorite","3"="None"] | | mode | Number | Air Purifier - Mode | Value mapping ["0"="Auto","1"="Sleep","2"="Favorite","3"="None"] |
| pm2.5-density | Number | Environment - Pm2 5 | | | pm2_5-density | Number | Environment - Pm2.5 density | |
| relative-humidity | Number:Dimensionless | Environment - Relative Humidity | | | relative-humidity | Number:Dimensionless | Environment - Relative Humidity | |
| temperature | Number:Temperature | Environment - Temperature | | | temperature | Number:Temperature | Environment - Temperature | |
| filter-life-level | Number:Dimensionless | Filter - Filter Life Level | | | filter-life-level | Number:Dimensionless | Filter - Filter Life Level | |
@ -3894,6 +3895,24 @@ e.g. `openhab:send actionCommand 'upd_timer["1498595904821", "on"]'` would enabl
| manual-level | Number | Others - Manual Level | Value mapping ["1"="Level1","2"="Level2","3"="Level3"] | | manual-level | Number | Others - Manual Level | Value mapping ["1"="Level1","2"="Level2","3"="Level3"] |
| country-code | Number | Others - National Code | Value mapping ["91"="印度","44"="分销英文","852"="中国香港","886"="中国台湾","82"="韩国"] | | country-code | Number | Others - National Code | Value mapping ["91"="印度","44"="分销英文","852"="中国香港","886"="中国台湾","82"="韩国"] |
### Mi Air Purifier 3C (<a name="zhimi-airpurifier-mb4">zhimi.airpurifier.mb4</a>) Channels
| Channel | Type | Description | Comment |
|------------------|---------|-------------------------------------|------------|
| on | Switch | Power | |
| fault | String | Air Purifier - Device Fault | |
| mode | Number | Mode | Value mapping ["0"="Auto","1"="Sleep","2"="Favorite"] |
| pm2_5_density | Number | Environment - Pm2 5 Density | |
| filter_life_level | Number:Dimensionless | Filter - Filter Life Level | |
| filter_used_time | Number:Time | Filter - Filter Used Time | |
| alarm | Switch | Alarm - Alarm | |
| brightness | Number | Screen - Brightness | |
| physical_controls_locked | Switch | Physical Control Locked - Physical Control Locked | |
| moto_speed_rpm | Number | Custom Service - Moto Speed Rpm | |
| miio_lib_version | String | Custom Service - Miio Lib Version | |
| favorite_speed | Number | Custom Service - Favorite Speed | |
| aqi_updata_heartbeat | Number:Time | Custom Service - Aqi Updata Heartbeat | |
### Mi Air Purifier 2S (<a name="zhimi-airpurifier-mc1">zhimi.airpurifier.mc1</a>) Channels ### Mi Air Purifier 2S (<a name="zhimi-airpurifier-mc1">zhimi.airpurifier.mc1</a>) Channels
| Channel | Type | Description | Comment | | Channel | Type | Description | Comment |
@ -8353,7 +8372,7 @@ Number fault "Air Purifier - Device Fault" (G_airpurifier) {channel="miio:basic:
Switch on "Air Purifier - Switch Status" (G_airpurifier) {channel="miio:basic:airpurifier:on"} Switch on "Air Purifier - Switch Status" (G_airpurifier) {channel="miio:basic:airpurifier:on"}
Number fan_level "Air Purifier - Fan Level" (G_airpurifier) {channel="miio:basic:airpurifier:fan-level"} 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 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 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: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: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:Dimensionless filter_life_level "Filter - Filter Life Level" (G_airpurifier) {channel="miio:basic:airpurifier:filter-life-level"}
@ -8435,7 +8454,7 @@ Number fault "Air Purifier - Fault" (G_airpurifier) {channel="miio:basic:airpuri
Switch on "Air Purifier - Switch Status" (G_airpurifier) {channel="miio:basic:airpurifier:on"} Switch on "Air Purifier - Switch Status" (G_airpurifier) {channel="miio:basic:airpurifier:on"}
Number fan_level "Air Purifier - Fan Level" (G_airpurifier) {channel="miio:basic:airpurifier:fan-level"} 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 mode "Air Purifier - Mode" (G_airpurifier) {channel="miio:basic:airpurifier:mode"}
Number pm2.5_density "Environment - Pm2 5" (G_airpurifier) {channel="miio:basic:airpurifier:pm2.5-density"} 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: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: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:Dimensionless filter_life_level "Filter - Filter Life Level" (G_airpurifier) {channel="miio:basic:airpurifier:filter-life-level"}
@ -8484,6 +8503,27 @@ Number manual_level "Others - Manual Level" (G_airpurifier) {channel="miio:basic
Number country_code "Others - National Code" (G_airpurifier) {channel="miio:basic:airpurifier:country-code"} Number country_code "Others - National Code" (G_airpurifier) {channel="miio:basic:airpurifier:country-code"}
``` ```
### Mi Air Purifier 3C (zhimi.airpurifier.mb4) 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.
```java
Group G_airpurifier "Mi Air Purifier 3C" <status>
Switch on "Power" (G_airpurifier) {channel="miio:basic:airpurifier:on"}
String fault "Air Purifier - Device Fault" (G_airpurifier) {channel="miio:basic:airpurifier:fault"}
Number mode "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 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 brightness "Screen - Brightness" (G_airpurifier) {channel="miio:basic:airpurifier:brightness"}
Switch physical_controls_locked "Physical Control Locked - Physical Control Locked" (G_airpurifier) {channel="miio:basic:airpurifier:physical_controls_locked"}
Number moto_speed_rpm "Custom Service - Moto Speed Rpm" (G_airpurifier) {channel="miio:basic:airpurifier:moto_speed_rpm"}
String miio_lib_version "Custom Service - Miio Lib Version" (G_airpurifier) {channel="miio:basic:airpurifier:miio_lib_version"}
Number favorite_speed "Custom Service - Favorite Speed" (G_airpurifier) {channel="miio:basic:airpurifier:favorite_speed"}
Number:Time aqi_updata_heartbeat "Custom Service - Aqi Updata Heartbeat" (G_airpurifier) {channel="miio:basic:airpurifier:aqi_updata_heartbeat"}
```
### Mi Air Purifier 2S (zhimi.airpurifier.mc1) item file lines ### Mi Air Purifier 2S (zhimi.airpurifier.mc1) 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. 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.

View File

@ -325,6 +325,7 @@ public enum MiIoDevices {
ZHIMI_AIRPURIFIER_MA4("zhimi.airpurifier.ma4", "Mi Air Purifier 3", THING_TYPE_BASIC), ZHIMI_AIRPURIFIER_MA4("zhimi.airpurifier.ma4", "Mi Air Purifier 3", THING_TYPE_BASIC),
ZHIMI_AIRPURIFIER_MB1("zhimi.airpurifier.mb1", "Mi Air Purifier 2S", THING_TYPE_BASIC), ZHIMI_AIRPURIFIER_MB1("zhimi.airpurifier.mb1", "Mi Air Purifier 2S", THING_TYPE_BASIC),
ZHIMI_AIRPURIFIER_MB3("zhimi.airpurifier.mb3", "Mi Air Purifier 3/3H", THING_TYPE_BASIC), ZHIMI_AIRPURIFIER_MB3("zhimi.airpurifier.mb3", "Mi Air Purifier 3/3H", THING_TYPE_BASIC),
ZHIMI_AIRPURIFIER_MB4("zhimi.airpurifier.mb4", "Mi Air Purifier 3C", THING_TYPE_BASIC),
ZHIMI_AIRPURIFIER_MC1("zhimi.airpurifier.mc1", "Mi Air Purifier 2S", THING_TYPE_BASIC), ZHIMI_AIRPURIFIER_MC1("zhimi.airpurifier.mc1", "Mi Air Purifier 2S", THING_TYPE_BASIC),
ZHIMI_AIRPURIFIER_MC2("zhimi.airpurifier.mc2", "Mi Air Purifier 2H", THING_TYPE_BASIC), ZHIMI_AIRPURIFIER_MC2("zhimi.airpurifier.mc2", "Mi Air Purifier 2H", THING_TYPE_BASIC),
ZHIMI_AIRPURIFIER_SA1("zhimi.airpurifier.sa1", "Mi Air Purifier Super", THING_TYPE_BASIC), ZHIMI_AIRPURIFIER_SA1("zhimi.airpurifier.sa1", "Mi Air Purifier Super", THING_TYPE_BASIC),

View File

@ -0,0 +1,257 @@
{
"deviceMapping": {
"id": [
"zhimi.airpurifier.mb4"
],
"propertyMethod": "get_properties",
"maxProperties": 1,
"channels": [
{
"property": "on",
"siid": 2,
"piid": 1,
"friendlyName": "Power",
"channel": "on",
"type": "Switch",
"refresh": true,
"actions": [
{
"command": "set_properties",
"parameterType": "ONOFFBOOL"
}
],
"category": "switch",
"tags": [
"Switch"
]
},
{
"property": "fault",
"siid": 2,
"piid": 2,
"friendlyName": "Air Purifier - Device Fault",
"channel": "fault",
"type": "String",
"stateDescription": {
"readOnly": true
},
"refresh": true,
"actions": []
},
{
"property": "mode",
"siid": 2,
"piid": 4,
"friendlyName": "Mode",
"channel": "mode",
"type": "Number",
"stateDescription": {
"options": [
{
"value": "0",
"label": "Auto"
},
{
"value": "1",
"label": "Sleep"
},
{
"value": "2",
"label": "Favorite"
}
]
},
"refresh": true,
"actions": [
{
"command": "set_properties",
"parameterType": "NUMBER"
}
],
"tags": [
"Control"
],
"readmeComment": "Value mapping [\"0\"\u003d\"Auto\",\"1\"\u003d\"Sleep\",\"2\"\u003d\"Favorite\"]"
},
{
"property": "pm2.5-density",
"siid": 3,
"piid": 4,
"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": "filter-life-level",
"siid": 4,
"piid": 1,
"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": 3,
"friendlyName": "Filter - Filter Used Time",
"channel": "filter_used_time",
"type": "Number:Time",
"unit": "hours",
"stateDescription": {
"minimum": 0,
"maximum": 65000,
"step": 1,
"pattern": "%.0f %unit%",
"readOnly": true
},
"refresh": true,
"actions": []
},
{
"property": "alarm",
"siid": 6,
"piid": 1,
"friendlyName": "Alarm - Alarm",
"channel": "alarm",
"type": "Switch",
"refresh": true,
"actions": [
{
"command": "set_properties",
"parameterType": "ONOFFBOOL"
}
]
},
{
"property": "brightness",
"siid": 7,
"piid": 2,
"friendlyName": "Screen - Brightness",
"channel": "brightness",
"type": "Number",
"stateDescription": {
"minimum": 0,
"maximum": 8,
"step": 1,
"pattern": "%.0f"
},
"refresh": true,
"actions": [
{
"command": "set_properties",
"parameterType": "NUMBER"
}
]
},
{
"property": "physical-controls-locked",
"siid": 8,
"piid": 1,
"friendlyName": "Physical Control Locked - Physical Control Locked",
"channel": "physical_controls_locked",
"type": "Switch",
"refresh": true,
"actions": [
{
"command": "set_properties",
"parameterType": "ONOFFBOOL"
}
]
},
{
"property": "moto-speed-rpm",
"siid": 9,
"piid": 1,
"friendlyName": "Custom Service - Moto Speed Rpm",
"channel": "moto_speed_rpm",
"type": "Number",
"stateDescription": {
"minimum": 0,
"maximum": 65535,
"step": 1,
"pattern": "%.1f",
"readOnly": true
},
"refresh": true,
"actions": []
},
{
"property": "miio-lib-version",
"siid": 9,
"piid": 2,
"friendlyName": "Custom Service - Miio Lib Version",
"channel": "miio_lib_version",
"type": "String",
"stateDescription": {
"readOnly": true
},
"refresh": true,
"actions": []
},
{
"property": "favorite-speed",
"siid": 9,
"piid": 3,
"friendlyName": "Custom Service - Favorite Speed",
"channel": "favorite_speed",
"type": "Number",
"stateDescription": {
"minimum": 300,
"maximum": 2200,
"step": 1,
"pattern": "%.1f"
},
"refresh": true,
"actions": [
{
"command": "set_properties",
"parameterType": "STRING"
}
]
},
{
"property": "aqi-updata-heartbeat",
"siid": 9,
"piid": 4,
"friendlyName": "Custom Service - Aqi Updata Heartbeat",
"channel": "aqi_updata_heartbeat",
"type": "Number:Time",
"unit": "seconds",
"stateDescription": {
"minimum": 0,
"maximum": 65534,
"step": 1,
"pattern": "%.0f %unit%"
},
"refresh": true,
"actions": [
{
"command": "set_properties",
"parameterType": "NUMBER"
}
]
}
],
"readmeComment": "Specified action for filter reset \u003cbr /\u003e`action{\"did\":\"filter-reset-filter-life\",\"siid\":4,\"aiid\":1,\"in\":[3.0]}`\u003cbr /\u003eHowever, this has not been successfully tested yet.",
"experimental": false
}
}