Hallo,
ich habe mir mit Hilfe des Forums hier ein notify gebastelt, das mich per Pushover immer benachrichtigt, wenn mein Heizungsdruck unter einen Grenze fällt.
Funktioniert auch soweit super!
Nur: Mein EIB-Aktor meldet den Druck im 30min Takt. Nun stellt das notify aller 30min fest, das der Druck unter die Grenze gefallen ist und senden eine Pushnachricht. Da kommt schon was zusammen.
Nun meine Frage:
Wie kann man erreichen, das es nur einmal beim überschreiten der Grenze Warnt und dann nicht mehr. Erst wenn der Druck die Grenze wieder überschritten hat und danach wieder darunter fällt erneut.
oder ist gar das notify der falsche Ansatz?
mein Code bis jetzt:
Heiz_druck {\
my $heizdruck = ReadingsVal("Heiz_druck","state","");;\
if ($heizdruck < 1.1)\
{fhem "set pushmsg msg 'Heizung' 'Wasserdruck zu niedrig. Druck: $heizdruck bar'";;}\
}
Danke!
Eine Lösung wäre, einen Flag in einem Reading zwischen zu speichern und abzufragen (setreading).
Oder als Alternative DOIF verwenden, dass führt einen Befehl nur einmal aus, auch wenn die Bedingung mehrmals hinter einander wahr wird.
Grüße
igami
Hört sich für mich Richtung watchdog an. :)
Es gibt hier viele Möglichkeiten. Die Qual der Wahl.
E-Mail_per_notify_nach_Zeitablauf_erneut_senden (http://www.fhemwiki.de/wiki/E-Mail_per_notify_nach_Zeitablauf_erneut_senden) läuft bei mir zur Unterdrückung der geschwätzigen S300TH und funktioniert auch für Pushnachrichten.
Und dann dein Notify ändern. Meine Definition (Meldung frühestens nach 6 Stunden):
Gefrierschrank_Temp:temperature.* {
if ( (ReadingsVal("Gefrierschrank_Temp","temperature",0) > -15.0) && (time > $main::NewMailtime)) {
fhem ("set PushNachricht_Z message 'Temperatur-Alarm Gefrierschrank' 'ACHTUNG - die Gefrierschranktemperatur ist auf %EVTPART1 Grad gestiegen!");
$main::NewMailtime = time + 21600;
}
}
Danke für Eure Hinweise.
Habs im Endeffekt so realisiert:
define alarm_heiz_druck DOIF ([Heiz_druck]<1.1) (set pushmsg msg 'Heizung' 'Wasserdruck zu niedrig. Druck: [Heiz_druck] bar')
attr alarm_heiz_druck cmdpause 10800
attr alarm_heiz_druck do always
attr alarm_heiz_druck repeatsame 0
Zitat von: Alveole am 20 Oktober 2015, 21:39:21
Danke für Eure Hinweise.
Habs im Endeffekt so realisiert:
define alarm_heiz_druck DOIF ([Heiz_druck]<1.1) (set pushmsg msg 'Heizung' 'Wasserdruck zu niedrig. Druck: [Heiz_druck] bar')
attr alarm_heiz_druck cmdpause 10800
attr alarm_heiz_druck do always
attr alarm_heiz_druck repeatsame 0
attr alarm_heiz_druck repeatsame 0
macht so hier keinen Sinn.
Ich habe verstanden, dass du nur einmal eine Meldung beim Unterschreiten haben willst. Dann würde das schon reichen:
define alarm_heiz_druck DOIF ([Heiz_druck]<1.1) (set pushmsg msg 'Heizung' 'Wasserdruck zu niedrig. Druck: [Heiz_druck] bar')
ohne weitere Attribute.
Gruß
Damian