Seite 1 von 5
Garagentor Rule mit Zeitraum
Verfasst: 28. Sep 2015 11:05
von Cyrelian
Hi,
ich habe mal eine Rule gebaut die den Status des Tors zwischen 19:00 - 07:00 prüft und wenn es "offen" ist eine Whatsapp schickt.
Code: Alles auswählen
rule "Garage ist länger als 10 Minuten geöffnet (19:00 - 07:00)"
when
Item GarageTorsensor changed from CLOSED to OPEN
then
if (now.getHourOfDay > 19 || now.getHourOfDay <7){
if(GarageTorsensor.state==OPEN) {
logDebug("GarageTorsensor", "Garagentor ist "+ GarageTorsensor.state)
timer = createTimer(now.plusMinutes(10)) [|
executeCommandLine ("/opt/yowsup/yowsup-cli@@demos@@-c@@/opt/yowsup/yowsup.config@@-s@@xxxxxxxxxxx-xxxxxxxxxxx@g.us@@\"Garagentor ist " + GarageTorsensor.state + "\"")
]
}
} else {
if(timer!=null) {
timer.cancel
timer = null
}
}
end
Ich habe das Tor um 19:46 aufgemacht und 10 Minuten....Irgendwie hat sie aber scheinbar nicht ausgelöst
Hab ich da noch nen Fehler drin?
Re: Garagentor Rule mit Zeitraum
Verfasst: 28. Sep 2015 12:52
von seppy
Hi Kretzsche,
ich würde sagen Dein System ist direkt im else Zweig gelandet ...
Wenn Du den Test um 19:46 Uhr gemacht hast, soll das System nach Deiner Logik nämlich nichts tun. Erst ab 20:00, da dann die Bedingung >19 stimmt. Wenn das Ganze ab 19.00 Uhr laufen soll würde das "=" Zeichen helfen
Das ist zumindest meine Vermutung beim schnellen drüber schauen.
Grüße,
Seppy
Re: Garagentor Rule mit Zeitraum
Verfasst: 28. Sep 2015 20:10
von Cyrelian
Hi Seppy,
jup, das war dann wohl der Fehler in der Logik
Läuft!
Dank Dir
Kretzsche
Re: Garagentor Rule mit Zeitraum
Verfasst: 2. Okt 2015 08:25
von Cyrelian
Hi Seppy,
ich hab noch einen Schönheitsfehler gefunden. Wenn das Tor zwischen 19:00 - 07:00 geöffnet wird, läuft der Timer an. Wird das Tor allerdings dann innerhalb des Timers (10Min.) wieder zu gemacht, wird nach Ablauf des Timers dann eine Whatsapp mit "geschlossen versendet". Jetzt habe ich versucht das mal abzufangen, indem ich nach dem Timer nochmal eine Abfrage mache, ob das Tor noch offen ist. Dann soll er eine Whatsapp versenden. Wenn das Tor zu ist, dann nicht. Hier mal die Rule:
Code: Alles auswählen
rule "Garage ist länger als 10 Minuten geöffnet (19:00 - 07:00)"
when
Item GarageTorsensor changed from CLOSED to OPEN
then
if (now.getHourOfDay >= 19 || now.getHourOfDay <=7){
}
if (GarageTorsensor.state==OPEN) {
logInfo("GarageTorsensor", "Garagentor ist "+ GarageTorsensor.state)
timer = createTimer(now.plusMinutes(10)) [|]
}
if (GarageTorsensor.state==OPEN) {
var String sensorState = transform("MAP","Kontakt.map",GarageTorsensor.state.toString)
executeCommandLine ("/opt/yowsup/yowsup-cli@@demos@@-c@@/opt/yowsup/yowsup.config@@-s@@4916090488979-1440832510@g.us@@\"Garagentor ist " + sensorState + "\"")
} else {
if(timer!=null) {
timer.cancel
timer = null
}
}
end
Wo ich mir nicht ganz sicher bin, ist der der Teil wo ich den Timer setze und zwar am Ende mit dem [|]. Der Designer sagt, ....alles gut
CU
Kretzsche
Re: Garagentor Rule mit Zeitraum
Verfasst: 2. Okt 2015 10:05
von seppy
Hi Kretzsche,
ich würde sagen der Designer hat recht
Allerdings wird beim schließen des Tores die rule gar nicht angesprochen:
In dem von Dir beschriebenen Fall hast Du aber ein "
changed from OPEN to CLOSED". Also greift Deine Regel nicht.
Grüße,
Seppy
Re: Garagentor Rule mit Zeitraum
Verfasst: 2. Okt 2015 12:46
von Cyrelian
Hi Seppy,
ja, das hatte ich erstmal bewusst so gemacht. Er soll mir nur sagen, wenn das Tor in der Zeit länger als 10 Minuten offen ist. Geht es in der Zeit(Timer) zu, ist mir das erstmal "egal"

.
Cu
Gesendet von iPad mit Tapatalk
Re: Garagentor Rule mit Zeitraum
Verfasst: 5. Okt 2015 13:01
von Cyrelian
Hi Seppy,
hier die angepasste Rule:
Code: Alles auswählen
rule "Garage ist länger als 10 Minuten geöffnet (19:00 - 07:00)"
when
Item GarageTorsensor changed from CLOSED to OPEN
then
if (now.getHourOfDay >= 19 || now.getHourOfDay <=7){
if (GarageTorsensor.state==OPEN) {
logInfo("GarageTorsensor", "Garagentor ist "+ GarageTorsensor.state)
timer = createTimer(now.plusMinutes(10)) [|
if (GarageTorsensor.state==OPEN) {
var String sensorState = transform("MAP","Kontakt.map",GarageTorsensor.state.toString)
executeCommandLine ("/opt/yowsup/yowsup-cli@@demos@@-c@@/opt/yowsup/yowsup.config@@-s@@49xxxxxxxxx-1xxxxxx@g.us@@\"Garagentor ist " + sensorState + "\"")
}
]
}
}
else {
if(timer!=null) {
timer.cancel
timer = null
}
}
end
Re: Garagentor Rule mit Zeitraum
Verfasst: 13. Okt 2015 08:23
von Cyrelian
HI,
so nun läuft die Rule etwas anders. Hab sie noch etwas angepasst.
Code: Alles auswählen
rule "Garage ist länger als 10 Minuten geöffnet (19:00 - 08:00)"
when
Time cron "0 0/10 19-8 * * ?"
then
if (GarageTorsensor.state == OPEN && GarageTorsensor.changedSince(now.minusMinutes(10))){
var String sensorState = transform("MAP","Kontakt.map",GarageTorsensor.state.toString)
executeCommandLine ("/opt/yowsup/yowsup-cli@@demos@@-c@@/opt/yowsup/yowsup.config@@-s@@49xxxxxxxx-14xxxxxxxx@g.us@@\"Garagentor ist " + sensorState + "\"")
}
end
Re: Garagentor Rule mit Zeitraum
Verfasst: 13. Okt 2015 12:59
von seppy
Hi,
also funktioniert changedSince? Auch ohne explizite Persistencekonfiguration?
Gruß,
Seppy
Re: Garagentor Rule mit Zeitraum
Verfasst: 14. Okt 2015 08:50
von Cyrelian
Hi Seppy,
ja, läuft super auch ohne Persistencekonfig.
Gruß
Kretzsche