Heizkörper / Fenstersensor über ein notify schalten

Begonnen von hadenia, 29 Dezember 2020, 17:30:55

Vorheriges Thema - Nächstes Thema

hadenia

Hallo Joachim, das ein guter Tipp mit dem inactive/active vielen Dank.

Ich habe das mal wie folgt ausprobiert:
define Fenster_Bad_oben_closed notify ZWave_SENSOR_NOTIFICATION_32:alarm.*closed set ZWave_THERMOSTAT_4 tmHeating
define Fenster_Bad_oben_open notify ZWave_SENSOR_NOTIFICATION_32:alarm.*open set ZWave_THERMOSTAT_4 tmOff

define FensterSensor_Bad_oben_active notify SimSwitch_Fensterkontakte:on set Fenster_Bad_oben_closed active;;set Fenster_Bad_oben_open active
define FensterSensor_Bad_oben_inactive notify SimSwitch_Fensterkontakte:off set Fenster_Bad_oben_closed inactive;;set Fenster_Bad_oben_open inactive


attr ZWave_SENSOR_NOTIFICATION_32 userReadings state:alarm.* {my $value=ReadingsVal($name,"alarm","n.a.");; if($value =~ m/open/){return "open"}elsif($value =~ m/closed/){return "closed"}else{return "unknown"}}


So ganz läuft es aber noch nicht rund. Wenn der SimSwitch_Fensterkontakte auf on steht reagiert der Thermostat "in aller Regel", aber nicht wirklich zuverlässig reproduzierbar.
Wenn der SimSwitch_Fensterkontakte auf off steht, ist die Funktion ebenfalls nicht reproduzierbar: Ab und an geht der Thermostat auf tmOff, wenn der Kontakt geöffnet wird. Wenn der Fensterkontakt geschlossen wird, reagiert der Thermostat nie, was auch so sein soll.

Die Einträge im Eventmonitor haben mir bisher nicht geholfen, die Fehlerursache zu erkennen. Für heute mache ich mal Schluss und schaue mir das morgen in Ruhe nochmal an.

Nochmal vielen Dank an euch Beide und einen guten Rutsch in ein hoffentlich normales Jahr!


MadMax-FHEM

#16
Also das userReadings brauchst du nur, wenn du das direkt (wie Beta-User vorgeschlagen hat) mit dem WDT machen willst (also ohne die notify): https://forum.fhem.de/index.php/topic,117170.msg1115428.html#msg1115428

Hast du noch andere Dinge laufen, die den Thermostaten schalten?

Wochenprogramme die per Automatik im Thermostat laufen (sofern es da sowas gibt / ich habe nur Homematic Thermostate ;)  ) oder ist WDT aktiv (und evtl. schon mittels den "state-userReadings" gekoppelt)?

Ansonsten können wir mal anfangen aus den ganzen notify ein paar weniger zu machen ;)
(dadurch wird auch das Aktivieren/Deaktivieren einfacher ;)  )

Ich fange mal an (möglich, dass das eine oder andere von dir "korrigiert"/"nachgearbeitet" werden muss: sorry schon mal dafür ;)  ):


defmod Fenster_Bad_oben notify ZWave_SENSOR_NOTIFICATION_32:alarm.*closed|ZWave_SENSOR_NOTIFICATION_32:alarm.*open {if($EVENT =~ m/closed/){fhem("set ZWave_THERMOSTAT_4 tmHeating");;Log3($SELF,1,"Event: $EVENT  -> tmHeating");;}elsif($EVENT =~ m/open/){fhem("set ZWave_THERMOSTAT_4 tmOff");;Log3($SELF,1,"Event: $EVENT  -> tmOff");;}}

EDIT: undef -> $SELF (hoffentl. ohne Fehler ;)  Leider keine Zeut mehr zum Testen  :-\ )

Ich habe auch gleich Logausgaben eingebaut, dann siehst du auch im Log ob und was und warum das notify geschalten hat...

