[miio] Add support for Xiaomi Mi Air Purifier 3C BHR4518GL (zhimi.airp.mb4a) (#12076)

Signed-off-by: Marcel Verpaalen <marcel@verpaalen.com>
This commit is contained in:
Marcel
2022-03-07 23:47:17 +01:00
committed by GitHub
parent f28ef254cf
commit 739463896a
5 changed files with 355 additions and 2 deletions

View File

@@ -374,6 +374,7 @@ public enum MiIoDevices {
ZHIMI_AIRFRESH_VA4("zhimi.airfresh.va4", "Smartmi Fresh Air System (Heating)", THING_TYPE_BASIC),
ZHIMI_AIRFRESH_UA1("zhimi.airfresh.ua1", "Mi Fresh Air Ventilator C1-80", THING_TYPE_BASIC),
ZHIMI_AIRMONITOR_V1("zhimi.airmonitor.v1", "Mi PM2.5 Air Quality Monitor", THING_TYPE_BASIC),
ZHIMI_AIRP_MB4A("zhimi.airp.mb4a", "Mi Air Purifier 3C", THING_TYPE_BASIC),
ZHIMI_AIRPURIFIER_M1("zhimi.airpurifier.m1", "Mi Air Purifier 2 (mini)", THING_TYPE_BASIC),
ZHIMI_AIRPURIFIER_M2("zhimi.airpurifier.m2", "Mi Air Purifier 2", THING_TYPE_BASIC),
ZHIMI_AIRPURIFIER_MA1("zhimi.airpurifier.ma1", "Mi Air Purifier 2S", THING_TYPE_BASIC),

View File

@@ -315,6 +315,7 @@ thing.zhimi.airfresh.va2 = Smartmi Ventilation System
thing.zhimi.airfresh.va4 = Smartmi Fresh Air System (Heating)
thing.zhimi.airfresh.ua1 = Mi Fresh Air Ventilator C1-80
thing.zhimi.airmonitor.v1 = Mi PM2.5 Air Quality Monitor
thing.zhimi.airp.mb4a = Mi Air Purifier 3C
thing.zhimi.airpurifier.m1 = Mi Air Purifier 2 (mini)
thing.zhimi.airpurifier.m2 = Mi Air Purifier 2
thing.zhimi.airpurifier.ma1 = Mi Air Purifier 2S
@@ -1412,6 +1413,20 @@ ch.zhimi.airmonitor.v1.night_state = Night State
ch.zhimi.airmonitor.v1.power = Power
ch.zhimi.airmonitor.v1.time_state = Time State
ch.zhimi.airmonitor.v1.usb_state = USB State
ch.zhimi.airp.mb4a-miot.actions = Actions
ch.zhimi.airp.mb4a-miot.alarm = Alarm - Alarm
ch.zhimi.airp.mb4a-miot.aqi_updata_heartbeat = Custom Service - Aqi Updata Heartbeat
ch.zhimi.airp.mb4a-miot.brightness = Screen - Brightness
ch.zhimi.airp.mb4a-miot.fault = Air Purifier - Device Fault
ch.zhimi.airp.mb4a-miot.favorite_speed = Custom Service - Favorite Speed
ch.zhimi.airp.mb4a-miot.filter_life_level = Filter - Filter Life Level
ch.zhimi.airp.mb4a-miot.filter_used_time = Filter - Filter Used Time
ch.zhimi.airp.mb4a-miot.miio_lib_version = Custom Service - Miio Lib Version
ch.zhimi.airp.mb4a-miot.mode = Mode
ch.zhimi.airp.mb4a-miot.moto_speed_rpm = Custom Service - Moto Speed Rpm
ch.zhimi.airp.mb4a-miot.on = Power
ch.zhimi.airp.mb4a-miot.physical_controls_locked = Physical Control Locked - Physical Control Locked
ch.zhimi.airp.mb4a-miot.pm2_5_density = Environment - PM2 5 Density
ch.zhimi.airpurifier.m1.aqi = Air Quality Index
ch.zhimi.airpurifier.m1.averageaqi = Average Air Quality Index
ch.zhimi.airpurifier.m1.buzzer = Buzzer Status
@@ -2828,6 +2843,10 @@ option.zhimi.airfresh.va4.mode-low = 1
option.zhimi.airfresh.va4.mode-middle = 2
option.zhimi.airfresh.va4.mode-silent = Night
option.zhimi.airfresh.va4.mode-strong = 3
option.zhimi.airp.mb4a-miot.actions-filter-reset-filter-life = Filter Reset Filter Life
option.zhimi.airp.mb4a-miot.mode-0 = Auto
option.zhimi.airp.mb4a-miot.mode-1 = Sleep
option.zhimi.airp.mb4a-miot.mode-2 = Favorite
option.zhimi.airpurifier.m1.favoritelevel-0 = Favorite 0
option.zhimi.airpurifier.m1.favoritelevel-1 = Favorite 1
option.zhimi.airpurifier.m1.favoritelevel-10 = Favorite 10

View File

@@ -0,0 +1,291 @@
{
"deviceMapping": {
"id": [
"zhimi.airp.mb4a"
],
"propertyMethod": "get_properties",
"maxProperties": 1,
"channels": [
{
"property": "",
"friendlyName": "Actions",
"channel": "actions",
"type": "String",
"stateDescription": {
"options": [
{
"value": "filter-reset-filter-life",
"label": "Filter Reset Filter Life"
}
]
},
"refresh": false,
"actions": [
{
"command": "action",
"parameterType": "EMPTY",
"parameters": [
3.0
],
"siid": 4,
"aiid": 1,
"condition": {
"name": "matchValue",
"parameters": [
{
"matchValue": "filter-reset-filter-life"
}
]
}
}
],
"readmeComment": "Value mapping `[\"filter-reset-filter-life\"\u003d\"Filter Reset Filter Life\"]`"
},
{
"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": "%.0f",
"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": "%.0f"
},
"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"
}
]
}
],
"experimental": false
}
}

View File

@@ -188,7 +188,7 @@
"minimum": 0,
"maximum": 65535,
"step": 1,
"pattern": "%.1f",
"pattern": "%.0f",
"readOnly": true
},
"refresh": true,
@@ -218,7 +218,7 @@
"minimum": 300,
"maximum": 2200,
"step": 1,
"pattern": "%.1f"
"pattern": "%.0f"
},
"refresh": true,
"actions": [