Xiaomi Mi Air Purifier (Xiaomi Mi IO)

Marcel: many thanks! That worked perfectly!
(I had some trouble with the json syntax with missing the the “,” after the last “}” - I forgot the simple rule: do not copy the last item in a list, because it does not contain the item delimiter :slight_smile: - this took me nearly two days )

I did not add specific values for the status, because 0 / 1 is not language specific.
Now the description file ended like this:

			{
				"property": "waterstatus",
				"friendlyName": "Water Status",
				"channel": "waterstatus",
				"type": "Number",
				"stateDescription": {
					"pattern": "%.0f",
					"readOnly": true
				},
				"refresh": true,
				"actions": []
			},
			{
				"property": "TemperatureValue",
				"friendlyName": "Temperature",
				"channel": "TemperatureValue",
				"type": "Number",
				"stateDescription": {
					"pattern": "%.0f",
					"readOnly": true
				},
				"refresh": true,
				"actions": []
			}

And this is the result :slight_smile: :

As a new user I cannot upload attachments and therefore cannot upload the adjusted json - file, but the modifications are pretty simple.

And as a hint for others: the conf/misc/miio - folder on an openhabian distribution is /etc/openhab/misc/miio - and you have to create the misc/ and misc/miio folder by yourself.

1 Like

Is there any possibility to add zhimi.airp.vb4 (Xiaomi Air Purifier Pro 4) ? Thanks.

1 Like

Can you try the (experimental) Create experimental support for new MIOT protocol devices channel and feedback which channels are working and which not.
Than the created files, it will speedup implementing it

I tried but nothing works (or I don’t know how to use it) but found something here:

let me walk you through the steps

  1. open your openhab folder, find the folder /conf/misc/miio
    You may have a json file there from a previous run. please delete it

  2. delete your thing

  3. restart openhab to ensure all is cleaned up

  4. after openhab is fully started again, discover your air purifier again. It should be recognised as unsupported device

  5. log into the openhab console and type
    log:set debug org.openhab.binding.miio log:tail org.openhab.binding.miio

  6. there are a few channels for unsupported devices. use the above mentioned (experimental) Create experimental support for new MIOT protocol devices nb use the miot one. It is a switch, just switch it on once.

  7. in the console screen you will see it is creating files for your device.
    After creation it most likely will change to a miio:basic thing with many channels. If that does not work automatically, restart openhab once more to ensure the new folder / json file is picked up.

  8. check if the channels work as expected and share the file

1 Like

I can confirm that it works but unfortunately “Sorry, new users cannot upload attachments.”
Thanks.

Hello. The “(experimental) Create experimental support for new MIOT protocol devices” make a JSON file in /etc/openhab/misc/miio and with this file now zhimi.airp.vb4 and chuangmi.camera.ipc016 works.
zhimi.airp.vb4-miot-experimental.json (17.6 KB)
chuangmi.camera.ipc016-experimental.json (3.2 KB)

And the Item file contains :

Group Videocamera "Video camera " [“Equipment”]

// Points:

