Thermostat + Fensterkontakt & Telegram

Begonnen von fireb, 21 Januar 2016, 12:48:27

Vorheriges Thema - Nächstes Thema

fireb

Hallo,

ich habe gestern meine ersten Komponenten in FHEM eingebunden und ich glaube dabei einen Fehler gemacht zu haben.

Zuerst habe i den Fensterkontakt (HM-SEC-SC-2) in FHEM integriert und danach erst das Heizkörperthermostat.
Danach habe ich die beiden Geräte versucht zu verbinden.
Das ganze hat, meines Erachtens dann auch funktioniert nur als ich jetzt ein Notify erstellt habe welches mir per Telegram eine Nachricht senden soll, wenn der Festerkontakt seinen Status ändert ist mir etwas komisches aufgefallen.

Ich erhalte nämlich beim Öffnen oder Schließen des Fensters zwei Nachrichten hintereinander.
Bemerkt habe ich unter anderem, dass wenn ich den Fenstersensor in FHEM anklicke und zu "Readings" scrolle beim Punkt "contact" bei einer Statusänderung zwei Werte angezeigt werden.

Also wenn ich das Fenster schließe erscheint bei "contact" der Wert "closed (to HeizungWohnzimmer)" und gleich darauf steht "closed (to HMLAN1)".
Ich glaube das deswegen zweimal eine Nachricht versendet wird, weil sich der Status "closed" zweimal bei der selben Aktion ändert.

Meine beiden Notify's habe ich folgendermaßen erstellt

define notify_fensterwohnzimmer_closed notify FensterWohnzimmer:closed set telegram message Info! Fenster Wohnzimmer wurde geschlossen!
define notify_fensterwohnzimmer_open notify FensterWohnzimmer:open set telegram message Info! Fenster Wohnzimmer wurde geöffnet!

Ich hoffe Ihr versteht ungefähr was ich meine  :-\

lg
fireb

Ellert

Ja, das hast Du verständlich beschrieben. Ich vermute Deine ungeschriebene Frage lautet: "Wie bekomme ich das weg?"

Schau mal hier: http://forum.fhem.de/index.php/topic,47894.msg395609.html#msg395609

fireb

Hallo Ellert,

ja genau, auf die Frage habe ich ganz vergessen.

Danke für den Link! Könntest Du mir eventuell noch erklären wie ich das ganze in meinem Fall mit dem Trigger und LongRelease umsetzen muss? Habe von den ganzen Befehlen noch nicht wirklich einen Plan und arbeite mich derzeit noch durch Tutorials um das ganze einmal zu verstehen zu können.

lg

Ellert

Ein notify verwende ich selten. Bei mehreren Zuständen eines Aktors bietet sich DOIF an, s. http://fhem.de/commandref_DE.html#DOIF , also weiterer Lesestoff  ;)

DOIF geht etwa so:
define FensterWZ DOIF ([FensterWohnzimmer] eq "open") in die Eingabezeile des WEB-Frontend eingeben und im DEF-Editor den  Kode vervollständigen
([FensterWohnzimmer] eq "open")
   (set telegram message Info! Fenster Wohnzimmer wurde geöffnet!)
DOELSEIF ([FensterWohnzimmer] eq "closed")
   (set telegram message Info! Fenster Wohnzimmer wurde geschlossen!)


Für den Editor gibt es eine Erweiterung zur Syntaxprüfung, usw. http://forum.fhem.de/index.php/topic,45373.msg371668.html#msg371668

frank

oder das notify auf das reading "contact" umbauen, anstatt dem state.
dort kommen weniger events.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

martinp876

State ist mangels reading Name ein schlechtes trigger event. Ich suche immer readings. Die kann man sauber filtern. Bei state geht dies eben nur auf den Inhalt des state. Und der kann auch sonstwo auftauchen.

fireb

Ok, könnt Ihr mir vielleicht sagen wie ich das notify auf ein reading umbauen kann?
Ich habe jetzt mehrere Befehle versucht allerdings funktioniert's mit denen nicht so wirklich.

DEF FensterWohnzimmer { if (ReadingsVal("contact") eq "open (to HMLAN1)") {fhem("set telegram message TEST")} }

lg.

Ellert