Wichtig: die Eingabe ist für "RawDef" gedacht!!
Wenn du es "einfach" per "DEF" (also Klick auf DEF) eingibst, dann eben die Strichpunkte "halbieren" ;)

Ich habe es mal mit dummys nachgestellt und bei mir hat es funktioniert :)

Hier mal meine Logausgaben:

2020.12.31 13:33:42 1: Fenster_Bad_oben Event: alarm: irgendwas open  -> tmOff
2020.12.31 13:33:57 1: Fenster_Bad_oben Event: alarm: irgendwas closed  -> tmHeating


Genauso kannst du das auch mit dem Aktivieren/Deaktivieren machen...
...probiere ich auch gleich noch, wenn ich schon dabei bin ;)

EDIT: here it comes

defmod FensterSensor_Bad_activate_deactivate notify SimSwitch_Fensterkontakte:o[nf]+ {if($EVENT eq "on"){fhem("set Fenster_Bad_oben active");;Log3($SELF,1,"Event: $EVENT  -> active");;}elsif($EVENT eq "off"){fhem("set Fenster_Bad_oben inactive");;Log3($SELF,1,"Event: $EVENT  -> inactive");;}}

EDIT: undef -> $SELF (hoffentl. ohne Fehler ;)  Leider keine Zeut mehr zum Testen  :-\ )

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

Zitat von: MadMax-FHEM am 31 Dezember 2020, 13:39:44
Also das userReadings brauchst du nur, wenn du das direkt (wie Beta-User vorgeschlagen hat) mit dem WDT machen willst (also ohne die notify): https://forum.fhem.de/index.php/topic,117170.msg1115428.html#msg1115428
Das ist eine Fehlinterpretation: WDT prüft nur zu den Schaltzeiten, ob eine Bedingung vorliegt, nach  der derzeit nicht geschaltet werden soll. NUR DAS wird vereinfacht, wenn der ZWave-Kontakt einen passenden "state"-Wert hat, alles andere muss man (derzeit...) außerhalb erledigen!

Zitat
Wochenprogramme die per Automatik im Thermostat laufen (sofern es da sowas gibt / ich habe nur Homematic Thermostate ;)  )
weekprofile wurde zu MAX!-Zeiten entwickelt, afaik. Es gibt auch ZWave-Geräte, die Wochenprofile unterstützen (hat hier derzeit nur keiner) und neuerdings einen ZigBee, und die equiva könnten es evtl. auch....

Zitat
EDIT: here it comes [...]
:) Sieht gut aus! Vorschlag ggf. noch für Log3: $SELF statt undef, dann sieht man ggf. auch, welches notify es war.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

MadMax-FHEM

Zitat von: Beta-User am 31 Dezember 2020, 14:01:03
Das ist eine Fehlinterpretation: WDT prüft nur zu den Schaltzeiten, ob eine Bedingung vorliegt, nach  der derzeit nicht geschaltet werden soll. NUR DAS wird vereinfacht, wenn der ZWave-Kontakt einen passenden "state"-Wert hat, alles andere muss man (derzeit...) außerhalb erledigen!

Ok, wusste ich nicht bzw. dachte ich so gelesen zu haben (zumindest so [falsch] verstanden wie du siehst ;)  )...
Aber wenn er es weder beim notify noch bei WDT nutzt, kann er es auch weglassen ;)


Zitat von: Beta-User am 31 Dezember 2020, 14:01:03
:) Sieht gut aus! Vorschlag ggf. noch für Log3: $SELF statt undef, dann sieht man ggf. auch, welches notify es war.

Danke :)
Ok, ändere ich.
Ich kenne auch (noch) nicht alle "System-Variablen", die es so gibt (und dann heißen die u.U. auch "überall" anders: $NAME, $DEVICE, $name, ...).

So wie ich es drin habe (hatte ;)  ) funktioniert es halt "immer" :)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

