Seite 1 von 1

Verzögerung in Regeln

Verfasst: 3. Feb 2018 12:48
von gizzmo112
Hallo zusammen,

nachdem ich gerstern meinen SonOff Pow erfolgreich in OpenHab eingebunden haben und jetzt auch die Leistungsdaten messen und auswerten kann, möchte ich diesen nutzen, um mit einer Hue anzuzeigen, wann die Waschmaschine fertig ist.

Dafür habe ich folgende Regel geschrieben:

Code: Alles auswählen

rule "Meldung Waschmaschine fertig"

when

Item Sonoffswitch_05_Power changed 

then

if (Sonoffswitch_05_Power.state > 1 && Sonoffswitch_05_Power.state <5)

			{
	val Vorher1 = storeStates(Light3_Toggle,Light3_Dimmer,Light3_Color)
	Light3_Color.sendCommand("252,96,100") //Lampe 3 blau
	Light3_Alert.sendCommand("LSELECT") //Lampe 3 Alarm
	createTimer(now.plusSeconds(15)) [| restoreStates(Vorher1) ]
			}
end
Das funktioniert soweit auch ganz gut, allerdings ist der Stromverbrauch bei der Waschmaschine nicht so konstant hoch wie beim Trocker und fällt immer mal wieder unter die Grenze für das Auslösen der Meldung. Ich müsste die Regel so erweitern, dass der Wert für eine bestimmte Zeit unter dem Schwellenwert liegen muss und dann erst die Lampe geschaltet wird. Und das kriege ich als Newbee so nicht hin und würde euch um Rat bitten.

Danke im Voraus und ein schönes Wochenende,

Stefan

Re: Verzögerung in Regeln

Verfasst: 3. Feb 2018 13:01
von hr3
Thread::sleep(1000) oder Timer https://community.openhab.org/t/thread- ... rules/6529
und dann nochmals prüfen, ggf. mehrfach wiederholen.

Aber Achtung, der nächste Wechsel ruft eine neue Instanz dieser Regel auf, sodaß diese dann ggf. parallel mehrfach läuft.
Sonst zusätzlich Zeit der Wertunterschreitung in Variable speichern und bei Überschreitung löschen. Wenn der Wert nach der Wartezeit noch gesetzt ist, dann reagieren. Wenn bereits gesetzt, dann ohne regel ohne Verzögerung beenden.

Re: Verzögerung in Regeln

Verfasst: 3. Feb 2018 13:23
von gizzmo112
Wie müsste der Code dann aussehen? Wo muss der der "sleep" eingefügt werden, bzw. wie löse ich dann die nochmalige Prüfung des Werts aus?

Re: Verzögerung in Regeln

Verfasst: 3. Feb 2018 13:28
von hr3

Code: Alles auswählen

if (Sonoffswitch_05_Power.state > 1 && Sonoffswitch_05_Power.state <5) {
   Thread::sleep(1000)
   if (Sonoffswitch_05_Power.state > 1 && Sonoffswitch_05_Power.state <5) {
Damit wird z.B. eine Sekunde später nochmals überprüft, ohne darauf zu reagieren, was ggf. zwischendurch passiert ist.

Re: Verzögerung in Regeln

Verfasst: 4. Feb 2018 10:21
von gizzmo112
Danke. Werd ich probieren!

Re: Verzögerung in Regeln

Verfasst: 4. Feb 2018 12:04
von gizzmo112
Der Einbau des "sleep" hat funktioniert, aber ich stehe jetzt vor dem nächsten Problem:

da ich für die Überwachung der Waschmaschine den Takt der Daten aus dem Sonoff recht kurz gewählt habe, schaufelt der Sonoff dementsprechend viele Daten rüber. Deshalb würde ich gerne die Datenmenge bei Nichtnutzung der Maschine reduzieren und dafür das Sendeintervall per "Teleperiod" Befehl an den Sonoff verlängern wollen.
Ich habe aber nicht gefunden, wie man einen einzelnen Config-Befehl über MQTT an den Tasmota schickt. Kann man den Befehl direkt in den rules anlegen, oder muss ein entsprechendes Item angelegt werden?
Als Befehl würde ich dann folgendes schicken, bin mir aber auch nicht sicher, ob das richtig ist:

Code: Alles auswählen

{ mqtt=">[mosquitto:cmnd/Sonoff_3B7BB5/TelePeriod:command:*:600]" }
Danke für eure Hilfe!

Re: Verzögerung in Regeln

Verfasst: 8. Feb 2018 17:08
von mikshe
gizzmo112 hat geschrieben: 3. Feb 2018 12:48 nachdem ich gerstern meinen SonOff Pow erfolgreich in OpenHab eingebunden haben und jetzt auch die Leistungsdaten messen und auswerten kann, möchte ich diesen nutzen, um mit einer Hue anzuzeigen, wann die Waschmaschine fertig ist.

[...]

Das funktioniert soweit auch ganz gut, allerdings ist der Stromverbrauch bei der Waschmaschine nicht so konstant hoch wie beim Trocker und fällt immer mal wieder unter die Grenze für das Auslösen der Meldung. Ich müsste die Regel so erweitern, dass der Wert für eine bestimmte Zeit unter dem Schwellenwert liegen muss und dann erst die Lampe geschaltet wird.
Das Tutorial Washing Machine State Machine könnte Dir da weiterhelfen!