FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: thgorjup am 06 Januar 2017, 10:14:26

Titel: [gelöst] Notify will nicht...
Beitrag von: thgorjup am 06 Januar 2017, 10:14:26
Hallo, da mein WOLF Heizkessel über den eBus keine Störung meldet (hab zumindest noch nicht rausgefunden wie) möchte ich als Workaround ein NOTIFY über die Kesseltemperatur auslösen. Also wenn die Kesseltemperatur unter 24°C fällt, will ich eine Pushover Benachrichtigung erhalten.

Hier mein Ansatz, aber es klappt nicht. Vermutlich ist "Kesseltemperatur" kein numerischer Wert.


defmod Kesseltemperatur ECMDDevice wolf.class
attr Kesseltemperatur IODev EBUS
attr Kesseltemperatur group Kessel
attr Kesseltemperatur icon sani_boiler_temp
attr Kesseltemperatur room Heizraum
attr Kesseltemperatur stateFormat {ReadingsVal("Kesseltemperatur","Kesseltemperatur",0)." °C"}

defmod HeizkesselStoerungPushover notify Kesseltemperatur:Kesseltemperatur:.* { if(ReadingsNum("Kesseltemperatur","Kesseltemperatur","") < 24) {system ("curl -s -F 'token=xxxxxxx' -F 'user=xxxxxxx' -F 'message=Kesseltemperatur < 24°C' https://api.pushover.net/1/messages.json")}}


Schön wäre auch, wenn ich in dem Pushover noch den $EVENT mit angeben könnte.
Wo muss ich dran schrauben, damit mein Vorhaben fruchtet?

Danke und Gruß
Thomas
Titel: Antw:Notify will nicht...
Beitrag von: Otto123 am 06 Januar 2017, 10:58:12
Moin Thomas,

ich zitiere mal meinen Antwort von gestern
Zitatdie Frage: beim notify passiert nichts, wo liegt der Fehler? ist immer wieder gleich zu beantworten:
Entweder am Ausführungsteil, kann man meist separat testen.
Oder an der Bedingung, die kannst Du im Eventmonitor prüfen.

Sehe ich das richtig? Genau hier machst Du doch aus dem Wert einen nicht numerischen -> {ReadingsVal("Kesseltemperatur","Kesseltemperatur",0)." °C"}
Ist Dein Event wirklich Kesseltemperatur:Kesseltemperatur:.*?
Was liefert Dir denn {ReadingsNum("Kesseltemperatur","Kesseltemperatur","")} bei Eingabe in der Kommandzeile?

Gruß Otto
Titel: Antw:Notify will nicht...
Beitrag von: thgorjup am 06 Januar 2017, 11:17:29
Hallo Oto,

ReadingsNum und ReadingsVal liefern beide das Ergebnis: 34.0
Titel: Antw:Notify will nicht...
Beitrag von: thgorjup am 06 Januar 2017, 11:35:09
Ich habe nun den Wert für Kesseltemperatur in Num geändert. Aber trotzdem triggert Notify nicht wenn ich testweise die Abfrage auf <80 stelle.


attr Kesseltemperatur stateFormat {ReadingsNum("Kesseltemperatur","Kesseltemperatur",0)}
Titel: Antw:Notify will nicht...
Beitrag von: Benni am 06 Januar 2017, 12:55:51
Tipp zu Pushover: Dafür gibt es sogar ein modul -> https://fhem.de/commandref_DE.html#Pushover
Titel: Antw:Notify will nicht...
Beitrag von: Otto123 am 06 Januar 2017, 13:33:45
Zitat von: thgorjup am 06 Januar 2017, 11:17:29
Hallo Oto,

ReadingsNum und ReadingsVal liefern beide das Ergebnis: 34.0
naja nun hast Du nur die zweite Frage beantwortet.
Was liefert denn der Eventmonitor? Liefert der wirklich Kesseltemperatur Kesseltemperatur: ???

Er muss ja erstmal zu Deinem if kommen, eventuell geht das ja gar nicht.

