]> git.basschouten.com Git - openhab-addons.git/commitdiff
[miio] Improve Viomi vacuums, add docking and route channel & mapping (#11763)
authorMarcel <marcel@verpaalen.com>
Sun, 12 Dec 2021 21:10:51 +0000 (22:10 +0100)
committerGitHub <noreply@github.com>
Sun, 12 Dec 2021 21:10:51 +0000 (22:10 +0100)
Signed-off-by: Marcel Verpaalen <marcel@verpaalen.com>
bundles/org.openhab.binding.miio/README.md
bundles/org.openhab.binding.miio/src/main/resources/OH-INF/i18n/basic.properties
bundles/org.openhab.binding.miio/src/main/resources/database/viomi.vacuum.v8.json

index 11ef52ce5fc98368d2a9cd7b560d2332e0279704..c8710106f295d5c57b55bdf471cf2c8c97a0a4d5 100644 (file)
@@ -2415,60 +2415,63 @@ Note, not all the values need to be in the json file, e.g. a subset of the param
 
 | Channel              | Type                 | Description                              | Comment    |
 |----------------------|----------------------|------------------------------------------|------------|
-| vacuumaction         | Number               | Vacuum Action                            | Value mapping `["1"="Start","0"="Stop","2"="Pause"]` |
-| state                | Number               | State                                    |            |
-| mode                 | Number               | Mode                                     |            |
-| err_state            | Number               | Error                                    |            |
+| vacuumaction         | Number               | Vacuum Action                            | Value mapping `["1"="Start","0"="Stop","2"="Pause","3"="Dock"]` |
+| state                | Number               | State                                    | Value mapping `["0"="Idle Undocked","1"="Idle","2"="Paused","3"="Sweeping","4"="Go Charging","5"="Charging","6"="Sweeping and Mopping","7"="Mopping"]` |
+| mode                 | Number               | Clean Mode                               | Value mapping `["0"="Everywhere","1"="Edges","2"="Surface","3"="Fixed Location"]` |
+| err_state            | Number               | Error                                    | Value mapping `["0"="Sleeping and not charging","500"="Radar timed out","501"="Wheels stuck","502"="Low battery","503"="Dust bin missing","508"="Uneven ground","509"="Cliff sensor erro","510"="Collision sensor error","511"="Could not return to dock","512"="Could not return to dock","513"="Could not navigate","514"="Vacuum stuck","515"="Charging erro","516"="Mop temperature error","521"="Water tank is not installed","522"="Mop is not installed","525"="Insufficient water in water tank","527"="Remove mop","528"="Dust bin missing","529"="Mop and water tank missing","530"="Mop and water tank missin","531"="Water tank is not installed","2101"="Unsufficient battery, continuing cleaning after recharge","2103"="Charging","2104"="Fully charged"]` |
 | battery_life         | Number               | Battery                                  |            |
-| box_type             | Number               | Box type                                 |            |
+| box_type             | Number               | Box type                                 | Value mapping `["0"="No Bin","1"="Sweep","2"="Mop","3"="Sweep and Mop"]` |
 | mop_type             | Number               | mop_type                                 |            |
+| mop_route            | Number               | Mop Route                                | Value mapping `["0"="S-Pattern","1"="Y-Pattern"]` |
 | s_time               | Number               | Clean time                               |            |
 | s_area               | Number               | Clean Area                               |            |
-| suction_grade        | Number               | suction_grade                            |            |
-| water_grade          | Number               | water_grade                              |            |
+| suction_grade        | Number               | suction_grade                            | Value mapping `["0"="Silent","1"="Basic","2"="Medium","3"="Strong"]` |
+| water_grade          | Number               | water_grade                              | Value mapping `["11"="Low","12"="Medium","13"="High"]` |
 | remember_map         | Number               | remember_map                             |            |
 | has_map              | Number               | has_map                                  |            |
-| is_mop               | Number               | is_mop                                   |            |
+| is_mop               | Number               | is_mop                                   | Value mapping `["0"="Vacuum","1"="Vacuum And Mop","2"="Mop","3"="CleanZone","4"="CleanSpot"]` |
 | has_newmap           | Number               | has_newmap                               |            |
 
 ### Mi Robot Vacuum-Mop P (<a name="viomi-vacuum-v7">viomi.vacuum.v7</a>) Channels
 
 | Channel              | Type                 | Description                              | Comment    |
 |----------------------|----------------------|------------------------------------------|------------|
-| vacuumaction         | Number               | Vacuum Action                            | Value mapping `["1"="Start","0"="Stop","2"="Pause"]` |
-| state                | Number               | State                                    |            |
-| mode                 | Number               | Mode                                     |            |
-| err_state            | Number               | Error                                    |            |
+| vacuumaction         | Number               | Vacuum Action                            | Value mapping `["1"="Start","0"="Stop","2"="Pause","3"="Dock"]` |
+| state                | Number               | State                                    | Value mapping `["0"="Idle Undocked","1"="Idle","2"="Paused","3"="Sweeping","4"="Go Charging","5"="Charging","6"="Sweeping and Mopping","7"="Mopping"]` |
+| mode                 | Number               | Clean Mode                               | Value mapping `["0"="Everywhere","1"="Edges","2"="Surface","3"="Fixed Location"]` |
+| err_state            | Number               | Error                                    | Value mapping `["0"="Sleeping and not charging","500"="Radar timed out","501"="Wheels stuck","502"="Low battery","503"="Dust bin missing","508"="Uneven ground","509"="Cliff sensor erro","510"="Collision sensor error","511"="Could not return to dock","512"="Could not return to dock","513"="Could not navigate","514"="Vacuum stuck","515"="Charging erro","516"="Mop temperature error","521"="Water tank is not installed","522"="Mop is not installed","525"="Insufficient water in water tank","527"="Remove mop","528"="Dust bin missing","529"="Mop and water tank missing","530"="Mop and water tank missin","531"="Water tank is not installed","2101"="Unsufficient battery, continuing cleaning after recharge","2103"="Charging","2104"="Fully charged"]` |
 | battery_life         | Number               | Battery                                  |            |
-| box_type             | Number               | Box type                                 |            |
+| box_type             | Number               | Box type                                 | Value mapping `["0"="No Bin","1"="Sweep","2"="Mop","3"="Sweep and Mop"]` |
 | mop_type             | Number               | mop_type                                 |            |
+| mop_route            | Number               | Mop Route                                | Value mapping `["0"="S-Pattern","1"="Y-Pattern"]` |
 | s_time               | Number               | Clean time                               |            |
 | s_area               | Number               | Clean Area                               |            |
-| suction_grade        | Number               | suction_grade                            |            |
-| water_grade          | Number               | water_grade                              |            |
+| suction_grade        | Number               | suction_grade                            | Value mapping `["0"="Silent","1"="Basic","2"="Medium","3"="Strong"]` |
+| water_grade          | Number               | water_grade                              | Value mapping `["11"="Low","12"="Medium","13"="High"]` |
 | remember_map         | Number               | remember_map                             |            |
 | has_map              | Number               | has_map                                  |            |
-| is_mop               | Number               | is_mop                                   |            |
+| is_mop               | Number               | is_mop                                   | Value mapping `["0"="Vacuum","1"="Vacuum And Mop","2"="Mop","3"="CleanZone","4"="CleanSpot"]` |
 | has_newmap           | Number               | has_newmap                               |            |
 
 ### Mi Robot Vacuum-Mop P (<a name="viomi-vacuum-v8">viomi.vacuum.v8</a>) Channels
 
 | Channel              | Type                 | Description                              | Comment    |
 |----------------------|----------------------|------------------------------------------|------------|
-| vacuumaction         | Number               | Vacuum Action                            | Value mapping `["1"="Start","0"="Stop","2"="Pause"]` |
-| state                | Number               | State                                    |            |
-| mode                 | Number               | Mode                                     |            |
-| err_state            | Number               | Error                                    |            |
+| vacuumaction         | Number               | Vacuum Action                            | Value mapping `["1"="Start","0"="Stop","2"="Pause","3"="Dock"]` |
+| state                | Number               | State                                    | Value mapping `["0"="Idle Undocked","1"="Idle","2"="Paused","3"="Sweeping","4"="Go Charging","5"="Charging","6"="Sweeping and Mopping","7"="Mopping"]` |
+| mode                 | Number               | Clean Mode                               | Value mapping `["0"="Everywhere","1"="Edges","2"="Surface","3"="Fixed Location"]` |
+| err_state            | Number               | Error                                    | Value mapping `["0"="Sleeping and not charging","500"="Radar timed out","501"="Wheels stuck","502"="Low battery","503"="Dust bin missing","508"="Uneven ground","509"="Cliff sensor erro","510"="Collision sensor error","511"="Could not return to dock","512"="Could not return to dock","513"="Could not navigate","514"="Vacuum stuck","515"="Charging erro","516"="Mop temperature error","521"="Water tank is not installed","522"="Mop is not installed","525"="Insufficient water in water tank","527"="Remove mop","528"="Dust bin missing","529"="Mop and water tank missing","530"="Mop and water tank missin","531"="Water tank is not installed","2101"="Unsufficient battery, continuing cleaning after recharge","2103"="Charging","2104"="Fully charged"]` |
 | battery_life         | Number               | Battery                                  |            |
-| box_type             | Number               | Box type                                 |            |
+| box_type             | Number               | Box type                                 | Value mapping `["0"="No Bin","1"="Sweep","2"="Mop","3"="Sweep and Mop"]` |
 | mop_type             | Number               | mop_type                                 |            |
+| mop_route            | Number               | Mop Route                                | Value mapping `["0"="S-Pattern","1"="Y-Pattern"]` |
 | s_time               | Number               | Clean time                               |            |
 | s_area               | Number               | Clean Area                               |            |
-| suction_grade        | Number               | suction_grade                            |            |
-| water_grade          | Number               | water_grade                              |            |
+| suction_grade        | Number               | suction_grade                            | Value mapping `["0"="Silent","1"="Basic","2"="Medium","3"="Strong"]` |
+| water_grade          | Number               | water_grade                              | Value mapping `["11"="Low","12"="Medium","13"="High"]` |
 | remember_map         | Number               | remember_map                             |            |
 | has_map              | Number               | has_map                                  |            |
-| is_mop               | Number               | is_mop                                   |            |
+| is_mop               | Number               | is_mop                                   | Value mapping `["0"="Vacuum","1"="Vacuum And Mop","2"="Mop","3"="CleanZone","4"="CleanSpot"]` |
 | has_newmap           | Number               | has_newmap                               |            |
 
 ### Viomi S9 (<a name="viomi-vacuum-v18">viomi.vacuum.v18</a>) Channels
@@ -7716,11 +7719,12 @@ note: Autogenerated example. Replace the id (vacuum) in the channel with your ow
 Group G_vacuum "Viomi Cleaning Robot V-RVCLM21B" <status>
 Number vacuumaction "Vacuum Action" (G_vacuum) {channel="miio:basic:vacuum:vacuumaction"}
 Number state "State" (G_vacuum) {channel="miio:basic:vacuum:state"}
-Number mode "Mode" (G_vacuum) {channel="miio:basic:vacuum:mode"}
+Number mode "Clean Mode" (G_vacuum) {channel="miio:basic:vacuum:mode"}
 Number err_state "Error" (G_vacuum) {channel="miio:basic:vacuum:err_state"}
 Number battery_life "Battery" (G_vacuum) {channel="miio:basic:vacuum:battery_life"}
 Number box_type "Box type" (G_vacuum) {channel="miio:basic:vacuum:box_type"}
 Number mop_type "mop_type" (G_vacuum) {channel="miio:basic:vacuum:mop_type"}
+Number mop_route "Mop Route" (G_vacuum) {channel="miio:basic:vacuum:mop_route"}
 Number s_time "Clean time" (G_vacuum) {channel="miio:basic:vacuum:s_time"}
 Number s_area "Clean Area" (G_vacuum) {channel="miio:basic:vacuum:s_area"}
 Number suction_grade "suction_grade" (G_vacuum) {channel="miio:basic:vacuum:suction_grade"}
@@ -7739,11 +7743,12 @@ note: Autogenerated example. Replace the id (vacuum) in the channel with your ow
 Group G_vacuum "Mi Robot Vacuum-Mop P" <status>
 Number vacuumaction "Vacuum Action" (G_vacuum) {channel="miio:basic:vacuum:vacuumaction"}
 Number state "State" (G_vacuum) {channel="miio:basic:vacuum:state"}
-Number mode "Mode" (G_vacuum) {channel="miio:basic:vacuum:mode"}
+Number mode "Clean Mode" (G_vacuum) {channel="miio:basic:vacuum:mode"}
 Number err_state "Error" (G_vacuum) {channel="miio:basic:vacuum:err_state"}
 Number battery_life "Battery" (G_vacuum) {channel="miio:basic:vacuum:battery_life"}
 Number box_type "Box type" (G_vacuum) {channel="miio:basic:vacuum:box_type"}
 Number mop_type "mop_type" (G_vacuum) {channel="miio:basic:vacuum:mop_type"}
+Number mop_route "Mop Route" (G_vacuum) {channel="miio:basic:vacuum:mop_route"}
 Number s_time "Clean time" (G_vacuum) {channel="miio:basic:vacuum:s_time"}
 Number s_area "Clean Area" (G_vacuum) {channel="miio:basic:vacuum:s_area"}
 Number suction_grade "suction_grade" (G_vacuum) {channel="miio:basic:vacuum:suction_grade"}
@@ -7762,11 +7767,12 @@ note: Autogenerated example. Replace the id (vacuum) in the channel with your ow
 Group G_vacuum "Mi Robot Vacuum-Mop P" <status>
 Number vacuumaction "Vacuum Action" (G_vacuum) {channel="miio:basic:vacuum:vacuumaction"}
 Number state "State" (G_vacuum) {channel="miio:basic:vacuum:state"}
-Number mode "Mode" (G_vacuum) {channel="miio:basic:vacuum:mode"}
+Number mode "Clean Mode" (G_vacuum) {channel="miio:basic:vacuum:mode"}
 Number err_state "Error" (G_vacuum) {channel="miio:basic:vacuum:err_state"}
 Number battery_life "Battery" (G_vacuum) {channel="miio:basic:vacuum:battery_life"}
 Number box_type "Box type" (G_vacuum) {channel="miio:basic:vacuum:box_type"}
 Number mop_type "mop_type" (G_vacuum) {channel="miio:basic:vacuum:mop_type"}
+Number mop_route "Mop Route" (G_vacuum) {channel="miio:basic:vacuum:mop_route"}
 Number s_time "Clean time" (G_vacuum) {channel="miio:basic:vacuum:s_time"}
 Number s_area "Clean Area" (G_vacuum) {channel="miio:basic:vacuum:s_area"}
 Number suction_grade "suction_grade" (G_vacuum) {channel="miio:basic:vacuum:suction_grade"}
index 124919afdbec3330080ef08d2ad150732d0a7505..e5ae9d8e859afca2bfdee2c9286945875fe7de6d 100644 (file)
@@ -955,7 +955,8 @@ ch.viomi.vacuum.v8.err_state = Error
 ch.viomi.vacuum.v8.has_map = has_map
 ch.viomi.vacuum.v8.has_newmap = has_newmap
 ch.viomi.vacuum.v8.is_mop = is_mop
-ch.viomi.vacuum.v8.mode = Mode
+ch.viomi.vacuum.v8.mode = Clean Mode
+ch.viomi.vacuum.v8.mop_route = Mop Route
 ch.viomi.vacuum.v8.mop_type = mop_type
 ch.viomi.vacuum.v8.remember_map = remember_map
 ch.viomi.vacuum.v8.s_area = Clean Area
@@ -2074,6 +2075,65 @@ option.viomi.vacuum.v18-miot.water-grade-2 = 3 Blocks
 option.viomi.vacuum.v18-miot.wdr-mode-0 = Mode 0
 option.viomi.vacuum.v18-miot.wdr-mode-1 = Mode 1
 option.viomi.vacuum.v18-miot.wdr-mode-2 = Mode 2
+option.viomi.vacuum.v8.box_type-0 = No Bin
+option.viomi.vacuum.v8.box_type-1 = Sweep
+option.viomi.vacuum.v8.box_type-2 = Mop
+option.viomi.vacuum.v8.box_type-3 = Sweep and Mop
+option.viomi.vacuum.v8.err_state-0 = Sleeping and not charging
+option.viomi.vacuum.v8.err_state-2101 = Unsufficient battery, continuing cleaning after recharge
+option.viomi.vacuum.v8.err_state-2103 = Charging
+option.viomi.vacuum.v8.err_state-2104 = Fully charged
+option.viomi.vacuum.v8.err_state-500 = Radar timed out
+option.viomi.vacuum.v8.err_state-501 = Wheels stuck
+option.viomi.vacuum.v8.err_state-502 = Low battery
+option.viomi.vacuum.v8.err_state-503 = Dust bin missing
+option.viomi.vacuum.v8.err_state-508 = Uneven ground
+option.viomi.vacuum.v8.err_state-509 = Cliff sensor erro
+option.viomi.vacuum.v8.err_state-510 = Collision sensor error
+option.viomi.vacuum.v8.err_state-511 = Could not return to dock
+option.viomi.vacuum.v8.err_state-512 = Could not return to dock
+option.viomi.vacuum.v8.err_state-513 = Could not navigate
+option.viomi.vacuum.v8.err_state-514 = Vacuum stuck
+option.viomi.vacuum.v8.err_state-515 = Charging erro
+option.viomi.vacuum.v8.err_state-516 = Mop temperature error
+option.viomi.vacuum.v8.err_state-521 = Water tank is not installed
+option.viomi.vacuum.v8.err_state-522 = Mop is not installed
+option.viomi.vacuum.v8.err_state-525 = Insufficient water in water tank
+option.viomi.vacuum.v8.err_state-527 = Remove mop
+option.viomi.vacuum.v8.err_state-528 = Dust bin missing
+option.viomi.vacuum.v8.err_state-529 = Mop and water tank missing
+option.viomi.vacuum.v8.err_state-530 = Mop and water tank missin
+option.viomi.vacuum.v8.err_state-531 = Water tank is not installed
+option.viomi.vacuum.v8.is_mop-0 = Vacuum
+option.viomi.vacuum.v8.is_mop-1 = Vacuum And Mop
+option.viomi.vacuum.v8.is_mop-2 = Mop
+option.viomi.vacuum.v8.is_mop-3 = CleanZone
+option.viomi.vacuum.v8.is_mop-4 = CleanSpot
+option.viomi.vacuum.v8.mode-0 = Everywhere
+option.viomi.vacuum.v8.mode-1 = Edges
+option.viomi.vacuum.v8.mode-2 = Surface
+option.viomi.vacuum.v8.mode-3 = Fixed Location
+option.viomi.vacuum.v8.mop_route-0 = S-Pattern
+option.viomi.vacuum.v8.mop_route-1 = Y-Pattern
+option.viomi.vacuum.v8.state-0 = Idle Undocked
+option.viomi.vacuum.v8.state-1 = Idle
+option.viomi.vacuum.v8.state-2 = Paused
+option.viomi.vacuum.v8.state-3 = Sweeping
+option.viomi.vacuum.v8.state-4 = Go Charging
+option.viomi.vacuum.v8.state-5 = Charging
+option.viomi.vacuum.v8.state-6 = Sweeping and Mopping
+option.viomi.vacuum.v8.state-7 = Mopping
+option.viomi.vacuum.v8.suction_grade-0 = Silent
+option.viomi.vacuum.v8.suction_grade-1 = Basic
+option.viomi.vacuum.v8.suction_grade-2 = Medium
+option.viomi.vacuum.v8.suction_grade-3 = Strong
+option.viomi.vacuum.v8.vacuumaction-0 = Stop
+option.viomi.vacuum.v8.vacuumaction-1 = Start
+option.viomi.vacuum.v8.vacuumaction-2 = Pause
+option.viomi.vacuum.v8.vacuumaction-3 = Dock
+option.viomi.vacuum.v8.water_grade-11 = Low
+option.viomi.vacuum.v8.water_grade-12 = Medium
+option.viomi.vacuum.v8.water_grade-13 = High
 option.xiaomi.aircondition.ma1-miot.fan-level-0 = Auto
 option.xiaomi.aircondition.ma1-miot.fan-level-1 = Level1
 option.xiaomi.aircondition.ma1-miot.fan-level-2 = Level2
index 1a7de8e576dff3b7cf564bd66d5c18c1c147cc19..3c101f9ffbad379e57243ab21a138802f1707d64 100644 (file)
                                                {
                                                        "value": "2",
                                                        "label": "Pause"
+                                               },
+                                               {
+                                                       "value": "3",
+                                                       "label": "Dock"
                                                }
                                        ]
                                },
                                                        0,
                                                        "$value$",
                                                        0