// String Videocamera_SSID “SSID” (Videocamera) [“Point”] { channel=“miio:generic:16178534:network#ssid” }
// String Videocamera_BSSID “BSSID” (Videocamera) [“Point”] { channel=“miio:generic:16178534:network#bssid” }
// Number Videocamera_RSSI “RSSI” (Videocamera) [“Point”] { channel=“miio:generic:16178534:network#rssi” }
// Number Videocamera_Life “Life” (Videocamera) [“Point”] { channel=“miio:generic:16178534:network#life” }
// String Videocamera_ExecuteCommand “Execute Command” (Videocamera) [“Point”] { channel=“miio:generic:16178534:actions#commands” }
// String Videocamera_ExecuteRPCcloudCommand “Execute RPC (cloud) Command” (Videocamera) [“Point”] { channel=“miio:generic:16178534:actions#rpc” }
Switch Videocamera_CameraControlSwitchStatus “Camera Control - Switch Status” (Videocamera) [“Point”] { channel=“miio:generic:16178534:power” }
Number:Angle Videocamera_CameraControlImageRollover “Camera Control - Image Rollover” (Videocamera) [“Point”] { channel=“miio:generic:16178534:flip” }
Number Videocamera_CameraControlNightShot “Camera Control - Night Shot” (Videocamera) [“Point”] { channel=“miio:generic:16178534:night_shot” }
Switch Videocamera_CameraControlTimeWatermark “Camera Control - Time Watermark” (Videocamera) [“Point”] { channel=“miio:generic:16178534:watermark” }
Switch Videocamera_CameraControlWideDynamicRangeMode “Camera Control - Wide Dynamic Range Mode” (Videocamera) [“Point”] { channel=“miio:generic:16178534:wdr_mode” }
Switch Videocamera_CameraControlGlimmerFullColor “Camera Control - Glimmer Full Color” (Videocamera) [“Point”] { channel=“miio:generic:16178534:glimmer_full_color” }
Number Videocamera_CameraControlRecordingMode “Camera Control - Recording Mode” (Videocamera) [“Point”] { channel=“miio:generic:16178534:recording_mode” }
Switch Videocamera_CameraControlMotionTracking “Camera Control - Motion Tracking” (Videocamera) [“Point”] { channel=“miio:generic:16178534:motion_tracking” }

Group XiaomiSmartAirPurifier4Pro "Xiaomi Smart Air Purifier 4 Pro " [“Equipment”]

// Points:

