Skip to content

Commit 2d14d4f

Browse files
authored
[miio] Add support for Xiaomi Robot Vacuum X20+ (#17902)
Adding support for the following models: * Xiaomi Robot Vacuum X20+ (modelId: xiaomi.vacuum.c102gl) Signed-off-by: Marcel Verpaalen <[email protected]>
1 parent 2c9947c commit 2d14d4f

File tree

4 files changed

+1578
-1
lines changed

4 files changed

+1578
-1
lines changed

bundles/org.openhab.binding.miio/README.md

+112-1
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ Currently the miio binding supports more than 360 different models.
234234
| Mi IH Pressure Rice Cooker | miio:unsupported | chunmi.cooker.press1 | No | |
235235
| Mi IH Pressure Rice Cooker | miio:unsupported | chunmi.cooker.press2 | No | |
236236
| Gosund Smart Plug | miio:basic | [cuco.plug.cp1](#cuco-plug-cp1) | Yes | |
237-
| Xiaomi Smart Plug 2 (Wi-Fi) | miio:basic | [cuco.plug.v2eur](#cuco-plug-v2eur) | Yes | |
237+
| Xiaomi Smart Plug 2 (Wi-Fi) | miio:basic | [cuco.plug.v2eur](#cuco-plug-v2eur) | Yes | Device only works with cloud connection (stays offline with direct connection). Select in your thing configuration Communication Method 'Cloud' |
238238
| Mi Smart Antibacterial Humidifier | miio:basic | [deerma.humidifier.jsq](#deerma-humidifier-jsq) | Yes | |
239239
| Mi S Smart Humidifer | miio:basic | [deerma.humidifier.jsq1](#deerma-humidifier-jsq1) | Yes | |
240240
| Xiaomi Smart Humidifier 2 | miio:basic | [deerma.humidifier.jsq2w](#deerma-humidifier-jsq2w) | Yes | |
@@ -461,6 +461,7 @@ Currently the miio binding supports more than 360 different models.
461461
| Mi Smart Ultra Electricity Saving Air Conditioner (1HP/Inverter/New China Energy Label Level 1) | miio:basic | [xiaomi.aircondition.mt7](#xiaomi-aircondition-mt7) | Experimental | Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses |
462462
| Mi Smart Ultra Electricity Saving Air Conditioner (1.5HP/Inverter/New China Energy Label Level 1) | miio:basic | [xiaomi.aircondition.mt8](#xiaomi-aircondition-mt8) | Experimental | Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses |
463463
| Mi Wi-Fi Repeater 2 | miio:unsupported | xiaomi.repeater.v2 | No | |
464+
| Xiaomi Robot Vacuum X20+ | miio:basic | [xiaomi.vacuum.c102gl](#xiaomi-vacuum-c102gl) | Yes | |
464465
| Mi Network Speaker | miio:unsupported | xiaomi.wifispeaker.v1 | No | |
465466
| Uclean Smart Toilet Seat | miio:basic | [xjx.toilet.pro](#xjx-toilet-pro) | Experimental | Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses |
466467
| Uclean Smart Toilet pure | miio:basic | [xjx.toilet.pure](#xjx-toilet-pure) | Experimental | Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses |
@@ -3905,6 +3906,59 @@ Note, not all the values need to be in the json file, e.g. a subset of the param
39053906
| fan-percent | Number:Dimentionless | Fan Speed % | |
39063907
| timer | String | Enhance - Timer | |
39073908

3909+
### Xiaomi Robot Vacuum X20+ (<a name="xiaomi-vacuum-c102gl">xiaomi.vacuum.c102gl</a>) Channels
3910+
3911+
| Channel | Type | Description | Comment |
3912+
|----------------------------|----------------------|------------------------------------------|------------|
3913+
| actions | String | Actions | Value mapping `["vacuum-start-sweep"="Vacuum Start Sweep","vacuum-stop-sweeping"="Vacuum Stop Sweeping","vacuum-start-room-sweep"="Vacuum Start Room Sweep","vacuum-start-dust-arrest"="Vacuum Start Dust Arrest","vacuum-start-mop-wash"="Vacuum Start Mop Wash","vacuum-start-dry"="Vacuum Start Dry","vacuum-stop-dry"="Vacuum Stop Dry","vacuum-start-eject"="Vacuum Start Eject","battery-start-charge"="Battery Start Charge","brush-cleaner-reset-brush-life"="Brush Cleaner Reset Brush Life","brush-cleaner-reset-brush-life"="Brush Cleaner Reset Brush Life","filter-reset-filter-life"="Filter Reset Filter Life","mop-reset-mop-life"="Mop Reset Mop Life","vacuum-extend-start-clean"="Vacuum Extend Start Clean","vacuum-extend-stop-clean"="Vacuum Extend Stop Clean","map-map-req"="Map Map Req","map-update-map"="Map Update Map","audio-position"="Audio Position","audio-play-sound"="Audio Play Sound","time-delete-timer"="Time Delete Timer"]` |
3914+
| status | Number | Robot Cleaner - Status | Value mapping `["1"="Sweeping","2"="Idle","3"="Paused","4"="Error","5"="Go Charging","6"="Charging","7"="Mopping","8"="Drying","9"="Washing","10"="Go Washing","11"="Building","12"="Sweeping And Mopping","13"="Charging Completed","14"="Upgrading","19"="WaterInspecting","21"="WashingMopPause","22"="DustCollecting","23"="RemoteClean"]` |
3915+
| fault | Number | Robot Cleaner - Device Fault | |
3916+
| mode | Number | Robot Cleaner - Mode | Value mapping `["0"="Silent","1"="Basic","2"="Strong","3"="Full Speed"]` |
3917+
| dry_left_time | Number:Time | Robot Cleaner - Dry Left Time | |
3918+
| battery_level | Number:Dimensionless | Battery - Battery Level | |
3919+
| charging_state | Number | Battery - Charging State | Value mapping `["1"="Charging","2"="Not Charging","5"="Go Charging"]` |
3920+
| brush_left_time | Number:Time | Main Cleaning Brush - Brush Left Time | |
3921+
| brush_life_level | Number:Dimensionless | Main Cleaning Brush - Brush Life Level | |
3922+
| brush_left_time1 | Number:Time | Side Cleaning Brush - Brush Left Time | |
3923+
| brush_life_level1 | Number:Dimensionless | Side Cleaning Brush - Brush Life Level | |
3924+
| filter_life_level | Number:Dimensionless | Filter - Filter Life Level | |
3925+
| filter_left_time | Number:Time | Filter - Filter Left Time | |
3926+
| mop_life_level | Number:Dimensionless | Mop - Mop Life Level | |
3927+
| mop_left_time | Number:Time | Mop - Mop Left Time | |
3928+
| work_mode | Number | Vacuum Extend - Work Mode | |
3929+
| cleaning_time | Number:Time | Vacuum Extend - Cleaning Time | |
3930+
| cleaning_area | Number | Vacuum Extend - Cleaning Area | |
3931+
| cleaning_mode | Number | Vacuum Extend - Cleaning Mode | Value mapping `["0"="Quiet","1"="Standard","2"="Medium","3"="Strong"]` |
3932+
| mop_mode | Number | Vacuum Extend - Mop Mode | Value mapping `["1"="Low","2"="Medium","3"="High"]` |
3933+
| waterbox_status | Number | Vacuum Extend - Waterbox Status | Value mapping `["0"="No","1"="Yes"]` |
3934+
| task_status | Number | Vacuum Extend - Task Status | |
3935+
| clean_extend_data | String | Vacuum Extend - Clean Extend Data | |
3936+
| break_point_restart | Number | Vacuum Extend - Break Point Restart | Value mapping `["0"="Close","1"="Open"]` |
3937+
| carpet_press | Number | Vacuum Extend - Carpet Press | Value mapping `["0"="Close","1"="Open"]` |
3938+
| serial_number | String | Vacuum Extend - Serial Number | |
3939+
| remote_state | String | Vacuum Extend - Remote State | |
3940+
| clean_rags_tip | Number:Time | Vacuum Extend - Clean Rags Tip | |
3941+
| keep_sweeper_time | Number:Time | Vacuum Extend - Keep Sweeper Time | |
3942+
| faults | String | Vacuum Extend - Faults | |
3943+
| nation_matched | String | Vacuum Extend - Nation Matched | |
3944+
| relocation_status | Number | Vacuum Extend - Relocation Status | |
3945+
| wash_station | Number | Vacuum Extend - Wash Station | |
3946+
| child_lock | Number | Vacuum Extend - Child Lock | Value mapping `["0"="Close","1"="Open"]` |
3947+
| clean_cancel | Number | Vacuum Extend - Clean Cancel | |
3948+
| enable | Switch | Do Not Disturb - Enable | |
3949+
| start_time | String | Do Not Disturb - Start Time | |
3950+
| end_time | String | Do Not Disturb - End Time | |
3951+
| volume | Number | Audio - Volume | |
3952+
| voice_packet_id | String | Audio - Voice Packet Id | |
3953+
| voice_change_state | String | Audio - Voice Change State | |
3954+
| set_voice | String | Audio - Set Voice | |
3955+
| time_zone | String | Time - Time Zone | |
3956+
| timer_clean | String | Time - Timer Clean | |
3957+
| first_clean_time | Number | Clean Logs - First Clean Time | |
3958+
| total_clean_time | Number:Time | Clean Logs - Total Clean Time | |
3959+
| total_clean_times | Number | Clean Logs - Total Clean Times | |
3960+
| total_clean_area | Number | Clean Logs - Total Clean Area | |
3961+
39083962
### Uclean Smart Toilet Seat (<a name="xjx-toilet-pro">xjx.toilet.pro</a>) Channels
39093963

39103964
| Channel | Type | Description | Comment |
@@ -10176,6 +10230,62 @@ Number:Dimentionless fan_percent "Fan Speed %" (G_aircondition) {channel="miio:b
1017610230
String timer "Enhance - Timer" (G_aircondition) {channel="miio:basic:aircondition:timer"}
1017710231
```
1017810232

10233+
### Xiaomi Robot Vacuum X20+ (xiaomi.vacuum.c102gl) item file lines
10234+
10235+
note: Autogenerated example. Replace the id (vacuum) in the channel with your own. Replace `basic` with `generic` in the thing UID depending on how your thing was discovered.
10236+
10237+
```java
10238+
Group G_vacuum "Xiaomi Robot Vacuum X20+" <status>
10239+
String actions "Actions" (G_vacuum) {channel="miio:basic:vacuum:actions"}
10240+
Number status "Robot Cleaner - Status" (G_vacuum) {channel="miio:basic:vacuum:status"}
10241+
Number fault "Robot Cleaner - Device Fault" (G_vacuum) {channel="miio:basic:vacuum:fault"}
10242+
Number mode "Robot Cleaner - Mode" (G_vacuum) {channel="miio:basic:vacuum:mode"}
10243+
Number:Time dry_left_time "Robot Cleaner - Dry Left Time" (G_vacuum) {channel="miio:basic:vacuum:dry_left_time"}
10244+
Number:Dimensionless battery_level "Battery - Battery Level" (G_vacuum) {channel="miio:basic:vacuum:battery_level"}
10245+
Number charging_state "Battery - Charging State" (G_vacuum) {channel="miio:basic:vacuum:charging_state"}
10246+
Number:Time brush_left_time "Main Cleaning Brush - Brush Left Time" (G_vacuum) {channel="miio:basic:vacuum:brush_left_time"}
10247+
Number:Dimensionless brush_life_level "Main Cleaning Brush - Brush Life Level" (G_vacuum) {channel="miio:basic:vacuum:brush_life_level"}
10248+
Number:Time brush_left_time1 "Side Cleaning Brush - Brush Left Time" (G_vacuum) {channel="miio:basic:vacuum:brush_left_time1"}
10249+
Number:Dimensionless brush_life_level1 "Side Cleaning Brush - Brush Life Level" (G_vacuum) {channel="miio:basic:vacuum:brush_life_level1"}
10250+
Number:Dimensionless filter_life_level "Filter - Filter Life Level" (G_vacuum) {channel="miio:basic:vacuum:filter_life_level"}
10251+
Number:Time filter_left_time "Filter - Filter Left Time" (G_vacuum) {channel="miio:basic:vacuum:filter_left_time"}
10252+
Number:Dimensionless mop_life_level "Mop - Mop Life Level" (G_vacuum) {channel="miio:basic:vacuum:mop_life_level"}
10253+
Number:Time mop_left_time "Mop - Mop Left Time" (G_vacuum) {channel="miio:basic:vacuum:mop_left_time"}
10254+
Number work_mode "Vacuum Extend - Work Mode" (G_vacuum) {channel="miio:basic:vacuum:work_mode"}
10255+
Number:Time cleaning_time "Vacuum Extend - Cleaning Time" (G_vacuum) {channel="miio:basic:vacuum:cleaning_time"}
10256+
Number cleaning_area "Vacuum Extend - Cleaning Area" (G_vacuum) {channel="miio:basic:vacuum:cleaning_area"}
10257+
Number cleaning_mode "Vacuum Extend - Cleaning Mode" (G_vacuum) {channel="miio:basic:vacuum:cleaning_mode"}
10258+
Number mop_mode "Vacuum Extend - Mop Mode" (G_vacuum) {channel="miio:basic:vacuum:mop_mode"}
10259+
Number waterbox_status "Vacuum Extend - Waterbox Status" (G_vacuum) {channel="miio:basic:vacuum:waterbox_status"}
10260+
Number task_status "Vacuum Extend - Task Status" (G_vacuum) {channel="miio:basic:vacuum:task_status"}
10261+
String clean_extend_data "Vacuum Extend - Clean Extend Data" (G_vacuum) {channel="miio:basic:vacuum:clean_extend_data"}
10262+
Number break_point_restart "Vacuum Extend - Break Point Restart" (G_vacuum) {channel="miio:basic:vacuum:break_point_restart"}
10263+
Number carpet_press "Vacuum Extend - Carpet Press" (G_vacuum) {channel="miio:basic:vacuum:carpet_press"}
10264+
String serial_number "Vacuum Extend - Serial Number" (G_vacuum) {channel="miio:basic:vacuum:serial_number"}
10265+
String remote_state "Vacuum Extend - Remote State" (G_vacuum) {channel="miio:basic:vacuum:remote_state"}
10266+
Number:Time clean_rags_tip "Vacuum Extend - Clean Rags Tip" (G_vacuum) {channel="miio:basic:vacuum:clean_rags_tip"}
10267+
Number:Time keep_sweeper_time "Vacuum Extend - Keep Sweeper Time" (G_vacuum) {channel="miio:basic:vacuum:keep_sweeper_time"}
10268+
String faults "Vacuum Extend - Faults" (G_vacuum) {channel="miio:basic:vacuum:faults"}
10269+
String nation_matched "Vacuum Extend - Nation Matched" (G_vacuum) {channel="miio:basic:vacuum:nation_matched"}
10270+
Number relocation_status "Vacuum Extend - Relocation Status" (G_vacuum) {channel="miio:basic:vacuum:relocation_status"}
10271+
Number wash_station "Vacuum Extend - Wash Station" (G_vacuum) {channel="miio:basic:vacuum:wash_station"}
10272+
Number child_lock "Vacuum Extend - Child Lock" (G_vacuum) {channel="miio:basic:vacuum:child_lock"}
10273+
Number clean_cancel "Vacuum Extend - Clean Cancel" (G_vacuum) {channel="miio:basic:vacuum:clean_cancel"}
10274+
Switch enable "Do Not Disturb - Enable" (G_vacuum) {channel="miio:basic:vacuum:enable"}
10275+
String start_time "Do Not Disturb - Start Time" (G_vacuum) {channel="miio:basic:vacuum:start_time"}
10276+
String end_time "Do Not Disturb - End Time" (G_vacuum) {channel="miio:basic:vacuum:end_time"}
10277+
Number volume "Audio - Volume" (G_vacuum) {channel="miio:basic:vacuum:volume"}
10278+
String voice_packet_id "Audio - Voice Packet Id" (G_vacuum) {channel="miio:basic:vacuum:voice_packet_id"}
10279+
String voice_change_state "Audio - Voice Change State" (G_vacuum) {channel="miio:basic:vacuum:voice_change_state"}
10280+
String set_voice "Audio - Set Voice" (G_vacuum) {channel="miio:basic:vacuum:set_voice"}
10281+
String time_zone "Time - Time Zone" (G_vacuum) {channel="miio:basic:vacuum:time_zone"}
10282+
String timer_clean "Time - Timer Clean" (G_vacuum) {channel="miio:basic:vacuum:timer_clean"}
10283+
Number first_clean_time "Clean Logs - First Clean Time" (G_vacuum) {channel="miio:basic:vacuum:first_clean_time"}
10284+
Number:Time total_clean_time "Clean Logs - Total Clean Time" (G_vacuum) {channel="miio:basic:vacuum:total_clean_time"}
10285+
Number total_clean_times "Clean Logs - Total Clean Times" (G_vacuum) {channel="miio:basic:vacuum:total_clean_times"}
10286+
Number total_clean_area "Clean Logs - Total Clean Area" (G_vacuum) {channel="miio:basic:vacuum:total_clean_area"}
10287+
```
10288+
1017910289
### Uclean Smart Toilet Seat (xjx.toilet.pro) item file lines
1018010290

1018110291
note: Autogenerated example. Replace the id (toilet) in the channel with your own. Replace `basic` with `generic` in the thing UID depending on how your thing was discovered.
@@ -13048,6 +13158,7 @@ Number lp_autooff_delay "Low Power Limit Time" (G_powerstrip) {channel="miio:bas
1304813158
Number lp_threshold "Low Power Threshold" (G_powerstrip) {channel="miio:basic:powerstrip:lp_threshold"}
1304913159
```
1305013160

13161+
1305113162
### Country Servers
1305213163

1305313164
Known country Servers: cn, de, i2, ru, sg, us

bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/MiIoDevices.java

+1
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,7 @@ public enum MiIoDevices {
312312
"Mi Smart Ultra Electricity Saving Air Conditioner (1.5HP/Inverter/New China Energy Label Level 1)",
313313
THING_TYPE_BASIC),
314314
XIAOMI_REPEATER_V2("xiaomi.repeater.v2", "Mi Wi-Fi Repeater 2", THING_TYPE_UNSUPPORTED),
315+
XIAOMI_VACUUM_C102GL("xiaomi.vacuum.c102gl", "Xiaomi Robot Vacuum X20+", THING_TYPE_BASIC),
315316
XIAOMI_WIFISPEAKER_V1("xiaomi.wifispeaker.v1", "Mi Network Speaker", THING_TYPE_UNSUPPORTED),
316317
XJX_TOILET_PRO("xjx.toilet.pro", "Uclean Smart Toilet Seat", THING_TYPE_BASIC),
317318
XJX_TOILET_PURE("xjx.toilet.pure", "Uclean Smart Toilet pure", THING_TYPE_BASIC),

0 commit comments

Comments
 (0)