-                                               ]
+                                               ],
+                                               "condition": {
+                                                       "name": "matchValue",
+                                                       "parameters": [
+                                                               {
+                                                                       "matchValue": "0"
+                                                               },
+                                                               {
+                                                                       "matchValue": "1"
+                                                               },
+                                                               {
+                                                                       "matchValue": "2"
+                                                               }
+                                                       ]
+                                               }
+                                       },
+                                       {
+                                               "command": "set_charge",
+                                               "parameterType": "NUMBER",
+                                               "condition": {
+                                                       "name": "matchValue",
+                                                       "parameters": [
+                                                               {
+                                                                       "matchValue": "3",
+                                                                       "returnValue": 1
+                                                               }
+                                                       ]
+                                               }
                                        }
                                ],
-                               "readmeComment": "Value mapping `[\"1\"\u003d\"Start\",\"0\"\u003d\"Stop\",\"2\"\u003d\"Pause\"]`"
+                               "readmeComment": "Value mapping `[\"1\"\u003d\"Start\",\"0\"\u003d\"Stop\",\"2\"\u003d\"Pause\",\"3\"\u003d\"Dock\"]`"
                        },
                        {
                                "property": "run_state",
                                "friendlyName": "State",
                                "channel": "state",
                                "type": "Number",
+                               "stateDescription": {
+                                       "readOnly": true,
+                                       "options": [
+                                               {
+                                                       "value": "0",
+                                                       "label": "Idle Undocked"
+                                               },
+                                               {
+                                                       "value": "1",
+                                                       "label": "Idle"
+                                               },
+                                               {
+                                                       "value": "2",
+                                                       "label": "Paused"
+                                               },
+                                               {
+                                                       "value": "3",
+                                                       "label": "Sweeping"
+                                               },
+                                               {
+                                                       "value": "4",
+                                                       "label": "Go Charging"
+                                               },
+                                               {
+                                                       "value": "5",
+                                                       "label": "Charging"
+                                               },
+                                               {
+                                                       "value": "6",
+                                                       "label": "Sweeping and Mopping"
+                                               },
+                                               {
+                                                       "value": "7",
+                                                       "label": "Mopping"
+                                               }
+                                       ]
+                               },
                                "refresh": true,
-                               "actions": []
+                               "actions": [],
+                               "readmeComment": "Value mapping `[\"0\"\u003d\"Idle Undocked\",\"1\"\u003d\"Idle\",\"2\"\u003d\"Paused\",\"3\"\u003d\"Sweeping\",\"4\"\u003d\"Go Charging\",\"5\"\u003d\"Charging\",\"6\"\u003d\"Sweeping and Mopping\",\"7\"\u003d\"Mopping\"]`"
                        },
                        {
                                "property": "mode",
-                               "friendlyName": "Mode",
+                               "friendlyName": "Clean Mode",
                                "channel": "mode",
                                "type": "Number",
+                               "stateDescription": {
+                                       "readOnly": true,
+                                       "options": [
+                                               {
+                                                       "value": "0",
+                                                       "label": "Everywhere"
+                                               },
+                                               {
+                                                       "value": "1",
+                                                       "label": "Edges"
+                                               },
+                                               {
+                                                       "value": "2",
+                                                       "label": "Surface"
+                                               },
+                                               {
+                                                       "value": "3",
+                                                       "label": "Fixed Location"
+                                               }
+                                       ]
+                               },
                                "refresh": true,
                                "actions": [
                                        {
                                ],
                                "tags": [
                                        "Control"
-                               ]
+                               ],
+                               "readmeComment": "Value mapping `[\"0\"\u003d\"Everywhere\",\"1\"\u003d\"Edges\",\"2\"\u003d\"Surface\",\"3\"\u003d\"Fixed Location\"]`"
                        },
                        {
                                "property": "err_state",
                                "friendlyName": "Error",
                                "channel": "err_state",
                                "type": "Number",
+                               "stateDescription": {
+                                       "readOnly": true,
+                                       "options": [
+                                               {
+                                                       "value": "0",
+                                                       "label": "Sleeping and not charging"
+                                               },
+                                               {
+                                                       "value": "500",
+                                                       "label": "Radar timed out"
+                                               },
+                                               {
+                                                       "value": "501",
+                                                       "label": "Wheels stuck"
+                                               },
+                                               {
+                                                       "value": "502",
+                                                       "label": "Low battery"
+                                               },
+                                               {
+                                                       "value": "503",
+                                                       "label": "Dust bin missing"
+                                               },
+                                               {
+                                                       "value": "508",
+                                                       "label": "Uneven ground"
+                                               },
+                                               {
+                                                       "value": "509",
+                                                       "label": "Cliff sensor erro"
+                                               },
+                                               {
+                                                       "value": "510",
+                                                       "label": "Collision sensor error"
+                                               },
+                                               {
+                                                       "value": "511",
+                                                       "label": "Could not return to dock"
+                                               },
+                                               {
+                                                       "value": "512",
+                                                       "label": "Could not return to dock"
+                                               },
+                                               {
+                                                       "value": "513",
+                                                       "label": "Could not navigate"
+                                               },
+                                               {
+                                                       "value": "514",
+                                                       "label": "Vacuum stuck"
+                                               },
+                                               {
+                                                       "value": "515",
+                                                       "label": "Charging erro"
+                                               },
+                                               {
+                                                       "value": "516",
+                                                       "label": "Mop temperature error"
+                                               },
+                                               {
+                                                       "value": "521",
+                                                       "label": "Water tank is not installed"
+                                               },
+                                               {
+                                                       "value": "522",
+                                                       "label": "Mop is not installed"
+                                               },
+                                               {
+                                                       "value": "525",
+                                                       "label": "Insufficient water in water tank"
+                                               },
+                                               {
+                                                       "value": "527",
+                                                       "label": "Remove mop"
+                                               },
+                                               {
+                                                       "value": "528",
+                                                       "label": "Dust bin missing"
+                                               },
+                                               {
+                                                       "value": "529",
+                                                       "label": "Mop and water tank missing"
+                                               },
+                                               {
+                                                       "value": "530",
+                                                       "label": "Mop and water tank missin"
+                                               },
+                                               {
+                                                       "value": "531",
+                                                       "label": "Water tank is not installed"
+                                               },
+                                               {
+                                                       "value": "2101",
+                                                       "label": "Unsufficient battery, continuing cleaning after recharge"
+                                               },
+                                               {
+                                                       "value": "2103",
+                                                       "label": "Charging"
+                                               },
+                                               {
+                                                       "value": "2104",
+                                                       "label": "Fully charged"
+                                               }
+                                       ]
+                               },
                                "refresh": true,
-                               "actions": []
+                               "actions": [],
+                               "readmeComment": "Value mapping `[\"0\"\u003d\"Sleeping and not charging\",\"500\"\u003d\"Radar timed out\",\"501\"\u003d\"Wheels stuck\",\"502\"\u003d\"Low battery\",\"503\"\u003d\"Dust bin missing\",\"508\"\u003d\"Uneven ground\",\"509\"\u003d\"Cliff sensor erro\",\"510\"\u003d\"Collision sensor error\",\"511\"\u003d\"Could not return to dock\",\"512\"\u003d\"Could not return to dock\",\"513\"\u003d\"Could not navigate\",\"514\"\u003d\"Vacuum stuck\",\"515\"\u003d\"Charging erro\",\"516\"\u003d\"Mop temperature error\",\"521\"\u003d\"Water tank is not installed\",\"522\"\u003d\"Mop is not installed\",\"525\"\u003d\"Insufficient water in water tank\",\"527\"\u003d\"Remove mop\",\"528\"\u003d\"Dust bin missing\",\"529\"\u003d\"Mop and water tank missing\",\"530\"\u003d\"Mop and water tank missin\",\"531\"\u003d\"Water tank is not installed\",\"2101\"\u003d\"Unsufficient battery, continuing cleaning after recharge\",\"2103\"\u003d\"Charging\",\"2104\"\u003d\"Fully charged\"]`"
                        },
                        {
                                "property": "battary_life",
                                "friendlyName": "Box type",
                                "channel": "box_type",
                                "type": "Number",
+                               "stateDescription": {
+                                       "readOnly": true,
+                                       "options": [
+                                               {
+                                                       "value": "0",
+                                                       "label": "No Bin"
+                                               },
+                                               {
+                                                       "value": "1",
+                                                       "label": "Sweep"
+                                               },
+                                               {
+                                                       "value": "2",
+                                                       "label": "Mop"
+                                               },
+                                               {
+                                                       "value": "3",
+                                                       "label": "Sweep and Mop"
+                                               }
+                                       ]
+                               },
                                "refresh": true,
                                "actions": [
                                        {
                                                "parameterType": "EMPTY"
                                        }
-                               ]
+                               ],
+                               "readmeComment": "Value mapping `[\"0\"\u003d\"No Bin\",\"1\"\u003d\"Sweep\",\"2\"\u003d\"Mop\",\"3\"\u003d\"Sweep and Mop\"]`"
                        },
                        {
                                "property": "mop_type",
                                "friendlyName": "mop_type",
                                "channel": "mop_type",
                                "type": "Number",
+                               "actions": []
+                       },
+                       {
+                               "property": "mop_route",
+                               "friendlyName": "Mop Route",
+                               "channel": "mop_route",
+                               "type": "Number",
+                               "stateDescription": {
+                                       "options": [
+                                               {
+                                                       "value": "0",
+                                                       "label": "S-Pattern"
+                                               },
+                                               {
+                                                       "value": "1",
+                                                       "label": "Y-Pattern"
+                                               }
+                                       ]
+                               },
                                "refresh": true,
                                "actions": [
                                        {
-                                               "command": "set_mode",
+                                               "command": "set_moproute",
                                                "parameterType": "NUMBER"
                                        }
-                               ]
+                               ],
+                               "readmeComment": "Value mapping `[\"0\"\u003d\"S-Pattern\",\"1\"\u003d\"Y-Pattern\"]`"
                        },
                        {
                                "property": "s_time",
                                "friendlyName": "suction_grade",
                                "channel": "suction_grade",
                                "type": "Number",
+                               "stateDescription": {
+                                       "options": [
+                                               {
+                                                       "value": "0",
+                                                       "label": "Silent"
+                                               },
+                                               {
+                                                       "value": "1",
+                                                       "label": "Basic"
+                                               },
+                                               {
+                                                       "value": "2",
+                                                       "label": "Medium"
+                                               },
+                                               {
+                                                       "value": "3",
+                                                       "label": "Strong"
+                                               }
+                                       ]
+                               },
                                "refresh": true,
                                "actions": [
                                        {
                                                "command": "set_suction",
                                                "parameterType": "NUMBER"
                                        }
-                               ]
+                               ],
+                               "readmeComment": "Value mapping `[\"0\"\u003d\"Silent\",\"1\"\u003d\"Basic\",\"2\"\u003d\"Medium\",\"3\"\u003d\"Strong\"]`"
                        },
                        {
                                "property": "water_grade",
                                "friendlyName": "water_grade",
                                "channel": "water_grade",
                                "type": "Number",
+                               "stateDescription": {
+                                       "options": [
+                                               {
+                                                       "value": "11",
+                                                       "label": "Low"
+                                               },
+                                               {
+                                                       "value": "12",
+                                                       "label": "Medium"
+                                               },
+                                               {
+                                                       "value": "13",
+                                                       "label": "High"
+                                               }
+                                       ]
+                               },
                                "refresh": true,
                                "actions": [
                                        {
                                                "command": "set_suction",
                                                "parameterType": "NUMBER"
                                        }
-                               ]
+                               ],
+                               "readmeComment": "Value mapping `[\"11\"\u003d\"Low\",\"12\"\u003d\"Medium\",\"13\"\u003d\"High\"]`"
                        },
                        {
                                "property": "remember_map",
                                "friendlyName": "is_mop",
                                "channel": "is_mop",
                                "type": "Number",
+                               "stateDescription": {
+                                       "options": [
+                                               {
+                                                       "value": "0",
+                                                       "label": "Vacuum"
+                                               },
+                                               {
+                                                       "value": "1",
+                                                       "label": "Vacuum And Mop"
+                                               },
+                                               {
+                                                       "value": "2",
+                                                       "label": "Mop"
+                                               },
+                                               {
+                                                       "value": "3",
+                                                       "label": "CleanZone"
+                                               },
+                                               {
+                                                       "value": "4",
+                                                       "label": "CleanSpot"
+                                               }
+                                       ]
+                               },
                                "refresh": true,
-                               "actions": []
+                               "actions": [],
+                               "readmeComment": "Value mapping `[\"0\"\u003d\"Vacuum\",\"1\"\u003d\"Vacuum And Mop\",\"2\"\u003d\"Mop\",\"3\"\u003d\"CleanZone\",\"4\"\u003d\"CleanSpot\"]`"
                        },
                        {
                                "property": "has_newmap",