Das userReadings für state finde ich sinnvoll. Kann man leichter loggen/in nummerische Werte umwandeln, und ein userReadings ist zwar ein weiterer Layer auf dem "Event-Stapel", aber kein zusätzliches Event, von daher ist es von der Last her (sauber getriggert, wie hier) zu vernachlässigen...

Und was Lernen angeht: Willkommen im Club; das mit $SELF muss ich auch erst noch verinnerlichen, ist nicht sonderlich gut dokumentiert, wenn ich das richtig im Kopf habe (aber hilfreich, oder...?).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

MadMax-FHEM

Zitat von: Beta-User am 31 Dezember 2020, 14:21:54
Und was Lernen angeht: Willkommen im Club; das mit $SELF muss ich auch erst noch verinnerlichen, ist nicht sonderlich gut dokumentiert, wenn ich das richtig im Kopf habe (aber hilfreich, oder...?).

:)

Jep, hilfreich!
Noch hilfreicher wenn man/ich wüsste WO überall es "gültet"...

Guten Rutsch (und erst mal weg [wahrschinlich]), Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

hadenia

Zuerst mal: Ich wünsche euch ein frohes neues Jahr in neuer Frische und alter Stärke  ;)

Vielen Dank für die tolle Unterstützung, mit ein paar Einschränkungen fängt es an zu funktionieren wie es soll!

Nachdem ich alle Attribute und Notify´s der vorherigen Versuche gelöscht habe, funktioniert es. Auch das Notify FensterSensor_Bad_activate_deactivate reagiert auf den Schalter. Manchmal, leider nicht reproduzierbar, reagiert das System nicht auf das öffnen oder schließen des Fenstersensors. Die Logeinträge Log3($SELF,1,"Event: $EVENT  -> active") landen im Log auf dem Server, nicht im Eventmonitor, ist das richtig?

Wenn das System reagiert, finde ich den Logeintrag dort, wenn es nicht reagiert, finde ich keinen Eintrag.
Mit anderen Worten. Manchmal, nicht reproduzierbar, öffne und schließe ich den Fensterkontakt und sowohl der Thermostat reagiert nicht als auch im Logfile finde ich keinen Eintrag.
Das müsste dann ein ZWave Problem sein, oder? Netzwerkupdate habe ich gemacht, ein manuelles Aufwecken des Sensors hilft auch nicht wenn es erst mal klemmt. Manchmal hilft ein shutdown restart, dann reagiert der Fenstersensor wieder 2 oder 3 Mal und dann hängt es wieder.

Ein Beispiele wenn er nicht mehr reagiert:
Nach einem shutdown restart reagiert der Fenstersensor auf das öffnen und dar Thermostat regelt zu.
Auf das anschließende öffnen reagieren weder Fenstersensor noch Thermostat.
Zuvor finde ich im Log einen Eintrag, dass der Thermostat nicht reagiert hat. Kann das damit zusammenhängen?

2021.01.01 13:49:57 3: ZWave set ZWave_THERMOSTAT_4 tmHeating
2021.01.01 13:49:57 1: Event: alarm: AccessControl: Window/Door is closed  -> tmHeating
2021.01.01 13:50:02 2: ZWave: No ACK from ZWave_THERMOSTAT_4 after 5s for sentset:1304034001012508
2021.01.01 13:50:17 3: ZWave set ZWave_THERMOSTAT_4 tmOff
2021.01.01 13:50:17 1: Event: alarm: AccessControl: Window/Door is open  -> tmOff


Um noch die Fragen zu beantworten:
Den WDT möchte ich auf jeden Fall erhalten, das funktioniert dank eurer Hilfe jetzt sehr gut!
Es gibt keine Wochenprogramme die per Automatik im Thermostat laufen

Ich werde jetzt mein Funknetz nochmal genau überprüfen und gebe anschließend Bescheid, ob ich dort etwas gefunden habe.

