Doif Abfrage (States mehrer Module) & Email per senden

Begonnen von Treibhaus, 12 August 2023, 18:36:33

Vorheriges Thema - Nächstes Thema

Treibhaus

Hallo,

ich möchte eine Status-Abfrage der einzelnen Ausgänge eines HBW-Modus machen und bei Änderung (state: on/Off) jeweils eine Email versenden.
Da ich jetzt alle Bsp. die ich finden konnte probiert habe (selbst nicht auf den korrekten Syntax komme) hoffe ich, dass mir hier jemand helfen kann.

Mit dem aktuellen Programm werden beim Start des Moduls (ca. Email ~3x16) sowei bei Status-Änderung 3 versendet.
define di_Email DOIF (["^HBW_LC_SW16_IN8_DR:on"]) ({DebianMail('EMAIL@EMAIL.net','Schalter eingeschaltet','Das Gerät: $DEVICE wurde $EVENT geschaltet')}) DOELSEIF (["^HBW_LC_SW16_IN8_DR:off"]) ({DebianMail('EMAIL@EMAIL.de','Schalter ausgeschaltet','Das Gerät: $DEVICE wurde $EVENT geschaltet')})

attr di_Email do always

Eine state-Abfrage hatte ich erfolglos getestet. ...


Zum Gerät:
$ perl /opt/fhem/fhem.pl 7072 "list HBW_LC_SW16_IN8_DR_HBW0000000_01"
Internals:
   DEF        608F3D00_01
   FUUID      64ca506b-f33f-16d7-5d90-85c43fb0ceb129ea
   NAME       HBW_LC_SW16_IN8_DR_HBW0000000_01
   NR         84
   STATE      off
   TYPE       HM485
   chanNo     01
   device     HBW_LC_SW16_IN8_DR_HBW0000000
   eventCount 2
   peerRole   actuator
   READINGS:
   2023-08-11 21:21:54   R-logging       on
     2023-08-11 21:22:56   state           off
     2023-08-11 21:22:56   working         on
[/font]
   devHash:
     DEF        608F3D00




Über jede Hilfe wäre ich euch Dankbar.

Signatur:
Odroid -C2 + BSC EnOcean USB 300-TCM310 + HM485
Enocean-Taster-Fensterkontakt,-Bewegungsmelder
HM-Module über 3 Etagen + Garage/Garten
+ 1-wired Temp-Sensoren, S0-Schnittstellen + RHASSPY-Spracherkennung

Per

Du bekommst drei Mails pro Änderung? Oder habe ich das falsch verstanden?
Neben einen richtigen List wäre auch ein Auszug vom Eventmonitor des Zeitpunktes sinnvoll 

Treibhaus

Hallo Per,

so sieht die Ausgabe zu dem Event aus

2023.08.13 05:38:00 1: sendEmail RCP: Email@Email.net
2023.08.13 05:38:00 1: sendEmail Subject: Schalter ausgeschaltet
2023.08.13 05:38:00 1: sendEmail Text: Das Gerät: HBW_LC_SW16_IN8_DR_HBW0002032_04 wurde set_off geschaltet
2023.08.13 05:38:01 1: sendemail returned: Aug 13 05:38:01 fhem-manacor sendemail[94644]: Email was sent successfully!
2023.08.13 05:38:01 1: sendEmail RCP: Email@Email.net
2023.08.13 05:38:01 1: sendEmail Subject: Schalter eingeschaltet
2023.08.13 05:38:01 1: sendEmail Text: Das Gerät: HBW_LC_SW16_IN8_DR_HBW0002032_04 wurde working: on geschaltet
2023.08.13 05:38:03 1: sendemail returned: Aug 13 05:38:03 fhem-manacor sendemail[94646]: Email was sent successfully!
2023.08.13 05:38:03 1: sendEmail RCP: Email@Email.net
2023.08.13 05:38:03 1: sendEmail Subject: Schalter eingeschaltet
2023.08.13 05:38:03 1: sendEmail Text: Das Gerät: HBW_LC_SW16_IN8_DR_HBW0002032_04 wurde working: on geschaltet
2023.08.13 05:38:05 1: sendemail returned: Aug 13 05:38:05 fhem-manacor sendemail[94650]: Email was sent successfully!
Signatur:
Odroid -C2 + BSC EnOcean USB 300-TCM310 + HM485
Enocean-Taster-Fensterkontakt,-Bewegungsmelder
HM-Module über 3 Etagen + Garage/Garten
+ 1-wired Temp-Sensoren, S0-Schnittstellen + RHASSPY-Spracherkennung