// String XiaomiSmartAirPurifier4Pro_SSID “SSID” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:network#ssid” }
// String XiaomiSmartAirPurifier4Pro_BSSID “BSSID” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:network#bssid” }
// Number XiaomiSmartAirPurifier4Pro_RSSI “RSSI” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:network#rssi” }
// Number XiaomiSmartAirPurifier4Pro_Life “Life” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:network#life” }
// String XiaomiSmartAirPurifier4Pro_ExecuteCommand “Execute Command” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:actions#commands” }
// String XiaomiSmartAirPurifier4Pro_ExecuteRPCcloudCommand “Execute RPC (cloud) Command” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:actions#rpc” }
String XiaomiSmartAirPurifier4Pro_Actions “Actions” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:actions” }
Switch XiaomiSmartAirPurifier4Pro_AirPurifierSwitchStatus “Air Purifier - Switch Status” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:on” }
Number XiaomiSmartAirPurifier4Pro_AirPurifierDeviceFault “Air Purifier - Device Fault” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:fault” }
Number XiaomiSmartAirPurifier4Pro_AirPurifierMode “Air Purifier - Mode” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:mode” }
Number XiaomiSmartAirPurifier4Pro_AirPurifierFanLevel “Air Purifier - Fan Level” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:fan_level” }
Switch XiaomiSmartAirPurifier4Pro_AirPurifierAnion “Air Purifier - Anion” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:anion” }
Number:Dimensionless XiaomiSmartAirPurifier4Pro_EnvironmentRelativeHumidity “Environment - Relative Humidity” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:relative_humidity” }
Number XiaomiSmartAirPurifier4Pro_EnvironmentPM25Density “Environment - PM2 5 Density” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:pm2_5_density” }
Number:Temperature XiaomiSmartAirPurifier4Pro_EnvironmentTemperature “Environment - Temperature” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:temperature” }
Number XiaomiSmartAirPurifier4Pro_EnvironmentPM10Density “Environment - PM10 Density” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:pm10_density” }
Number:Dimensionless XiaomiSmartAirPurifier4Pro_FilterFilterLifeLevel “Filter - Filter Life Level” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:filter_life_level” }
Number:Time XiaomiSmartAirPurifier4Pro_FilterFilterUsedTime “Filter - Filter Used Time” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:filter_used_time” }
Number:Time XiaomiSmartAirPurifier4Pro_FilterFilterLeftTime “Filter - Filter Left Time” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:filter_left_time” }
Switch XiaomiSmartAirPurifier4Pro_AlarmAlarm “Alarm - Alarm” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:alarm” }
Switch XiaomiSmartAirPurifier4Pro_PhysicalControlLockedPhysicalControlLocked “Physical Control Locked - Physical Control Locked” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:physical_controls_locked” }
Number:Dimensionless XiaomiSmartAirPurifier4Pro_ScreenBrightness “Screen - Brightness” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:brightness” }
Number XiaomiSmartAirPurifier4Pro_DeviceDisplayUnitTemperatureDisplayUnit “Device Display Unit - Temperature Display Unit” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:temperature_display_unit” }
Number XiaomiSmartAirPurifier4Pro_CustomServiceMotoSpeedRpm “Custom Service - Moto Speed Rpm” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:moto_speed_rpm” }
Number XiaomiSmartAirPurifier4Pro_CustomServiceFavoriteSpeed “Custom Service - Favorite Speed” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:favorite_speed” }
Number XiaomiSmartAirPurifier4Pro_CustomServiceMotorSetSpeed “Custom Service - Motor Set Speed” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:motor_set_speed” }
Number XiaomiSmartAirPurifier4Pro_CustomServiceFavoriteLevel “Custom Service - Favorite Level” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:favorite_level” }
Switch XiaomiSmartAirPurifier4Pro_CustomServiceButtomDoor “Custom Service - Buttom Door” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:buttom_door” }
Number XiaomiSmartAirPurifier4Pro_CustomServiceRebootCause “Custom Service - Reboot Cause” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:reboot_cause” }
Number XiaomiSmartAirPurifier4Pro_CustomServiceManualLevel “Custom Service - Manual Level” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:manual_level” }
Number XiaomiSmartAirPurifier4Pro_CustomServiceCountryCode “Custom Service - Country Code” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:country_code” }
Number:Time XiaomiSmartAirPurifier4Pro_FilterTimeFilterUsedDebug “Filter Time - Filter Used Debug” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:filter_used_debug” }
Number XiaomiSmartAirPurifier4Pro_AqiPurifyVolume “Aqi - Purify Volume” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:purify_volume” }
Number XiaomiSmartAirPurifier4Pro_AqiAverageAqi “Aqi - Average Aqi” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:average_aqi” }
Number XiaomiSmartAirPurifier4Pro_AqiAqiState “Aqi - Aqi State” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:aqi_state” }
Number XiaomiSmartAirPurifier4Pro_AqiAqiUpdataHeartbeat “Aqi - Aqi Updata Heartbeat” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:aqi_updata_heartbeat” }
String XiaomiSmartAirPurifier4Pro_RfidRfidTag “Rfid - Rfid Tag” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:rfid_tag” }
String XiaomiSmartAirPurifier4Pro_RfidRfidFactoryId “Rfid - Rfid Factory Id” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:rfid_factory_id” }
String XiaomiSmartAirPurifier4Pro_RfidRfidProductId “Rfid - Rfid Product Id” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:rfid_product_id” }
String XiaomiSmartAirPurifier4Pro_RfidRfidTime “Rfid - Rfid Time” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:rfid_time” }
String XiaomiSmartAirPurifier4Pro_RfidRfidSerialNum “Rfid - Rfid Serial Num” (XiaomiSmartAirPurifier4Pro) [“Point”] { channel=“miio:generic:1C4F9D45:rfid_serial_num” }

hi @marcel_verpaalen ,i got the 3H purifier and the purifier modes channel that autocreated is a Number.But the values it gets are string type like “Auto”,“Sleep”,“Favorite” and “None”.

when i try to control it it needs numbers 0,1,2, and 3.Is that right?The displayed value at all widgets are numbers and not the modes.Can be fixed?
thnx

In openhab you can associate the numbers to string.
So while the channel requires a number it will display the string.
You can control that with map. If you have custom widgets you may need to do the mapping another way

so the item had to be a number and with map i can make it display a string?As you see at the pic it is a number item but it shows a string by default…But at the default control widget it shows numbers(as it should be).If i turn this item to string type i get this

[WARN ] [al.profiles.MapTransformationProfile] - Could not transform state '1' with function 'purifier.map' and format '%s'

my map file

Auto=0
Sleep=1
Favorite=2
None=3