MadMax-FHEM

Gerne und auch ein gutes neues Jahr!

Naja, wenn auch der Fenstersensor in fhem "nicht reagiert", also "nirgends" was mit "alarm:.....closed/open" kommt, dann reagiert nat. das notify auch nciht (wie sollte es ;)  )... :-\

Ja, da musst du wohl eher bei ZWave/Funk/... schauen.

Poste doch mal ein aktuelles list von dem Fenstersensor.
Hast du dort auch alle get-Aufrufe (die ich mal wo geschrieben hatte) abgesetzt und entweder gewartet oder "zwangsgeweckt"!?

Evtl. passt eine "association" nicht...
Aber ich sag's gleich: da bin ich nicht der Spezialist (also was wo assoziiert sein muss für bestimmte Meldungen etc. / man kann es aus den jeweiligen Klassen auslesen!?)...

Evtl. dafür bei ZWave einen gesonderten Thread aufmachen...

Ansonsten viel Spaß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

hadenia

Ich glaube, ich kann den Fehler reproduzieren:

Nach einem Neustart mache ich den Kontakt auf: Alle Meldungen erscheinen im Log und der Thermostat reagiert
Dann Kontakt schließen: Alle Meldungen erscheinen im Log und der Thermostat reagiert
Dann wieder Kontakt öffnen: Alle Meldungen erscheinen im Log und der Thermostat reagiert

Beim 4. Mal, manchmal auch erst beim 7. Mal:
Kontakt schließen: Keine Meldungen im Log vom ZWave_SENSOR_NOTIFICATION_32 und Thermostat reagiert nicht.

Das erscheint im Log:
2021.01.01 18:18:49 1: Event: alarm: AccessControl: Window/Door is open  -> tmOff
2021.01.01 18:18:49 2: ZWave: No ACK from ZWave_THERMOSTAT_4 after 5s for sentset:1304034001002514
2021.01.01 18:18:49 2: ERROR: cannot SEND_DATA to ZWave_THERMOSTAT_4: transmit queue overflow
2021.01.01 18:18:49 3: ZWave set ZWave_THERMOSTAT_4 tmOff
2021.01.01 18:18:49 1: Event: alarm: AccessControl: Window/Door is open  -> tmOff
2021.01.01 18:18:49 3: ZWave set ZWave_THERMOSTAT_4 tmHeating
2021.01.01 18:18:49 1: Event: alarm: AccessControl: Window/Door is closed  -> tmHeating
2021.01.01 18:18:54 2: ZWave: No ACK from ZWave_THERMOSTAT_4 after 5s for set:1304034001002515
2021.01.01 18:18:55 2: ZWDongle_ProcessSendStack: no ACK, resending message 010a00130403400100251590
2021.01.01 18:18:56 2: ZWDongle_ProcessSendStack: no ACK, resending message 010a00130403400100251590
2021.01.01 18:18:56 2: ERROR: cannot SEND_DATA to ZWave_THERMOSTAT_4: transmit queue overflow
2021.01.01 18:18:58 2: ERROR: cannot SEND_DATA to ZWave_THERMOSTAT_4: transmit queue overflow
2021.01.01 18:18:59 2: ZWave: No ACK from ZWave_THERMOSTAT_4 after 5s for set:1304034001002515


Nach einem deleteattr ZWave_SENSOR_NOTIFICATION_32 funktioniert alles wieder:


2021.01.01 18:19:08 3: ZWave set ZWave_THERMOSTAT_4 tmOff
2021.01.01 18:19:08 1: Event: alarm: AccessControl: Window/Door is open  -> tmOff
2021.01.01 18:20:42 3: ZWave set ZWave_THERMOSTAT_4 tmHeating
2021.01.01 18:20:42 1: Event: alarm: AccessControl: Window/Door is closed  -> tmHeating




