Hallo zusammen,
ich habe mal wieder eine, nein zwei, Fragen zu einer Rule...
Code: Alles auswählen
rule "Musik fuer Olli"
when
Item Olli_Handy changed from OFF to ON
then
if(Matzi_Handy.state == OFF) {
Hub_EG_Aktion.sendCommand("Radio")
}
end
rule "Squeezebox aus"
when
Item gAnwesende changed from ON to OFF
then
Hub_EG_Aktion.sendCommand("PowerOff")
end
Die erste Rule soll also die Harmony-Aktion "Radio" starten, wenn ich nach Hause komme, meine Frau aber nicht zu Hause ist.
Die zweite beendet jegliche Harmony-Aktion, wenn alle das Haus verlassen haben.
Beides funktioniert im Grunde auch. Nur gestern ist mir was aufgefallen: Wir sind gemeinsam nach Hause gekommen und mein Handy hat sich wohl 2 Sekunden früher ins Netz geloggt als das meiner Frau, also dudelte das Radio los... ging aber nach 3 Sekunden wieder aus. Und genau das meinte ich mit der Überschrift und ist meine 1. Frage:
Ein Ausschalten wenn beide zu Hause sind, habe ich nicht programmiert. Und wenn die Rule einmal gestartet ist und somit die Aktion, sollte die sich doch nicht wieder ausschalten. Warum hat sie das getan?
2. Ich würde gerne noch einen 10 Sekunden Timer einbauen, also wenn ich nach Hause komme und 10 Sekunden später bin ich immer noch alleine im Netz, dann soll das Radio erst starten... äh, Timer sind noch nicht so meins. Was nehm ich da am besten???
Danke!
VG, Oliver
von Tokamak » 27. Apr 2020 16:28
Nein, das hast du nicht programmiert. Die Frage ist höchstens, wie die Gruppe gAnwesende tickt, ob sie aus irgendeinem Grunde OFF gegangen sein könnte.
Und: Wie verlässlich ist deine Anwesenheitserkennung?
Die Light-Variante der Rule mit Timer ist:
Code: Alles auswählen
rule "Musik fuer Olli"
when
Item Olli_Handy changed from OFF to ON
then
createTimer(now.plusSeconds(10), [|
if(Matzi_Handy.state == OFF) {
Hub_EG_Aktion.sendCommand("Radio")
}
])
end
Light, weil sie nicht darauf reagiert, wenn du das Haus innerhalb der 10 Sekunden Wartezeit verlässt. Dann geht die Musik an, wenn du gar nicht mehr da bist, und wird auch nicht wieder augeschaltet, weil die Rule "Squeezebox aus" innerhalb der 10 Sekunden bereits alles ausgeschaltet hat.
Da ist dann schon etwas mehr zu tun:
Code: Alles auswählen
var Timer radioTimer=null
rule "Musik fuer Olli"
when
Item Olli_Handy changed
then
if (radioTimer!==null) {
radioTimer.cancel()
radioTimer=null
}
if (Olli_Handy.state==ON) {
radioTimer=createTimer(now.plusSeconds(10), [|
if(Matzi_Handy.state == OFF) {
Hub_EG_Aktion.sendCommand("Radio")
}
radioTimer=null
])
}
end
Gehe zur vollständigen Antwort