Seite 1 von 1
Denkfehler
Verfasst: 6. Jul 2021 00:54
von Snatsch
Ich mal wieder

, irgendwie habe ich einen Denkfehler und bin mal wieder auf eure Hilfe angewiesen. Ich habe einen Türsensor an mein Gartentor gebaut und möchte das wenn sich es in der Zeit von 23- 6 Uhr öffnet das Licht angeht und ein Timer gesetzt wird. Der Timer soll aber nur gehen wenn die Beleuchtung beim Öffnen aus ist. Nach meiner Rule wird der Timer aber immer gesetzt.
Code: Alles auswählen
var Timer Gartentuere = null
rule "Nacht Gartentüre geöffnet"
when
Item Gartenture_OpenClose changed
then
if (AussenbeleuchtungTerrasse_Schalter.state == ON)
if(now.getHour == 23 || now.getHour > 5) return;
Gartentuere?.cancel // Falls ein Timer läuft: Abbruch
if(Gartenture_OpenClose.state == OPEN) { // Kontakt offen:
MeldungTelegram.postUpdate("Die Gartentüre ist geöffnet worden")
AussenbeleuchtungTerrasse_Schalter.sendCommand(ON)
} else // Kontakt nicht offen (also geschlossen):
Gartentuere = createTimer(ZonedDateTime.now.plusMinutes(1), [|
AussenbeleuchtungTerrasse_Schalter.sendCommand(OFF)
])
end
vielleicht kann mir jemand auf die Sprünge helfen

Re: Denkfehler
Verfasst: 6. Jul 2021 16:22
von udo1toni
Du hast die Bedingungen falsch gesetzt. Also, abgesehen davon, dass die Bedingungen so auch nicht stimmen...
Sauberer:
Code: Alles auswählen
var Timer Gartentuere = null
rule "Nacht Gartentüre geöffnet"
when
Item Gartenture_OpenClose changed to OPEN
then
if(now.getHour < 23 && now.getHour > 5) // von 06:00:00 bis 22:59:59 Rule abbrechen
return;
if(AussenbeleuchtungTerrasse_Schalter.state == ON) // Licht ist schon an
return;
// Ab hier sind alle Bedingungen für Timerbetrieb erfüllt
Gartentuere?.cancel // Falls ein Timer läuft, abbrechen
MeldungTelegram.postUpdate("Die Gartentüre ist geöffnet worden") // Meldung triggern
AussenbeleuchtungTerrasse_Schalter.sendCommand(ON) // Licht anschalten
Gartentuere = createTimer(ZonedDateTime.now.plusMinutes(1), [| // Timer starten
AussenbeleuchtungTerrasse_Schalter.sendCommand(OFF) // Licht ausschalten
])
end
Allerdings schaltet das Licht so nach einer Minute aus, egal, ob die Tür noch offen ist oder nicht. Falls das Licht auf jeden Fall an bleiben soll, bis die Tür wieder geschlossen wird, bietet sich eine Prüfung im Timer an:
Code: Alles auswählen
var Timer Gartentuere = null
rule "Nacht Gartentüre geöffnet"
when
Item Gartenture_OpenClose changed to OPEN
then
if(now.getHour < 23 && now.getHour > 5) // von 06:00:00 bis 22:59:59 Rule abbrechen
return;
if(AussenbeleuchtungTerrasse_Schalter.state == ON) // Licht ist schon an
return;
// Ab hier sind alle Bedingungen für Timerbetrieb erfüllt
Gartentuere?.cancel // Falls ein Timer läuft, abbrechen
MeldungTelegram.postUpdate("Die Gartentüre ist geöffnet worden") // Meldung triggern
AussenbeleuchtungTerrasse_Schalter.sendCommand(ON) // Licht anschalten
Gartentuere = createTimer(ZonedDateTime.now.plusMinutes(1), [| // Timer starten
if(Gartenture_OpenClose.state == CLOSED)
AussenbeleuchtungTerrasse_Schalter.sendCommand(OFF) // Licht ausschalten
else
Gartentuere.reschedule(ZonedDateTime.now.plusMinutes(1))
])
end
Variante 2 unterscheidet sich nur innerhalb des Timers. Man kann das auch anders lösen, da kommt es halt sehr drauf an, was Du erreichen willst. Deise Variante hat z.B. die Schwäche, dass das Licht nach einer Minute aus geht, wenn ich die Tür innerhalb der Minute schließe, also nicht erst eine Minute nach Schließen der Tür.
Re: Denkfehler
Verfasst: 6. Jul 2021 21:18
von Snatsch

vielen Dank für deine Mühe(wie so oft) Das mit den Timer auf eine Minute hatte ich nur zur Probe eingestellt. Sonnst sind eigentlich 15 Minuten.
Denkfehler
Verfasst: 7. Jul 2021 14:26
von udo1toni
Snatsch hat geschrieben:
vielen Dank für deine Mühe(wie so oft) Das mit den Timer auf eine Minute hatte ich nur zur Probe eingestellt. Sonnst sind eigentlich 15 Minuten.
Ja, das habe ich mir schon gedacht. Das ändert aber nichts am grundlegenden Verhalten. Tor auf -> Licht an mit Timer 15 Minuten. Tor nach 14:57 Minuten zu -> Licht geht 3 Sekunden später aus. Tor nach 15:01 Minuten zu -> Licht geht 15 Minuten später aus. (Es sei denn, Du nimmst im Timer eine andere Wiederholzeit, die kann ja komplett unabhängig vom Initialtimer gedonnert sein)
Gesendet von iPad mit Tapatalk
Re: Denkfehler
Verfasst: 7. Jul 2021 21:40
von Snatsch

Ist nur das Gartentor. Das sollte schnell wieder geschlossen werden. Sonst hauen die Hunde ab und im Dorf gibts Stress wenn zwei Rottweiler spazieren gehen

Re: Denkfehler
Verfasst: 7. Jul 2021 22:34
von udo1toni