roborock.rules – Wischtag

roborock.rules – Wischtag

### Variable um den jeweiligen Reinigungsdurchgang zu tracken
var Number cleanCycle


### Startet den Wischtag und beginnt mit den ersten beiden Räumen
rule "ROBOROCK - CleaningDay Start"

when
    Item pt_Roborock01_EG_cleaningDay changed to ON
then

    logInfo("ROBOROCK - Start CleaningDay","Checking if all components are ready");

    if(pt_Roborock01_EG_statusMop.state == ON){

        logInfo("ROBOROCK - Start CleaningDay", "Start initial Room Cleaning for Cleaning Day");
        Roborock01_EG_executeCMD.sendCommand("app_segment_clean[20,21]");        

        cleanCycle = 1;
        sendBroadcastNotification("Schwanko legt los und startet mit dem Wischtag.");
        Sonos02_TTS.sendCommand('<speak>Schwanko legt los und startet mit dem Wischtag.</speak>');

    }else{

        logInfo("ROBOROCK - Start CleaningDay", "Mop is not mounted.")
        pt_Roborock01_EG_cleaningDay.postUpdate(OFF);

        sendBroadcastNotification("Schwanko kann ohne Wischtuch keine Böden wischen. Bitte Halterung und Wischtuch anbringen.");
        Sonos02_TTS.sendCommand('<speak>Schwanko kann ohne Wischtuch keine Böden wischen. Bitte Halterung und Wischtuch anbringen.</speak>');

    }

end


### Nachdem die ersten beiden Räume erfolgreich gewischt wurden, fährt der Roborock zu dem definierten Punkt und wartet auf unseren Einsatz.
rule "ROBOROCK - CleaningDay First Pause"

when
    Item Roborock01_EG_statusId changed to 6
then

    if(pt_Roborock01_EG_cleaningDay.state == ON && cleanCycle == 1){
        logInfo("ROBOROCK - CleaningDay First Pause", "First Cleaning Cycle successfully finished.");
        Roborock01_EG_executeCMD.sendCommand("app_goto_target[28200,28550]");
        cleanCycle = 2;
    }
    
end


### Nachdem die Wischplatte wieder montiert wurde, werden die nächsten 3 Räume gereinigt.
rule "ROBOROCK - CleaningDay Second Run"

when 
    Item pt_Roborock01_EG_statusMop changed to ON
then

    if(pt_Roborock01_EG_cleaningDay.state == ON && cleanCycle == 2){
        logInfo("ROBOROCK - CleaningDay Second Run", "Mop mounted. Starting with the second Cleaning Cycle");
        Roborock01_EG_executeCMD.sendCommand("app_segment_clean[19,18,17]");
        cleanCycle = 3;
    }

end


### Nachdem die nächsten drei Räume erfolgreich gewischt wurden, fährt der Roborock zu dem definierten Punkt und wartet auf unseren Einsatz.
rule "ROBOROCK - CleaningDay Second Pause"

when
    Item Roborock01_EG_statusId changed to 6
then
    if(pt_Roborock01_EG_cleaningDay.state == ON && cleanCycle == 3){
        logInfo("ROBOROCK - CleaningDay Second Pause", "Second Cleaning Cycle successfully finished.");
        Roborock01_EG_executeCMD.sendCommand("app_goto_target[28200,28550]");
        cleanCycle = 4;
    }
    
end


### Nachdem die Wischplatte wieder montiert wurde, werden die letzten 2 Räume gereinigt.
rule "ROBOROCK - CleaningDay Third Run"

when 
    Item pt_Roborock01_EG_statusMop changed to ON
then

    if(pt_Roborock01_EG_cleaningDay.state == ON && cleanCycle == 4){
        logInfo("ROBOROCK - CleaningDay Third Run", "Mop mounted. Starting with the third Cleaning Cycle");
        Roborock01_EG_executeCMD.sendCommand("app_segment_clean[22,16]");
        cleanCycle = 5;
    }

end


### Wurde die Reinigung erfolgreich beendet, werden entsprechende Notifications ausgegeben und der Roborock begibt sich zur Ladestation.
rule "ROBOROCK - CleaningDay End"

when
    Item Roborock01_EG_statusId changed to 6
then
    if(pt_Roborock01_EG_cleaningDay.state == ON && cleanCycle == 5){
        logInfo("ROBOROCK - CleaningDay End", "Successfully finished Cleaning Day.");
        Sonos02_TTS.sendCommand('<speak><amazon:emotion name="excited" intensity="high">Super, Wischtag abgeschlossen! Schwanko freut sich jetzt sicher über eine kleine Pause.</amazon:emotion></speak>');
        cleanCycle = 0;
        pt_Roborock01_EG_cleaningDay.postUpdate(OFF);
    }
    
end


### Falls wir die aktuelle Reinigung über den Switch abbrechen möchten
rule "ROBOROCK - CleaningDay Abort"

when
    Item pt_Roborock01_EG_cleaningDay changed to OFF
then
    Roborock01_EG_executeCMD.sendCommand("dock");
    cleanCycle = 0;    
end

You may also like...