Zitat von: fireb am 22 Januar 2016, 10:17:18
Ok, könnt Ihr mir vielleicht sagen wie ich das notify auf ein reading umbauen kann?
Ich habe jetzt mehrere Befehle versucht allerdings funktioniert's mit denen nicht so wirklich.

DEF FensterWohnzimmer { if (ReadingsVal("contact") eq "open (to HMLAN1)") {fhem("set telegram message TEST")} }

lg.

Sieh Dir bitte mal die Syntax für ReadingsVal in der Commandref an: http://fhem.de/commandref_DE.html#perl , kommst Du damit klar?

frank

ZitatOk, könnt Ihr mir vielleicht sagen wie ich das notify auf ein reading umbauen kann?
du musst nur die regex ändern in deinem 1. post. siehe commandref:notify.

FensterWohnzimmer.contact:.closed
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

fireb

Ich habe mir gestern das Commandref angesehen und gestern noch den ganzen Abend herumprobiert um meine Vorstellung endlich umzusetzen, allerdings haben die ganzen Versuche nichts gebracht.

Ich bin schon leicht am verzweifeln  :-[

Probiert habe ich schon so viele Befehlskombinationen aber keine hat bisher funktioniert.

Wenn ich den Code, wie von Frank beschrieben, abändere erziele ich auch kein Ergebnis. Abgeändert sollte der Code ja dann so aussehen:
define notify_fensterwohnzimmer_closed notify FensterWohnzimmer.contact:.closed set telegram message Info! Fenster Wohnzimmer wurde geschlossen!

Oder habe ich da was falsch verstanden?

Ich hoffe Ihr seid mir nicht böse, dass ich mich anscheinend so blöd anstelle  :-\

Liebe Grüße
fireb

martinp876

Hast du es der Reihe nach probiert?
Dass das notify ausgelöst wird: schalte einmal etwas einfaches.
Dass die korrekte Aktion ausgeführt wird: loese den trigger mit dem Kommando trigger aus um die Reaktion zu prüfen.

fireb

Was meinst du mit "der Reihe nach"?

Der Telegram Befehl sollte funktionieren, denn mit set telegram message TEST erhalte ich eine Nachricht auf meinem Handy.

Das Notify funktioniert Grundsätzlich ja auch nur habe ich eben das Problem, dass ich die Nachricht zweimal erhalte, was wahrscheinlich daran liegt, dass ich mit meinem "Standard" Code den Wert "state" überprüfe der sich bei einer Aktion zweimal mit dem selben Wert ändert und somit zweimal die Nachricht versendet wird.

Ich habe jetzt das Thermostat auf Werkszustand zurückgesetzt und nur den Fenstersensor mit FHEM verbunden und erhalte bisher nur immer eine Nachricht bei meinem Notify welches wie in meinem Anfangspost beschrieben aussieht.

Getestet habe ich das ganze indem ich den Befehl trigger FensterWohnzimmer closed ausgeführt habe.

Ich verstehe nur nicht ganz wie ich die Readings- Werte auswerten bzw darauf reagieren kann. Bei ReadingsVal habe ich gelesen, dass man 3 Werte angeben muss. In meinem Fall habe ich ja nur zwei, "open" oder "closed". Oder verstehe ich da etwas ganz falsch?

martinp876

Nun, wenn schon alles funktioniert ist es ja für.
Wie notifies aufgebaut sind und dass hier eine entsprechende bebeispielte Beschreibung hinterlegt wird musst du im allgemeinen teil von fhem einfordern.
Faktisch ist ein notify doch nichts anderes als ein stringvergleich. Erst schaust du dir an, welche events kommen indem du den events monitor einschaltet und beobachtet. Wenn du dann identifiziert hast, welche events oder event Gruppen interessant sind baust du deine regexp auf diese zu filtern. In einem event kommt die entity, das reading und der wert. Nur bei state wurde geschlampt und state kommt leider nicht.
Alle 3 strings kannst du mit regexp ( z.B. .*) zusammenfassen, oder auch nicht.
Probiert es doch einfach.... Und dann fordere eine ausführliche Beschreibung für das Schlüsselthema in fhem, incl event maskieren. Oder schreibe es gleich selbst