So sieht das List vom Kontakt nach dem deleteattr aus, wenn alles funktioniert:

Save config
TabletUI
1
99_Variablen
Bad_oben
Bad_unten
Buero
Flur_unten
Garten
Kueche
Schlafzimmer
Unsorted
Wohnzimmer
ZWave
icoEverything Everything
Logfile
Commandref
Remote doc
Edit files
Select style
Event monitor

Internals:
   DEF        e441b167 33
   FUUID      5fed8617-f33f-51ed-bacc-362c9dd6add88677
   IODev      ZWDongle_0
   LASTInputDev ZWDongle_0
   MSGCNT     32
   NAME       ZWave_SENSOR_NOTIFICATION_32
   NR         146
   STATE      open
   TYPE       ZWave
   ZWDongle_0_MSGCNT 32
   ZWDongle_0_RAWMSG 00040021097105000000ff061600b300
   ZWDongle_0_TIME 2021-01-01 18:29:17
   ZWaveSubDevice no
   homeId     e441b167
   isWakeUp   
   lastMsgSent 1609520754.14275
   nodeIdHex  21
   READINGS:
     2021-01-01 18:29:17   alarm           AccessControl: Window/Door is open
     2020-12-31 09:05:11   model           FIBARO System FGDW002 Door Opening Sensor 2
     2020-12-31 09:05:11   modelConfig     fibaro/fgdw2.xml
     2020-12-31 09:05:11   modelId         010f-0702-1000
     2021-01-01 12:36:32   neighborList    ZWave_THERMOSTAT_3 ZWave_THERMOSTAT_4 ZWave_THERMOSTAT_5 ZWave_THERMOSTAT_7 ZWave_SWITCH_BINARY_18_BueroSchalter ZWave_SWITCH_BINARY_20_Heizung_AENDERN ZWave_SWITCH_MULTILEVEL_22_Wz
     2021-01-01 12:35:19   neighborUpdate  done
     2021-01-01 13:47:28   state           open
     2021-01-01 18:25:17   temperature     23.9 C
     2021-01-01 18:05:54   timeToAck       0.128
     2021-01-01 18:05:54   transmit        OK
     2021-01-01 18:05:52   wakeup          notification
     2020-12-31 09:05:12   zwavePlusInfo   version:01 role:SleepingReportingSlave node:Z-Wave+Node installerIcon:0c06 userIcon:0c06
Attributes:


Ich bin drauf gekommen, dass wenn es hängt, der Kontakt auf keinen get Befehl mehr reagiert.

Kann man so ein "hängen" noch irgendwie abfangen und ein "deleteattr" senden?


MadMax-FHEM

Welches Attribut löschst du denn? Bzw. wo also an welchem Device?

Habe ich jetzt irgendwie nicht erkannt...

Aber wie geschrieben eher mal einen passenden Thread im ZWave-Unterforum aufmachen, da lesen die Spezialisten mit...
...da gehöre ich bzgl. ZWave (sicher) nicht dazu.
Bin froh, wenn meine Sachen (bzgl. ZWave) laufen ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

hadenia

Ich lösche das Attribut von ZWave_SENSOR_NOTIFICATION_32:
deleteattr ZWave_SENSOR_NOTIFICATION_32

Bin gerade dabei einen neuen Thread zu formulieren im Z-Wave Unterforum. Wenn ich die Fehlerursache kenne poste ich hier auch die Lösung für alle die mitlesen. Ich werde jetzt mal versuchen, die Einkontakt-Lösung auf 2-Kontakte mit 2 Fenstern zu erweitern.

Wünsche dir noch einen schönen Abend,
Gruß Michael

MadMax-FHEM

#26
Naja normalerweise lautet der deleteattr Befehl so:

deleteattr DeviceName Attributname

Mit dem Aufruf löschst du dann ja alle Attribute von dem ZWave_SENSOR_NOTIFICATION_32?

