Hauptmenü

Probleme mit notify

Begonnen von gubbl, 22 Februar 2014, 17:46:28

Vorheriges Thema - Nächstes Thema

gubbl

Hallo allerseits,

Ich weiß nicht, ob ich das Konzept von notify noch nicht verstanden habe, aber irgendwie habe ich Probleme damit.

Ich nutze notify z.B. schon erfolgreich für das Mappen von Tastern auf Rolläden, kein Problem.

Nun möchte ich das aber gerne auch für andere Sachen nutzen, wie zum Beispiel für eine Meldung, wenn meine Boilertemperatur zu tief sinkt.
Dafür brauche ich dann - anders als bisher - auch einen Wert, die Temperatur.

Zum Testen hab ich also erstmal folgendes notify ausprobiert:

define testNotify notify boiler_temp:temperature {Log 3, %;;}

Keine Logeinträge.

Gehe ich jedoch den Umweg und schreibe stattdessen

define testNotify notify boiler_temp:temperature {\
my $temp=ReadingsVal("boiler_temp","temperature","999.9");;\
  Log (3, $temp);;\
}


dann bekomme ich die Einträge.

Daher die Vermutung, dass an boiler_temp:temperature vermutlich etwas falsch ist. Komme aber nicht drauf, was das ist.

Gruß,
Julian
fhem zurzeit im Umstieg von FB7390 auf Raspi
2x HMS 100 TF
1x HMS 300 TH
4x FHT80b und FHT 8v
diverse Aktoren über FS20 Unterputzschalter

jjf

Darauf bin ich eben auch gestossen:
(aus der Webanzeige)

WetterTest2:
DEF    gdsBrk {myWetter();}                         geht: ergibt 12 Aufrufe bei "get gdsBrk conditions Frankfurt/M-Flh."
2014.02.23 10:19:48 5: Triggering Wetter_Test
2014.02.23 10:19:48 4: Wetter_Test exec set Wetterdummy gdsBrk g_weather: stark bewölkt
2014.02.23 10:19:48 5: Triggering Wetter_Test
2014.02.23 10:19:48 4: Wetter_Test exec set Wetterdummy gdsBrk g_pressure-nn: 1024.2

Wetter_Test:
DEF    gdsBrk:*       set Wetterdummy @ %   geht!
DEF    gdsBrk:*_w* set Wetterdummy @ %   geht nicht: liefert keine Ereignisse im "Event monitor"

wobei gdsBrk vom Typ GDS ist.

Wie kann ich nur auf das Ereigniss: "gdsBrk c_weather" reagieren?

Ich habe das Problem folgendermassen umgangen:
DEF    gdsBrk {myWetterTest("%");}
Dabei analysiere ich die Ereignisse in der Unterroutine.

Joachim

Rince

@gubbl
Ja, den Eindruck könnte man bekommen  8)
Aber das macht nix, jeder hat mal angefangen.

Was du brauchst, ist eine if Konstruktion in deinem Notify.

Logfiles sind i.d.R. (außer für Forensiker und SVG Plots) Vergangenheitsbewältigung.


Dein Notify sollte etwa den Aufbau haben:

Reagieren wenn sich die Temperatur geändert hat, dann prüfen ob ein Sollwert unterschritten wird, und dann, wenn er unterschritten ist, etwas tun.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Hans Franz

@gubbl
Versuch mal:
{Log 3, "%";;}

Besser aber:
{Log 3, $EVENT;;}

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

Rince

???
Ich weiß immer noch nicht, was das mit den Logfiles soll. Klärt mich mal wer auf?

Ein
list boiler_temp
erschiene mir hilfreicher. Dann könnte man nämlich  prüfen, ob das Reading stimmt.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Hans Franz

Zitat von: Rince am 23 Februar 2014, 13:43:45

Ich weiß immer noch nicht, was das mit den Logfiles soll.
Dient wohl nur zur Syntaxprüfung. Mach' ich als Anfänger auch ständig.

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

Rince

Nun ja.
Wenn ihr dann die Logeinträge habt, können wir mit dem list weitermachen und der benötigten if Konstruktion.  ::)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

gubbl

Hallo,

Wie Hans richtig vermutet hat, nehme ich den Log-Befehl einfach immer nur, um zu prüfen ob ein notify ausgelöst wird.

Da bei
define testNotify notify boiler_temp:temperature {Log 3, %;;}
und auch bei
define testNotify notify boiler_temp:temperature {Log 3, "hallo";;}
keine Logmeldung auftaucht, bei
define testNotify notify boiler_temp {Log 3, "hallo";;}
aber schon, kann es eigentlich nur daran liegen, dass kein notify für boiler_temp:temperature ausgelöst wird.

Die spätere Anwendung wäre etwa so:
define testNotify notify boiler_temp:temperature {\
  if(%<45){\
    <sende Email>
  }\
}


Gruß, Julian
fhem zurzeit im Umstieg von FB7390 auf Raspi
2x HMS 100 TF
1x HMS 300 TH
4x FHT80b und FHT 8v
diverse Aktoren über FS20 Unterputzschalter

Rince

Wenn du dann mal Zeit hast das obige list auszuführen, könnten wir uns um den spannenden Teil vom Notify kümmern.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

gubbl

Da ich leider immer nur am Wochenende daheim beim fhem bin, schreib ich erst jetzt zurueck.

Das Problem war ein viel simpleres, durch einfaches Ausprobieren gefunden:
Statt
define checkBoiler notify boiler_temp:temperature [...]
haette ich einfach nur
define checkBoiler notify boiler_temp:temperature.* [...]
schreiben muessen.

Dumm gelaufen, trotzdem danke fuer die Antworten!

Gruss,
Julian
fhem zurzeit im Umstieg von FB7390 auf Raspi
2x HMS 100 TF
1x HMS 300 TH
4x FHT80b und FHT 8v
diverse Aktoren über FS20 Unterputzschalter