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
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
Hallo Oto,
ReadingsNum und ReadingsVal liefern beide das Ergebnis: 34.0
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)}
Tipp zu Pushover: Dafür gibt es sogar ein modul -> https://fhem.de/commandref_DE.html#Pushover
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
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
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
Ich habe es die ganze Zeit mit < 80 eingetragen.
Du siehst aber ich habe den trigger geändert! Also nur zum Test
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.
In Deinem Fall habe ich 2 Empfehlungen für Dich. Statt Notify, DOIF. Und auf jeden Fall das Pushover Modul installieren.
Ok, danke. Ich habe jetzt ein Konstrukt aus Dummy, DOIF und Notify gebaut.
Funktioniert gut! :)