Otto123

#3
Am einfachsten geht die Erzeugung des richtigen Codes im Eventmonitor. btw:  was Du zeigst, sind Logeinträge und nicht Events!

Also Eventmonitor öffnen und Dein Device modifizieren lassen: https://wiki.fhem.de/wiki/Event_monitor

Du triggerst jetzt auf Geräte die mit HBW_LC_SW16_IN8_DR beginnen und on im Event enthalten - der Event sollte aber exakt "on" sein.
In der Commandref steht dazu die Erklärung:
ZitatBeispiele für Regex-Angaben:

["FS"] triggert auf alle Devices, die "FS" im Namen beinhalten
["^FS"] triggert auf alle Devices, die mit "FS" im Namen anfangen
["FS:temp"] triggert auf alle Devices, die "FS" im Namen und "temp" im Event beinhalten
[":^temp"] triggert auf beliebige Devices, die im Event mit "temp" beginnen
["^FS$:^temp$"] triggert auf Devices, die genau "FS" heißen und im Event genau "temp" vorkommt
[""] triggert auf alles
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Treibhaus

Hallo Otto,

leider kann ich den Event-monitor nicht nutzen da ich nur per ssh auf die Fhem-Steuerung zugreife.

Ich gehe mal davon aus wenn nach "on" oder "off" geprüfe wird die folgenden Readings alle einen Trigger erzeugen.

READINGS:
   2023-08-11 21:21:54   R-logging       on
   2023-08-11 21:22:56   state           off
   2023-08-11 21:22:56   working         on



Müsste es dann nicht

["^HBW_LC_SW16_IN8_DR:state"] eq "on"   

o.ä heissen ?

Gruss Jörg
Signatur:
Odroid -C2 + BSC EnOcean USB 300-TCM310 + HM485
Enocean-Taster-Fensterkontakt,-Bewegungsmelder
HM-Module über 3 Etagen + Garage/Garten
+ 1-wired Temp-Sensoren, S0-Schnittstellen + RHASSPY-Spracherkennung

Damian

"state" kommt normalerweise nicht im Event vor und eine Regex für einen Devicenamen kannst du nicht beim Abfragen des Status-Readings verwenden, daher als Ereignistrigger:

["^HBW_LC_SW16_IN8_DR:^on$"]
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Otto123

Zitat von: Treibhaus am 14 August 2023, 10:10:42leider kann ich den Event-monitor nicht nutzen da ich nur per ssh auf die Fhem-Steuerung zugreife.
Um die Events zu sehen  gibt es eine Alternative https://fhem.de/commandref_DE.html#inform
Den angesprochenen Wizard kannst Du damit mW nicht nutzen.
Zitat von: Treibhaus am 14 August 2023, 10:10:42Müsste es dann nicht ...
Das ist eine Vermischung vom Syntax für Auswertung von Status oder Readings und das Auswerten von Ereignissen (Events)

Den richtigen Syntax hat Damian gezeigt.

Zitat von: Treibhaus am 14 August 2023, 10:10:42da ich nur per ssh auf die Fhem-Steuerung zugreife.
warum entzieht man sich dem Browser Interface?

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Treibhaus

Hallo Otto,

Danke für den Tip zur Alternative:

Zitat von: Otto123 am 14 August 2023, 21:11:38Um die Events zu sehen  gibt es eine Alternative https://fhem.de/commandref_DE.html#inform
Den angesprochenen Wizard kannst Du damit mW nicht nutzen.

-> inform. Kannte ich noch nicht.

Zitat von: Otto123 am 14 August 2023, 21:11:38Das ist eine Vermischung vom Syntax für Auswertung von Status oder Readings und das Auswerten von Ereignissen (Events)

Das hatte ich vermutet aber irgendwie gehofft das eine "Vermischung" zum Erfolg führt. -geht also nicht = wieder etwas gelernt!

Zitat von: Otto123 am 14 August 2023, 21:11:38Den richtigen Syntax hat Damian gezeigt.