Also ich weiß ja nicht ob das wirklich hilft oder Zufall ist bzw. welches der Attribute eines ist was "Probleme" macht...



Wenn du lists der weiteren Fenster-Kontakte postest kann man helfen (falls du Hilfe brauchst/willst)...

Eventuell auch mal bzgl. "sprechendere" Namen nachdenken.

rename Befehl ;)

ABER: behalte so Dinge wie "Programmierung"/RegEx und devSpec im Auge. Wenn da die Namen "klug" gewählt sind, kann man mit "kurzen Schreibweisen" eine Menge "erschlagen".

https://www.fhem.de/commandref_DE.html#devspec

Z.B. Lampen heißen alle Lampe_01, Lampe_02, Lampe_03, usw. -> set Lampe_.* on schaltet alle "gleichzeitig" mit einem Befehl ein. Auch notify usw. lassen sich besser/einfacher formulieren...
Z.B. Fensterkontakte heißen Fenster_01, Fenster_02, Fenster_03, usw. -> define nFenster notify Fenster_.*:open|closed {tue was} reicht dann für alle Fenster usw.

Das sind aber jetzt nur einfache Beispiele um zu zeigen was mit "vernünftigen" Namen alles geht.
(Gut Lampe_01, ... und Fenster_01, ... sind nat. jetzt nicht wirklich "vernünftig" weil ja ein Mensch keine Ahnung mehr hat was nun welches ist ;)  Aber du verstehst wo das hin geht [hoffe ich])

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

hadenia

Vielen Dank für den Tipp mit den "sprechenden Namen". Noch habe ich wenig Elemente, da werde ich mal anfangen alles zu überarbeiten.

Während ich auf den neuen Sensor warte versuche ich mich an einem Notify für zwei Fenstersensoren zur Steuerung von 2 Heizkörperthermostaten.
Wenn nur einer der beiden Sensoren "open" meldet, sollen die Thermostate geschlossen werden. Nur wenn beide Sensoren "closed" melden, sollen die Thermostate geöffnet werden = "tmHeating".

defmod Fenster_04 notify (ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open)|(ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open) {
if ( ReadingsVal('ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open', 'state', 'undef') eq 'open' && ReadingsVal('ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open', 'state', 'undef') eq 'open')
      { fhem("set ZWave_THERMOSTAT_3 tmOff");;Log3($SELF,1,"Event: $EVENT  -> tmOff");;}
if ( ReadingsVal('ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open', 'state', 'undef') eq 'closed' && ReadingsVal('ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open', 'state', 'undef') eq 'open')
      { fhem("set ZWave_THERMOSTAT_3 tmOff");;Log3($SELF,1,"Event: $EVENT  -> tmOff");;}
if ( ReadingsVal('ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open', 'state', 'undef') eq 'open' && ReadingsVal('ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open', 'state', 'undef') eq 'closed')
      { fhem("set ZWave_THERMOSTAT_3 tmOff");;Log3($SELF,1,"Event: $EVENT  -> tmOff");;}
if ( ReadingsVal('ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open', 'state', 'undef') eq 'closed' && ReadingsVal('ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open', 'state', 'undef') eq 'closed')
      { fhem("set ZWave_THERMOSTAT_3 tmHeating");;Log3($SELF,1,"Event: $EVENT  -> tmHeating");;}
}



