Seite 1 von 1

Probleme mit Time cron

Verfasst: 28. Mai 2019 22:11
von winni
Guten Abend,

möchte ein paar meiner Shellys über Time cron fahren lassen. Die Shellys reagieren aber 0 auf die von mir erstellte rule.

Was mache ich falsch?

item:

Code: Alles auswählen

Rollershutter Shellyswitch25007AE2Roller "Jakob"           (RolladenKinder)  {channel="mqtt:topic:3448a27a:shelly:Shellyswitch25007AE2_roller"}
Gruppen item:

Code: Alles auswählen

Group:Rollershutter RolladenKinder "Rolladen Kinder"
rule:

Code: Alles auswählen

rule "Rolladen Kinder runter"
 
when
Time cron "0 30 19 ? * MON-FRI"    
then
RolladenKinder.sendCommand(85)    
end
Andere Sellys laufen bei mir über Astro und funktionieren einwandfrei.

Re: Probleme mit Time cron

Verfasst: 29. Mai 2019 17:41
von udo1toni
Versuche es mal so:

Code: Alles auswählen

rule "Rolladen Kinder runter"
when
    Time cron "0 30 19 ? * MON-FRI"    
then
    RolladenKinder.forEach[ r | r.sendCommand(85) ]
end
Ich gehe davon aus, dass die Steuerung der einzelnen Items über sendCommand(Zahl) funktioniert.

Re: Probleme mit Time cron

Verfasst: 29. Mai 2019 22:02
von winni
Das sendCommand über die Zahl funktioniert. Vielen dank! Werde ich sofort ausprobieren, wenn ich wieder zu Hause bin.

Re: Probleme mit Time cron

Verfasst: 4. Jun 2019 16:03
von webguards

Code: Alles auswählen

rule	"Wecker DI-FR 7:00-8:30 30min"
when	Time cron "0 0,30 7,8 ? * 2,3,4,5"
then	if(gPres.state == ON){ 
		echo_wz_tts.sendCommand("Guten Morgen. Es ist zeit zum Aufstehen.")
		Thread::sleep(10000) 
		echo_wz_playAlarmSound.sendCommand( "ECHO:system_alerts_soothing_01")
	}
end
Ich habe so meinen Wecker realisiert von 7:00 bis 8:30 im 30min Takt Dienstag bis Freitag und auch nur wenn ich nicht zuhause bin, denn den internen Wecker von Alexa interessiert es nicht ob du daheim bist.

Re: Probleme mit Time cron

Verfasst: 5. Jun 2019 11:29
von udo1toni
Time cron kann auch Wertebereiche und Intervalle ;)

Code: Alles auswählen

Time cron "0 0,30 7,8 ? * 2,3,4,5"
entspricht

Code: Alles auswählen

Time cron "0 0/30 7,8 ? * 2-5"
Was aber eine schlechte idee ist, ist der Thread::sleep(10000). Damit wird der Thread 10 Sekunden lang blockiert und steht nicht für andere Aufgaben zur Verfügung. Sauberer ist es, einen Timer zu verwenden:

Code: Alles auswählen

createTimer(now.plusSeconds(10), [ | echo_wz_playAlarmSound.sendCommand( "ECHO:system_alerts_soothing_01") ])
Diese Zeile ersetzt Thread::sleep() und die nachfolgende Anweisung.
Der Unterschied ist, dass openHAB nun das Lambda abspeichert und im Scheduler einen Eintrag für den gewünschten Ausführungszeitpunkt definiert. Die Rule wird innerhalb weniger Millisekunden beendet, nach 10 Sekunden wird der Alarmsound gespielt.

Bei dieser Rule spielt es erst mal keine Rolle, da die Rule maximal einmal pro 30 Minuten getriggert wird, so dass der Thread sicher schon abgelaufen ist. In anderen Rules kann das aber dazu führen, dass das System keine Rules mehr ausführt, man sollte sich Thread::sleep() mit Werten über 500 Millisekunden also gar nicht erst angewöhnen.

Re: Probleme mit Time cron

Verfasst: 5. Jun 2019 16:38
von webguards
Danke :) ich habe es in meinen RULES verarbeitet