### 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