Internals:
   DEF        (ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open)|(ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open) { if ( ReadingsVal('ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open', 'state', 'undef') eq 'open' && ReadingsVal('ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open', 'state', 'undef') eq 'open')       { fhem("set ZWave_THERMOSTAT_3 tmOff");Log3($SELF,1,"Event: $EVENT  -> tmOff");} if ( ReadingsVal('ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open', 'state', 'undef') eq 'closed' && ReadingsVal('ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open', 'state', 'undef') eq 'open')       { fhem("set ZWave_THERMOSTAT_3 tmOff");Log3($SELF,1,"Event: $EVENT  -> tmOff");} if ( ReadingsVal('ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open', 'state', 'undef') eq 'open' && ReadingsVal('ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open', 'state', 'undef') eq 'closed')       { fhem("set ZWave_THERMOSTAT_3 tmOff");Log3($SELF,1,"Event: $EVENT  -> tmOff");} if ( ReadingsVal('ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open', 'state', 'undef') eq 'closed' && ReadingsVal('ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open', 'state', 'undef') eq 'closed')       { fhem("set ZWave_THERMOSTAT_3 tmHeating");Log3($SELF,1,"Event: $EVENT  -> tmHeating");} }
   FUUID      5ff219a0-f33f-51ed-31d2-5c79f231d1d40c6b
   NAME       Fenster_04
   NOTIFYDEV  ZWave_SENSOR_NOTIFICATION_31,ZWave_SENSOR_NOTIFICATION_30
   NR         150
   NTFY_ORDER 50-Fenster_04
   REGEXP     (ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open)|(ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open)
   STATE      2021-01-04 12:55:57
   TRIGGERTIME 1609761357.60254
   TYPE       notify
   READINGS:
     2021-01-04 12:40:46   state           active
Attributes:


Bei der Eingabe des Notify bekomme ich keine Fehlermeldung. Ich sehe im Eventmonitor, dass ZWave_SENSOR_NOTIFICATION_30 und ZWave_SENSOR_NOTIFICATION_31 schalten, aber der Thermostat schaltet nicht. Ich sehe auch nicht, dass das Notify einen Befehl an den Thermostat schickt, daher vermute ich, dass ich in der if Struktur die Werte nicht richtig abgefragt habe.

Noch ein AUszug aus dem Log:
2021.01.04 12:52:37 5: Starting notify loop for ZWave_SENSOR_NOTIFICATION_30, 2 event(s), first is alarm: AccessControl: Window/Door is open
2021.01.04 12:52:37 5: Triggering Fenster_04
2021.01.04 12:52:37 4: Fenster_04 exec { if ( ReadingsVal('ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open', 'state', 'undef') eq 'open' && ReadingsVal('ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open', 'state', 'undef') eq 'open')       { fhem("set ZWave_THERMOSTAT_3 tmOff");;Log3($SELF,1,"Event: $EVENT  -> tmOff");;} if ( ReadingsVal('ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open', 'state', 'undef') eq 'closed' && ReadingsVal('ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open', 'state', 'undef') eq 'open')       { fhem("set ZWave_THERMOSTAT_3 tmOff");;Log3($SELF,1,"Event: $EVENT  -> tmOff");;} if ( ReadingsVal('ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open', 'state', 'undef') eq 'open' && ReadingsVal('ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open', 'state', 'undef') eq 'closed')       { fhem("set ZWave_THERMOSTAT_3 tmOff");;Log3($SELF,1,"Event: $EVENT  -> tmOff");;} if ( ReadingsVal('ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open', 'state', 'undef') eq 'closed' && ReadingsVal('ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open', 'state', 'undef') eq 'closed')       { fhem("set ZWave_THERMOSTAT_3 tmHeating");;Log3($SELF,1,"Event: $EVENT  -> tmHeating");;} }
2021.01.04 12:52:37 5: Cmd: >{ if ( ReadingsVal('ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open', 'state', 'undef') eq 'open' && ReadingsVal('ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open', 'state', 'undef') eq 'open')       { fhem("set ZWave_THERMOSTAT_3 tmOff");Log3($SELF,1,"Event: $EVENT  -> tmOff");} if ( ReadingsVal('ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open', 'state', 'undef') eq 'closed' && ReadingsVal('ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open', 'state', 'undef') eq 'open')       { fhem("set ZWave_THERMOSTAT_3 tmOff");Log3($SELF,1,"Event: $EVENT  -> tmOff");} if ( ReadingsVal('ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open', 'state', 'undef') eq 'open' && ReadingsVal('ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open', 'state', 'undef') eq 'closed')       { fhem("set ZWave_THERMOSTAT_3 tmOff");Log3($SELF,1,"Event: $EVENT  -> tmOff");} if ( ReadingsVal('ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open', 'state', 'undef') eq 'closed' && ReadingsVal('ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open', 'state', 'undef') eq 'closed')       { fhem("set ZWave_THERMOSTAT_3 tmHeating");Log3($SELF,1,"Event: $EVENT  -> tmHeating");} }<
2021.01.04 12:52:37 5: End notify loop for ZWave_SENSOR_NOTIFICATION_30


