]> git.basschouten.com Git - openhab-addons.git/commitdiff
[miio] Add Roborock S7/S7MaxV mop mode (#16608)
authorRĂ¼diger Sopp <ruediger.sopp@gmail.com>
Fri, 5 Apr 2024 19:10:32 +0000 (21:10 +0200)
committerGitHub <noreply@github.com>
Fri, 5 Apr 2024 19:10:32 +0000 (21:10 +0200)
* [miio] Add Roborock S7/S7MaxV mop mode
Signed-off-by: Ruediger Sopp <ruediger.sopp@gmail.com>
bundles/org.openhab.binding.miio/README.base.md
bundles/org.openhab.binding.miio/README.md
bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/MiIoCommand.java
bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/handler/MiIoVacuumHandler.java
bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/robot/RobotCababilities.java
bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/robot/StatusDTO.java
bundles/org.openhab.binding.miio/src/main/resources/OH-INF/i18n/miio.properties
bundles/org.openhab.binding.miio/src/main/resources/OH-INF/thing/vacuumThing.xml

index 454138ad94e961fa52d1db8f55b725736feb9609..f672cd585ef7bc34e33ac16fcc26fc3cebf8b0e7 100644 (file)
@@ -248,6 +248,7 @@ Additionally depending on the capabilities of your robot vacuum other channels m
 | Switch  | status#water_box_status           | Water Box Status           |
 | Switch  | status#lock_status                | Lock Status                |
 | Number  | status#water_box_mode             | Water Box Mode             |
+| Number  | status#mop_mode                   | Mop Mode                   |
 | Switch  | status#water_box_carriage_status  | Water Box Carriage Status  |
 | Switch  | status#mop_forbidden_enable       | Mop Forbidden              |
 | Switch  | status#is_locating                | Robot is locating          |
index 761a80f3a2b3ca07077e9f4c7f8873905430fd2c..fcf6b242a2e7e78e708066a3b7ec0e2d01df4b01 100644 (file)
@@ -642,6 +642,7 @@ Additionally depending on the capabilities of your robot vacuum other channels m
 | Switch  | status#water_box_status           | Water Box Status           |
 | Switch  | status#lock_status                | Lock Status                |
 | Number  | status#water_box_mode             | Water Box Mode             |
+| Number  | status#mop_mode                   | Mop Mode                   |
 | Switch  | status#water_box_carriage_status  | Water Box Carriage Status  |
 | Switch  | status#mop_forbidden_enable       | Mop Forbidden              |
 | Switch  | status#is_locating                | Robot is locating          |
index 15c01f234d6f2a3b500489061b090d0848a7c6e9..f55083c6d4d85a883defba15ca38699e3136bf79 100644 (file)
@@ -79,6 +79,7 @@ public enum MiIoCommand {
     SET_MODE("set_custom_mode"),
     GET_MODE("get_custom_mode"),
     SET_WATERBOX_MODE("set_water_box_custom_mode"),
+    SET_MOP_MODE("set_mop_mode"),
 
     TIMERZONE_SET("set_timezone"),
     TIMERZONE_GET("get_timezone"),
index b0cb52ef8193d713f307927551de5242e19d8675..de5da91fa50a9ee545a3bb7b2aba23b22e22afd8 100644 (file)
@@ -250,6 +250,11 @@ public class MiIoVacuumHandler extends MiIoAbstractHandler {
             forceStatusUpdate();
             return;
         }
+        if (channelUID.getId().equals(RobotCababilities.MOP_MODE.getChannel())) {
+            sendCommand(MiIoCommand.SET_MOP_MODE, "[" + command.toString() + "]");
+            forceStatusUpdate();
+            return;
+        }
         if (channelUID.getId().equals(RobotCababilities.SEGMENT_CLEAN.getChannel()) && !command.toString().isEmpty()
                 && !command.toString().contentEquals("-")) {
             sendCommand(MiIoCommand.START_SEGMENT, "[" + command.toString() + "]");
@@ -383,6 +388,9 @@ public class MiIoVacuumHandler extends MiIoAbstractHandler {
         if (deviceCapabilities.containsKey(RobotCababilities.WATERBOX_MODE)) {
             safeUpdateState(RobotCababilities.WATERBOX_MODE.getChannel(), statusInfo.getWaterBoxMode());
         }
+        if (deviceCapabilities.containsKey(RobotCababilities.MOP_MODE)) {
+            safeUpdateState(RobotCababilities.MOP_MODE.getChannel(), statusInfo.getMopMode());
+        }
         if (deviceCapabilities.containsKey(RobotCababilities.WATERBOX_STATUS)) {
             safeUpdateState(RobotCababilities.WATERBOX_STATUS.getChannel(), statusInfo.getWaterBoxStatus());
         }
index c61f8d72416f3888ba6872bd790765a3816c0b4d..0f5c104b74f944a542c5d0442aed4637f9d942e2 100644 (file)
@@ -26,6 +26,7 @@ public enum RobotCababilities {
     WATERBOX_STATUS("water_box_status", "status#water_box_status", "miio:water_box_status", ""),
     LOCKSTATUS("lock_status", "status#lock_status", "miio:lock_status", ""),
     WATERBOX_MODE("water_box_mode", "status#water_box_mode", "miio:water_box_mode", ""),
+    MOP_MODE("mop_mode", "status#mop_mode", "miio:mop_mode", ""),
     WATERBOX_CARRIAGE("water_box_carriage_status", "status#water_box_carriage_status", "miio:water_box_carriage_status",
             ""),
     MOP_FORBIDDEN("mop_forbidden_enable", "status#mop_forbidden_enable", "miio:mop_forbidden_enable", ""),
index e600d393dee87c03accd325398c46259b664d6f8..bbb3ba883aa3ae30b83e7adb05ba80ff292a1216 100644 (file)
@@ -79,6 +79,9 @@ public class StatusDTO {
     @SerializedName("water_box_mode")
     @Expose
     private Integer waterBoxMode;
+    @SerializedName("mop_mode")
+    @Expose
+    private Integer mopMode;
     @SerializedName("water_box_carriage_status")
     @Expose
     private Integer waterBoxCarriageStatus;
@@ -171,6 +174,10 @@ public class StatusDTO {
         return waterBoxMode;
     }
 
+    public final Integer getMopMode() {
+        return mopMode;
+    }
+
     public final Integer getWaterBoxCarriageStatus() {
         return waterBoxCarriageStatus;
     }
index b841aa2926aae7d1b87cf499bd5a0814c5cdec8a..5e2d84798cdfab5abbfd3a69e9abef964c6e6b43 100644 (file)
@@ -179,6 +179,10 @@ channel-type.miio.total_clean_time.label = Total Cleaning Time
 channel-type.miio.vacuum.label = Vacuum On/Off
 channel-type.miio.water_box_carriage_status.label = Water Box Carriage State
 channel-type.miio.water_box_mode.label = Water Box Mode
+channel-type.miio.mop_mode.label = Mop Mode
+channel-type.miio.mop_mode.state.option.300 = Standard
+channel-type.miio.mop_mode.state.option.301 = Deep
+channel-type.miio.mop_mode.state.option.303 = Deep+
 channel-type.miio.water_box_status.label = Water Box State
 
 # thing status descriptions
index b5035df1a5d9a5ea04ae39e2a863b6ebb43628f2..6a9ff477cf5110b269e2c19b0be5aa1a2a82e4bc 100644 (file)
                <label>Water Box Mode</label>
                <state min="200" max="204" step="1" pattern="%.0f%%" readOnly="false"/>
        </channel-type>
+       <channel-type id="mop_mode">
+               <item-type>Number</item-type>
+               <label>Water Box Mode</label>
+               <state min="300" max="303" step="1" pattern="%.0f%%" readOnly="false">
+                       <options>
+                               <option value="300">Standard</option>
+                               <option value="301">Deep</option>
+                               <option value="303">Deep+</option>
+                       </options>
+               </state>
+       </channel-type>
        <channel-type id="water_box_status">
                <item-type>Switch</item-type>
                <label>Water Box State</label>