Den Ausführungsteil kannst Du ja auch komplett testen
{ if(ReadingsNum("Kesseltemperatur","Kesseltemperatur","") < 24) {system ("curl -s -F 'token=xxxxxxx' -F 'user=xxxxxxx' -F 'message=Kesseltemperatur < 24°C' https://api.pushover.net/1/messages.json")}}

Zumindest die Bedingung{(ReadingsNum("Kesseltemperatur","Kesseltemperatur","") < 24)} müsste eine 1 liefern

Ist natürlich derzeit nicht kleiner 24  ;D

Gruß Otto
Titel: Antw:Notify will nicht...
Beitrag von: thgorjup am 06 Januar 2017, 16:52:48
Hallo Otto,

also wenn ich z.B. folgenden test mache:


{(ReadingsNum("Kesseltemperatur","Kesseltemperatur","") < 80)}


Wird eine 1 zurück gemeldet.

Und wenn ich das ganze IF-Statement eingebe, dann kommt -1 und ich bekomme die Nachricht auf mein Smartphone. DAS IST SCHONMAL SUPER!
Aber, warum wird es denn nicht automatisch von selbst gesendet? Steht auf active!


Mit dem Eventmonitor hatte ich Probleme wegen Bitdefender. Hab es jetzt auf einem anderen Rechner getestet.
Folgendes kommt an:


2017-01-06 16:51:16 ECMDDevice Kesseltemperatur Kesseltemperatur: 38.0 
2017-01-06 16:51:16 ECMDDevice Kesseltemperatur Kesseltemperatur 38.0 


Gruß
Thomas
Titel: Antw:Notify will nicht...
Beitrag von: Otto123 am 06 Januar 2017, 17:17:34
Hallo Thomas,

dann wissen wir jetzt am Ausführungsteil liegt es nicht.

Eigentlich sieht aber das notify vom regEx her gut aus, hast Du das notify noch auf 24 Grad stehen?

Ansonsten probiere mal :

defmod HeizkesselStoerungPushover notify Kesseltemperatur { if(ReadingsNum("Kesseltemperatur","Kesseltemperatur","") < 80) {system ("curl -s -F 'token=xxxxxxx' -F 'user=xxxxxxx' -F 'message=Kesseltemperatur < 24°C' https://api.pushover.net/1/messages.json")}}

Da müsstest Du aber zwei oder mehr Nachrichten bekommen. Jeder Event von Kesseltemperatur  müsste dann triggern.

Vielleicht kann regEx auch nicht weil gerät und Reading gleich heisst  :-X - ist ein Scherz  ;D

Gruß Otto
Titel: Antw:Notify will nicht...
Beitrag von: thgorjup am 06 Januar 2017, 17:21:27
Ich habe es die ganze Zeit mit  < 80 eingetragen.
Titel: Antw:Notify will nicht...
Beitrag von: Otto123 am 06 Januar 2017, 17:31:46
Du siehst aber ich habe den trigger geändert! Also nur zum Test
Titel: Antw:Notify will nicht...
Beitrag von: thgorjup am 06 Januar 2017, 17:39:45
Ah, stimmt. Und es klappt jetzt! Super, vielen Dank!

Wenn du mir jetzt noch sagt, wie ich $EVENT in den Pushover bekomme, dann ist es Perfekft.
Und vielleicht noch einen Tipp, wie ich es bewerkstellige, dass ich bei <24 °C nicht permanent eine Meldung bekomme.  8) 
Also dass ich nur einmalig die Nachricht bekomme.
Titel: Antw:Notify will nicht...
Beitrag von: CoolTux am 06 Januar 2017, 17:42:45
In Deinem Fall habe ich 2 Empfehlungen für Dich. Statt Notify, DOIF. Und auf jeden Fall das Pushover Modul installieren.
Titel: Antw:Notify will nicht...
Beitrag von: thgorjup am 06 Januar 2017, 19:14:19
Ok, danke. Ich habe jetzt ein Konstrukt aus Dummy, DOIF und Notify gebaut.
Funktioniert gut!  :)