Was habe ich da falsch gemacht?




MadMax-FHEM

#28
Ich hab's jetzt nicht im Detail durch aber:

Zitat
ReadingsVal('ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open', 'state', 'undef')

Das geht NICHT!

ReadingsVal nimmt nur den Namen von EINEM Device!
Und ich denke nicht, dass du ein Device hast, das 'ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open' heißt ;)

Also: ReadingsVal("Devicename","Readingname","Ersatzwert")

In deinem Fall wohl:


ReadingsVal("ZWave_SENSOR_NOTIFICATION_30", "state", "n.a.") eq "open"


Das gleiche noch mal für das andere Fenster usw.
In state sollte ja mit dem userReadings open/closed stehen.

Ansonsten musst du wohl das Reading "alarm" abfragen und auch open/closed "matchen" (siehe meinen userReadingsVorschlag)...


Bei den runden Klammern im RegEx des notify bin ich mir nicht sicher...
Evtl. mal einfach alles was "triggern" soll per ODER ( | ) trennen und "ausschreiben"...

EDIT: also

ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open|ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open {...}

Da du "intern" ja entsprechend mittels if usw. entscheidest ginge evtl. auch:

ZWave_SENSOR_NOTIFICATION_30:alarm.*(closed|open)|ZWave_SENSOR_NOTIFICATION_31:alarm.*(closed|open) {...}


Und (würde ich für Tests/erste Läufe immer machen) mal Logausgaben einbauen, um zu sehen, dass überhaupt das notify "getriggert" wird...
...weil nur, weil du im Eventmonitor die Events des Fenstersensors siehst heißt das ja noch (lange) nicht, dass das notify auch "anläuft"/triggert... ;)

Und: wenn du die Devicenamen änderst, dann musst du nat. auch noch mal bei den notify etc. "nachjustieren"...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

Ups...

Ergänzend zu den zutreffenden Erläuterungen von MadMax-FHEM:
Irgendwie wundert mich, dass NOTIFYDEV ermittelt wurde, in der Trigger-regexp sollte man m.E. möglichst auf alle runden Klammern verzichten.

Also eher so starten:
defmod Fenster_04 notify ZWave_SENSOR_NOTIFICATION_30:alarm.*closed|ZWave_SENSOR_NOTIFICATION_30:alarm.*open|ZWave_SENSOR_NOTIFICATION_31:alarm.*closed|ZWave_SENSOR_NOTIFICATION_31:alarm.*open  {
Wenn vereinfachen, dann so (zu dem "ein Zeichen aus mehreren" siehe https://regex101.com/):
defmod Fenster_04 notify ZWave_SENSOR_NOTIFICATION_3[01]:alarm.*closed|ZWave_SENSOR_NOTIFICATION_3[01]:alarm.*open {

Du solltest jede Perl-Funktion ggf. dann auch in der Eingabezeile mal austesten, um ein Gefühl dafür zu bekommen, wie das funktioniert.

Hier würde ich dazu raten, zum einen das userReading für "state" zu setzen und dann die beiden Kontakte zu einer structure zusammenzufassen, dann wird das nachfolgende Handling bzw. die Auswertung einfacher. Und wie an anderer Stelle schon geschrieben: perspektivisch dann nicht gleich reagieren, sondern erst mal kurz warten, ob das Fenster nicht wieder geschlossen wurde...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors