diff --git a/fhem/CHANGED b/fhem/CHANGED index 5e8813f5b..a6b5a821f 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - feature: 72_XiaomiDevice: added zone and goto - bugfix: 57_Calendar: fix weekly events, get full all, defaultTimeFormat - change: 93_DbLog: V3.10.0, addLog considers DbLogExclude in Devices, keyword "!useExcludes" to switch off considering diff --git a/fhem/FHEM/72_XiaomiDevice.pm b/fhem/FHEM/72_XiaomiDevice.pm index a54f90f67..bae226b72 100755 --- a/fhem/FHEM/72_XiaomiDevice.pm +++ b/fhem/FHEM/72_XiaomiDevice.pm @@ -530,7 +530,7 @@ sub XiaomiDevice_Set($$@) { $list .= " on:noArg off:noArg"; } elsif( defined($attr{$name}) && defined($attr{$name}{subType}) && $attr{$name}{subType} eq "VacuumCleaner"){ - $list .= ' start:noArg stop:noArg pause:noArg spot:noArg charge:noArg locate:noArg dnd_enabled:on,off dnd_start dnd_end move remotecontrol:start,stop,forward,left,right reset_consumable:filter,mainbrush,sidebrush,sensors timezone volume:slider,0,1,100 volume_test:noArg'; + $list .= ' start:noArg stop:noArg pause:noArg spot:noArg zone charge:noArg locate:noArg dnd_enabled:on,off dnd_start dnd_end goto move remotecontrol:start,stop,forward,left,right reset_consumable:filter,mainbrush,sidebrush,sensors timezone volume:slider,0,1,100 volume_test:noArg'; $list .= ' carpet_mode:on,off' if($hash->{model} ne "rockrobo.vacuum.v1"); $list .= ' sleep:noArg wakeup:noArg'; @@ -702,6 +702,21 @@ sub XiaomiDevice_Set($$@) { $hash->{helper}{packet}{$packetid} = "app_spot"; XiaomiDevice_WriteJSON($hash, '{"id":'.$packetid.',"method":"app_spot","params":[""]}' ); } + elsif ($cmd eq 'zone') + { + my $packetid = $hash->{helper}{packetid}; + $hash->{helper}{packetid} = $packetid+1; + $hash->{helper}{packet}{$packetid} = "app_zoned_clean"; + my $zone = join("],[", @arg); + XiaomiDevice_WriteJSON($hash, '{"id":'.$packetid.',"method":"app_zoned_clean","params":['.$zone.']}' ); + } + elsif ($cmd eq 'goto') + { + my $packetid = $hash->{helper}{packetid}; + $hash->{helper}{packetid} = $packetid+1; + $hash->{helper}{packet}{$packetid} = "app_goto_target"; + XiaomiDevice_WriteJSON($hash, '{"id":'.$packetid.',"method":"app_goto_target","params":['.$arg[0].']}' ); + } elsif ($cmd eq 'pause') { my $packetid = $hash->{helper}{packetid}; @@ -2771,6 +2786,10 @@ sub XiaomiDevice_DbLog_splitFn($) {
Start spot cleaning
+
  • zone pointA1,pointA2,pointA3,pointA4 [pointB1,pointB2,pointB3,pointB4](VacuumCleaner) +
    + Start zone cleaning (enter points for one or more valid zones) +

  • pause (VacuumCleaner)
    Pause cleaning @@ -2783,6 +2802,10 @@ sub XiaomiDevice_DbLog_splitFn($) {
    Return to dock

  • +
  • goto pointX,pointY (VacuumCleaner) +
    + Go to point X/Y (needs to be valid on the map) +

  • locate (VacuumCleaner)
    Locate the vacuum cleaner