warten nach pushmsg bis dies erneut versendet wird

Begonnen von moes, 12 Juli 2016, 21:38:06

Vorheriges Thema - Nächstes Thema

moes

Ich hab gerade keine weitere Idee mehr. Ich überwache mit folgendem Code die Luftfeuchtigkeit in meinen Räumen.

define Luftfeucht_Bad_Status dummy
attr Luftfeucht_Bad_Status devStateIcon high:weather_humidity@red normal:weather_humidity@green low:weather_humidity@grey
attr Luftfeucht_Bad_Status event-on-change-reading state
# --- Luftfeuchte des Status zuordnen,  ---
define Luftfeucht_Bad_Status_DI DOIF ([Bad:humidity] >= 61) (set Luftfeucht_Bad_Status high)
DOELSEIF ([Bad:humidity] >= 55 && [Bad:humidity] < 60) (set Luftfeucht_Bad_Status erhoeht)
DOELSEIF ([Bad:humidity] > 40 and [Bad:humidity] < 55) (set Luftfeucht_Bad_Status low)
DOELSEIF ([Bad:humidity] < 30) (set Luftfeucht_Bad_Status low)

# --- Push-Nachricht schicken, wenn Status auf "high" wechselt ---
define Luftfeucht_Bad_Status_notify notify Luftfeucht_Bad_Status:high set pushmsg msg 'fhem' 'Bad lüften Luftfeuchtigkeit ist zu hoch' '' 0 ''
attr Luftfeucht_Bad_Status_notify room 9.4 Notification
define Luftfeucht_Bad_Status_notify1 notify Luftfeucht_Bad_Status:normal set pushmsg msg 'fhem' 'Badfenster schließen Luftfeuchtigkeit normal' '' 0 ''
attr Luftfeucht_Bad_Status_notify room 9.4 Notification


Nun ist es leider so, dass im Grenzbereich (Wert schwankt immer an der Grenze) immer eine menge Nachrichten gesendet werden.

einen wait attr für notify gibt es scheinbar nicht.

dann dachte ich mir, ich probiere das in einem DOIF zu lösen. Nur hier habe ich scheinbar den Syntax nicht verstanden.

define  Luftfeucht_Bad_Status_notify_wait DOIF ([Luftfeucht_Bad_Status:high]) DOELSE (set pushmsg msg 'fhem' 'Bad lüften Luftfeuchtigkeit ist zu hoch' '' 0 '' )
attr Luftfeucht_Bad_Status_notify_wait wait 1800


Kann mir bitte jemand einen Tip geben?

P.A.Trick

Mach das notify weg und packe die push-Nachrichten direkt ins doif. Weiterhin solltest du das wait-Attribut entsprechend deinen Schwellwerten setzen!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

moes

Ich habe jetzt eine Lösung gefunden. Damit trage ich sicher die Kirche um das Dorf, aber es geht. :P

Das Problem war ja, das immer beim Pendeln um den Schwellwert eine Push-Nachricht gesendet wurde. Daher war die Überlegung, zusätzlich zum Setzen des Luftfeucht_Bad_Status high und Luftfeucht_Bad_Status normal einen zusätzlichen dummy mit einer 1 oder 0 zu setzen.
([Bad:humidity] >= 61) (set Luftfeucht_Bad_Status high, set Schwellwert_Luftfeuchte_bad 1)
([Bad:humidity] > 40 and [Bad:humidity] < 55) (set Luftfeucht_Bad_Status normal, set Schwellwert_Luftfeuchte_bad 0)


Nun den neuen dummy Schwellwert_Luftfeuchte_bad in die Push-Nachricht integrieren.

define Luftfeucht_Bad_Status_high_DI DOIF ([Luftfeucht_Bad_Status] eq "high" and [Schwellwert_Luftfeuchte_bad] eq "0") (set pushmsg msg 'fhem' 'Bad lüften! Luftfeuchtigkeit ist zu hoch' '' 0 '') DOELSE ()
define Luftfeucht_Bad_Status_normal_DI DOIF ([Luftfeucht_Bad_Status] eq "normal" and [Schwellwert_Luftfeuchte_bad] eq "1") (set pushmsg msg 'fhem' 'Badfenster schließen Luftfeuchtigkeit ist wieder normal' '' 0 '') DOELSE ()


Jetzt muss vor dem erneuten Versenden einer Nachricht der Zustand wechseln zwischen Bad lüften und Fenster schließen.