Genau. Mit: define di_Email DOIF (["^HBW_LC_SW16_IN8_DR:^on$"]) ({Debianmail..... ) DOELSEIF (["^HBW_LC_SW16_IN8_DR:^off$"]) ({Debianmail..... )
#attr di_Email do always    #do always wird hier nicht mehr gebraucht

Zitat von: Otto123 am 14 August 2023, 21:11:38warum entzieht man sich dem Browser Interface?

Diese Steuerung läuft nicht in D-land. Und aktuell ist nur ein Port für ssh geroutet.
(hier kann ich mir überlegen ob ich dazu später ein VPN in mein Netzwerk zuhause haben möchte - wobei  ich dann wohl gleich das nächste Topic dazu öffnen könnte.)
 (2 FHEM Steuerungen per VPN verbinden - welche Lösungen gibt es , was ist am Besten)

Aber jetzt erst einmal:
Vielen Dank für die erfolgreiche Unterstützung.

Grüsse aus Kölle
Signatur:
Odroid -C2 + BSC EnOcean USB 300-TCM310 + HM485
Enocean-Taster-Fensterkontakt,-Bewegungsmelder
HM-Module über 3 Etagen + Garage/Garten
+ 1-wired Temp-Sensoren, S0-Schnittstellen + RHASSPY-Spracherkennung

Damian

Einen Fehler sehe ich noch.

Das Attribut do always kann man in der Konstellation nicht weglassen, denn das Modul kennt keine Zuordnung der on/off Zustände zum Device. Wenn also zwei Devices "on" hintereinander schalten würden, ohne dass dazwischen ein "off" käme, dann würde man vom zweiten "on" keine E-Mail bekommen.



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

Otto123

Zitat von: Treibhaus am 15 August 2023, 09:14:24Diese Steuerung läuft nicht in D-land. Und aktuell ist nur ein Port für ssh geroutet.
Da hilft ganz simpel ein ssh Tunnel :) in der Art
ssh user@host -L 8083:IPvomFHEM:8083Dann machst Du den Browser auf mit http://localhost:8083 oder http:127.0.0.1:8083

Vorn steht der lokale Port hinten steht der Port auf dem Zielrechner, beide kannst Du natürlich ändern. ;)

Zum VPN kannst Du sowas machen: https://heinz-otto.blogspot.com/2022/02/wireguard-verbundene-netzwerke.html da brauchst Du remote nichts zu am Netzwerk zu ändern, nicht mal ein Port frei geben.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Treibhaus

Hallo,

Zitat von: Damian am 15 August 2023, 10:11:43Einen Fehler sehe ich noch.

Das Attribut do always kann man in der Konstellation nicht weglassen, denn das Modul kennt keine Zuordnung der on/off Zustände zum Device. Wenn also zwei Devices "on" hintereinander schalten würden, ohne dass dazwischen ein "off" käme, dann würde man vom zweiten "on" keine E-Mail bekommen.



Diese Antwort hat von meiner Seite jetzt etwas länger gedauert. Aber vielen Dank. Es funktioniert natürlich jetzt (schon länger)
Gruß Jörg
Signatur:
Odroid -C2 + BSC EnOcean USB 300-TCM310 + HM485
Enocean-Taster-Fensterkontakt,-Bewegungsmelder
HM-Module über 3 Etagen + Garage/Garten
+ 1-wired Temp-Sensoren, S0-Schnittstellen + RHASSPY-Spracherkennung

Treibhaus

Hallo Otto,

Dir auch vielen DANK.

Zitat von: Otto123 am 15 August 2023, 20:24:15
Zitat von: Treibhaus am 15 August 2023, 09:14:24Diese Steuerung läuft nicht in D-land. Und aktuell ist nur ein Port für ssh geroutet.
Da hilft ganz simpel ein ssh Tunnel :) in der Art
ssh user@host -L 8083:IPvomFHEM:8083Dann machst Du den Browser auf mit http://localhost:8083 oder http:127.0.0.1:8083

Vorn steht der lokale Port hinten steht der Port auf dem Zielrechner, beide kannst Du natürlich ändern. ;)
Das probiere ich auf jeden Fall aus.
Leider ist mir der ssh-server auf dem RPI ausgefallen. (Oder Fail2Ban macht Mist)
Ab nächsten Montag löse ich auch das Problem

ZitatZum VPN kannst Du sowas machen: https://heinz-otto.blogspot.com/2022/02/wireguard-verbundene-netzwerke.html da brauchst Du remote nichts zu am Netzwerk zu ändern, nicht mal ein Port frei geben.
Das schau ich mir auch an. DANKE
Gruß Jörg
Signatur:
Odroid -C2 + BSC EnOcean USB 300-TCM310 + HM485
Enocean-Taster-Fensterkontakt,-Bewegungsmelder
HM-Module über 3 Etagen + Garage/Garten
+ 1-wired Temp-Sensoren, S0-Schnittstellen + RHASSPY-Spracherkennung