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

Code: Alles auswählen

if (now.getHourOfDay > 19 || now.getHourOfDay <7){
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 ;-)

Code: Alles auswählen

if (now.getHourOfDay >= 19 || now.getHourOfDay <7){
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 :mrgreen:
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 :lol:

Allerdings wird beim schließen des Tores die rule gar nicht angesprochen:

Code: Alles auswählen

Item GarageTorsensor changed from CLOSED to OPEN
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