[gelöst] Warnung bei Grenzwertunterschreitung

Begonnen von Alveole, 20 Oktober 2015, 12:21:20

Vorheriges Thema - Nächstes Thema

Alveole

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!

marvin78

Eine Lösung wäre, einen Flag in einem Reading zwischen zu speichern und abzufragen (setreading).

igami

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
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Hollo

Hört sich für mich Richtung watchdog an.  :)
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

marvin78

Es gibt hier viele Möglichkeiten. Die Qual der Wahl.

Brice

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;
  }
}
FHEM auf RPi 4 4GB (Buster) | produktiv) CUL 868 für FS20 | S300TH | KS300 | Max!Cube als CUN 868 für TechemWZ | HM-MOD-RPI-PCB für HM | Z-Wave ZME_UZB1 | FRITZ!DECT 200 | HUE | Lightify | Echo Dot | WS3080

Alveole

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

Damian

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

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF