FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: hadenia am 29 Dezember 2020, 17:30:55

Titel: Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: hadenia am 29 Dezember 2020, 17:30:55
Ich habe Eurotronic Spirit Heizkörperkörperthermostate, die über Weekprofil und Weekdaytimer ein tagesgesteuertes Temperaturprofil fahren.
Nun möchte ich den Fibaro Door/Window Sensor 2 einbinden um bei geöffnetem Fenster den Heizkörper mit tmOff auszuschalten und nach dm schließen des Fensters mit tmHeating wieder auf die Temperatur anstellen, die duch Weekprofil/Weekdaytimer vorgegeben ist.

Der Fibaro Door/Window Sensor 2 ist als ZWave ZWave_SENSOR_NOTIFICATION_30 definiert, der Heizkörperthermostat als ZWave_THERMOSTAT_3.

Ich habe es mit notify versucht, aber der Heizkörper reagiert nicht:

define Fenster_Schlafzimmer_Eltern_open notify ZWave_SENSOR_NOTIFICATION_30:open set ZWave_THERMOSTAT_3 tmHeating
define Fenster_Schlafzimmer_Eltern_closed notify ZWave_SENSOR_NOTIFICATION_30:closed set ZWave_THERMOSTAT_3 tmOff


Im Eventmonitor sehe ich wenn der Sensor geschlossen / geöffnet wird:

2020-12-29 17:20:18 ZWave ZWave_SENSOR_NOTIFICATION_30 alarm: AccessControl: Window/Door is closed
2020-12-29 17:20:18 ZWave ZWave_SENSOR_NOTIFICATION_30 alarm: AccessControl: Window/Door is open


Thermostat
Internals:
   DEF        e441b167 3
   FUUID      5fcf90c0-f33f-51ed-42b7-204793f673cc1bfc
   IODev      ZWDongle_0
   LASTInputDev ZWDongle_0
   MSGCNT     276
   NAME       ZWave_THERMOSTAT_3
   NR         17
   STATE      tmHeating
   STILLDONETIME 0
   TYPE       ZWave
   ZWDongle_0_MSGCNT 276
   ZWDongle_0_RAWMSG 000400030380032db600
   ZWDongle_0_TIME 2020-12-29 16:56:17
   ZWaveSubDevice no
   cmdsPending 0
   homeId     e441b167
   isWakeUp   
   lastMsgSent 1609258227.7773
   nodeIdHex  03
   webCmd     desired-temp
   READINGS:
     2020-12-29 16:56:17   battery         45 %
     2020-12-29 16:56:17   batteryPercent  45
     2020-12-29 16:56:17   batteryState    ok
     2020-12-29 15:59:24   neighborUpdate  failed
     2020-12-17 11:05:21   setpointTemp    21.0 C heating
     2020-12-29 17:10:27   state           tmHeating
     2020-12-29 14:44:17   temperature     20.16 C
     2020-12-29 16:12:41   thermostatMode  heating
     2020-12-29 17:10:29   timeToAck       1.511
     2020-12-29 17:10:29   transmit        OK
Attributes:
   IODev      ZWDongle_0
   classes    ZWAVEPLUS_INFO ASSOCIATION ASSOCIATION_GRP_INFO VERSION MANUFACTURER_SPECIFIC DEVICE_RESET_LOCALLY PROTECTION SENSOR_MULTILEVEL SWITCH_MULTILEVEL THERMOSTAT_MODE THERMOSTAT_SETPOINT BATTERY CONFIGURATION ALARM POWERLEVEL SECURITY SECURITY_S2 TRANSPORT_SERVICE SUPERVISION FIRMWARE_UPDATE_MD
   room       Buero
   vclasses   ALARM:8 ASSOCIATION:2 ASSOCIATION_GRP_INFO:1 BATTERY:1 CONFIGURATION:1 DEVICE_RESET_LOCALLY:1 FIRMWARE_UPDATE_MD:3 MANUFACTURER_SPECIFIC:1 POWERLEVEL:1 PROTECTION:1 SECURITY:1 SECURITY_S2:1 SENSOR_MULTILEVEL:5 SUPERVISION:1 SWITCH_MULTILEVEL:1 THERMOSTAT_MODE:3 THERMOSTAT_SETPOINT:3 TRANSPORT_SERVICE:2 VERSION:2 ZWAVEPLUS_INFO:2


Sensor:
Internals:
   CFGFN     
   DEF        e441b167 30
   FUUID      5fe8e958-f33f-51ed-93a9-8d550ab241199412
   IODev      ZWDongle_0
   LASTInputDev ZWDongle_0
   MSGCNT     54
   NAME       ZWave_SENSOR_NOTIFICATION_30
   NR         415
   STATE      wakeupInterval 86400 1
   TYPE       ZWave
   ZWDongle_0_MSGCNT 54
   ZWDongle_0_RAWMSG 0004001e097105000000ff061700b600
   ZWDongle_0_TIME 2020-12-29 17:22:33
   ZWaveSubDevice no
   cmdsPending 0
   homeId     e441b167
   isWakeUp   1
   lastMsgSent 1609258821.11212
   nodeIdHex  1e
   READINGS:
     2020-12-29 17:20:19   CMD             ZW_APPLICATION_UPDATE
     2020-12-29 17:22:33   alarm           AccessControl: Window/Door is closed
     2020-12-29 15:47:16   battery         40 %
     2020-12-29 15:47:16   batteryPercent  40
     2020-12-29 15:47:16   batteryState    ok
     2020-12-29 17:02:46   configDoorWindowState Closed
     2020-12-27 21:07:24   model           FIBARO System FGDW002 Door Opening Sensor 2
     2020-12-27 21:07:24   modelConfig     fibaro/fgdw2.xml
     2020-12-27 21:07:24   modelId         010f-0702-1000
     2020-12-29 16:08:36   neighborUpdate  failed
     2020-12-27 21:07:20   state           wakeupInterval 86400 1
     2020-12-29 17:18:02   temperature     22.5 C
     2020-12-29 17:20:21   timeToAck       0.076
     2020-12-29 17:20:21   transmit        OK
     2020-12-29 17:04:11   wakeup          notification
     2020-12-27 21:07:25   zwavePlusInfo    version:01 role:SleepingReportingSlave node:Z-Wave+Node installerIcon:0c06 userIcon:0c06
Attributes:
   IODev      ZWDongle_0
   classes    ZWAVEPLUS_INFO ASSOCIATION ASSOCIATION_GRP_INFO APPLICATION_STATUS BATTERY CONFIGURATION CRC_16_ENCAP DEVICE_RESET_LOCALLY FIRMWARE_UPDATE_MD MANUFACTURER_SPECIFIC MULTI_CHANNEL_ASSOCIATION ALARM POWERLEVEL SECURITY SENSOR_MULTILEVEL VERSION WAKE_UP
   room       ZWave
   vclasses   ALARM:5 APPLICATION_STATUS:1 ASSOCIATION:2 ASSOCIATION_GRP_INFO:1 BATTERY:1 CONFIGURATION:1 CRC_16_ENCAP:1 DEVICE_RESET_LOCALLY:1 FIRMWARE_UPDATE_MD:4 MANUFACTURER_SPECIFIC:2 MULTI_CHANNEL_ASSOCIATION:3 POWERLEVEL:1 SECURITY:1 SENSOR_MULTILEVEL:5 VERSION:2 WAKE_UP:2 ZWAVEPLUS_INFO:2


Notify für Fenster offen:
Internals:
   CFGFN     
   DEF        ZWave_SENSOR_NOTIFICATION_30:open set ZWave_THERMOSTAT_3 tmHeating
   FUUID      5feb5305-f33f-51ed-e124-c74adcb4b4ebd4a2
   NAME       Fenster_Schlafzimmer_Eltern_open
   NOTIFYDEV  ZWave_SENSOR_NOTIFICATION_30
   NR         514
   NTFY_ORDER 50-Fenster_Schlafzimmer_Eltern_open
   REGEXP     ZWave_SENSOR_NOTIFICATION_30:open
   STATE      active
   TYPE       notify
   READINGS:
     2020-12-29 17:02:13   state           active
Attributes:


Notify für Fenster geschlossen:
Internals:
   CFGFN     
   DEF        ZWave_SENSOR_NOTIFICATION_30:closed set ZWave_THERMOSTAT_3 tmOff
   FUUID      5feb5318-f33f-51ed-1f7f-5faed0942a802502
   NAME       Fenster_Schlafzimmer_Eltern_closed
   NOTIFYDEV  ZWave_SENSOR_NOTIFICATION_30
   NR         516
   NTFY_ORDER 50-Fenster_Schlafzimmer_Eltern_closed
   REGEXP     ZWave_SENSOR_NOTIFICATION_30:closed
   STATE      active
   TYPE       notify
   READINGS:
     2020-12-29 17:02:32   state           active
Attributes:


In der Kommandozeile reagiert der Heizkörper auf die Befehle set ZWave_THERMOSTAT_3 tmHeating und set ZWave_THERMOSTAT_3 tmOff

Hat jemand eine Idee, warum der Heizkörper nicht auf das notify reagiert?



Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: MadMax-FHEM am 29 Dezember 2020, 17:37:56
Ja, weil das RegEx des notify nicht passt.

Wie hast du es erstellt?

Einfach den Eventmonitor öffnen und die Zeile mit dem Event markieren und das notify erzeugen lassen und dann die geschweiften Klammern durch den entsprechenden set-Befehl ersetzen...

https://wiki.fhem.de/wiki/Event_monitor

Gruß, Joachim
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: Beta-User am 29 Dezember 2020, 17:42:12
Na ja, schon in "Schritt 1" ist ein größeres Problem, wie MadMax-FHEM bereits geschrieben hat: Event und regexp passen m.E. nicht zueinander, und dann wäre da noch die Logik falsch rum...

Sowas legt man besser mit dem Event-Monitor an. Hier mal die ungetestete Trockenübung:
define Fenster_Schlafzimmer_Eltern_closed notify ZWave_SENSOR_NOTIFICATION_30:alarm.*open set ZWave_THERMOSTAT_3 tmOff

Aber bevor du dadran rumdockterst:
Grundsätzlich solltest du erst checken, ob das nicht auch so geht, dass tatsächlich "open" nach "state" wandert. Dann kann nämlich der WDT auch was damit als "WDT_delayedExecutionDevices"anfangen ;) . Dazu musst du aber vermutlich erst mal passende Konfigurationsbefehle absetzen...
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: MadMax-FHEM am 29 Dezember 2020, 17:48:40
Zitat von: Beta-User am 29 Dezember 2020, 17:42:12
Aber bevor du dadran rumdockterst:
Grundsätzlich solltest du erst checken, ob das nicht auch so geht, dass tatsächlich "open" nach "state" wandert. Dann kann nämlich der WDT auch was damit als "WDT_delayedExecutionDevices"anfangen ;) . Dazu musst du aber vermutlich erst mal passende Konfigurationsbefehle absetzen...

Dazu wollte ich gerade "ausholen" ("musste" erst mein Notebook "auspacken").
Die ersten Dinge waren nur kurz mit dem Handy gedaddelt ;)

Ich bin allerdings nicht sicher, ob es bei allen (den "neueren") (Fibaro) ZWave Devices noch geht ein open/closed auf "state" zu bekommen...

Ich habe "alte" Fibaro-Augen (BWM) und "neuere" Fibaro-Augen...

Bei den alten ging es, dass die Bewegung (interessanterweise auch open/closed ;)  ) im state hatten...
...bei den neueren bekam ich nur die Alarme...

Gibt irgendwo einen Thread dazu und da konnte mir Christian (krikan?) auch nicht mehr erläutern, außer dass es wohl so ist!?

Ich habe mir daraufhin ein userReadings angelegt und meine notify darauf "wirken" lassen...

Hilft halt nicht (nur bedingt) für die Weitergabe direkt an die "Heizungssteuerung"...

Wenn es an den Einstellungen liegt, wäre ich auch interessiert wie das geht (und vielleicht ja doch/auch bei meinen "Augen" funktioniert), also schon mal: danke :)

Gruß, Joachim
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: Beta-User am 29 Dezember 2020, 17:59:37
Wenn es nicht über direkte Konfigurationsbefehle geht, würde ich hier (v.a. wg. des WDT) vorschlagen, state via userReading füllen zu lassen, das sollte dann halt sauber über Alarm getriggert werden.

Und evtl. gibt es noch eine Sache, die interessant ist: In dem Spirit-Thread (readingsGroup?) hat Rudi was gebaut, damit man externe Sensoren direkt andocken kann. Bin nicht sicher, ob das auch für einen Fensterkontakt gilt, aber wenn, setzt man vermutlich am einfachsten den Kontakt auf offen bzw. geschlossen und "gut ist" ;) . (Muß mal suchen, ob ich dazu was finde- EDIT: setList, siehe hier: https://forum.fhem.de/index.php/topic,112955.msg1092262.html#msg1092262; kann aber sein, dass das mit einem FK nicht geht...)
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: hadenia am 29 Dezember 2020, 19:46:27
Vielen Dank für die vielen Tipps!

Aus dem Eventmonitor habe ich die notify rauskopiert und modifiziert wie Joachim geschrieben hat:
define ZWave_SENSOR_NOTIFICATION_30_notify_1 notify ZWave_SENSOR_NOTIFICATION_30:alarm:.AccessControl:.Window/Door.is.open set ZWave_THERMOSTAT_3 tmOff
define ZWave_SENSOR_NOTIFICATION_30_notify_2 notify ZWave_SENSOR_NOTIFICATION_30:alarm:.AccessControl:.Window/Door.is.closed set ZWave_THERMOSTAT_3 tmHeating


Klappt aber leider auch nicht. Wenn ich den Fenstersensor öffne oder schließe sehe ich im Log lediglich eine Ausgabe:
2020-12-29 18:05:53 ZWave ZWave_SENSOR_NOTIFICATION_30 wakeup: notification

Das mit dem
Zitatstate via userReading füllen zu lassen
habe ich noch nicht verstanden. Werde mal ein bischen googeln und lesen und melde mich dann mit neuen Erkenntnissen  ::)
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: MadMax-FHEM am 29 Dezember 2020, 22:51:18
Eigenartig, eigentlich sollte das was der Eventmonitor erzeugt funktionieren ;)

Was passiert bei den notify-Vorschlägen von Beta-User?

Bzgl. userReadings evtl. so:


attr ZWave_SENSOR_NOTIFICATION_30 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"}}


Wenn state nicht doch schon "anderweitig" verwendet/gesetzt wird. Ansonsten eben einen anderen Namen und dann darauf das notify...

Gruß, Joachim
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: hadenia am 30 Dezember 2020, 09:05:56
Nachdem ich viel gelesen habe bin ich verwirrter als zuvor  ???

Was ich aus euren Antworten verstanden und gemacht habe:
define Fenster_Schlafzimmer_Eltern_open notify ZWave_SENSOR_NOTIFICATION_30:alarm.*closed set ZWave_THERMOSTAT_3 tmHeating
define Fenster_Schlafzimmer_Eltern_closed notify ZWave_SENSOR_NOTIFICATION_30:alarm.*open set ZWave_THERMOSTAT_3 tmOff


Dann das Attribut definiert (mit zwei ;; vor dem if($value ...):
attr ZWave_SENSOR_NOTIFICATION_30 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"}}

Wenn ich den Fensterkontakt öffne bzw. schließe reagiert der Thermostat nicht. Im Event Monitor sehe ich maximal eine Meldung wie diese:
2020-12-30 08:32:41 ZWave ZWave_SENSOR_NOTIFICATION_30 wakeup: notification
2020-12-30 08:32:41 ZWave ZWave_SENSOR_NOTIFICATION_30 temperature: 21.6 C
2020-12-30 08:32:41 ZWave ZWave_SENSOR_NOTIFICATION_30 temperature: 21.6 C
2020-12-30 08:33:21 ZWave ZWave_SENSOR_NOTIFICATION_30 wakeup: notification


Ich vermute mal, es fehlt der passende Konfigurationsbefehle den Beta-User in seiner Message erwähnt hat:
ZitatAber bevor du dadran rumdockterst:
Grundsätzlich solltest du erst checken, ob das nicht auch so geht, dass tatsächlich "open" nach "state" wandert. Dann kann nämlich der WDT auch was damit als "WDT_delayedExecutionDevices"anfangen ;) . Dazu musst du aber vermutlich erst mal passende Konfigurationsbefehle absetzen...

Ich habe hier https://forum.fhem.de/index.php/topic,99390.msg927960.html#msg927960 (https://forum.fhem.de/index.php/topic,99390.msg927960.html#msg927960) einen Hinweis gefunden und ausprobiert:
set  ZWave_SENSOR_NOTIFICATION_30 configBasicSetLevel 15

Funktioniert aber nicht, da configBasicSetLevel in meinem Fibaro Sensor offensichtlich nicht vorhanden ist:
Unknown argument configBasicSetLevel, choose one of alarmnotification associationAdd associationDel config2ndAssociationGroupTriggers configAssociationForClosingTimeDelay configAssociationForClosingValueSent configAssociationForOpeningTimeDelay configAssociationForOpeningValueSent configAssociationsInZWaveNetwork3 configByte configDefault configDoorWindowState configHighTemperatureAlarmThreshold configIntervalOfTemperature50 configIntervalOfTemperatureReports configLong configLowTemperatureAlarmThreshold configTamperAlarmCancellationDelay configTamperReportingAlarmCancellation configTemperatureAlarmReports configTemperatureOffset configTemperatureReportsThreshold configVisualLEDIndications configWord fwUpdate mcaAdd mcaDel neighborUpdate powerlevel powerlevelTest returnRouteAdd returnRouteDel secSupportedReport sucRouteAdd sucRouteDel wakeupInterval wakeupNoMoreInformation attrTemplate

Was könnte ich noch probieren?
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: MadMax-FHEM am 30 Dezember 2020, 09:16:09
Ja mit zwei Strichpunkten kommt drauf an WO du eingibst...
EDIT: also in der DEF (also im Webfrontend auf DEF klicken) ist es (wie gepostet) nur 1 Strichpunkt... Wie hast du eingegeben?

Und wenn du öffnest/schließt ändert sich auch der alarm nicht mehr?
EDIT: und auch im Eventmonitor erscheint kein open/closed!!?

Wenn sich der nicht ändert (und auch sonst nirgends open/closed oder evtl. basicSet 0 bzw. 255 kommt), dann wird kein Fenster auf/zu gemeldet.

Kannst du noch mal ein aktuelles list posten!?
EDIT: erst mal die get-Aufrufe absetzen inkl. "wakeup" und dann ein list posten...

EDIT: get configAll, get associationAll, get, get model (das sind die Kommandos, die ich immer erst mal absetzte, wenn ich ein ZWave-Gerät neu einbinde / bin aber lange nicht so tief in ZWave wie in Homematic ;)  Bin selber immer froh, wenn die "Dinger" laufen ;)  ). Und wie geschrieben: "aufwecken" nicht vergessen. Bei den "Fibaro-Augen" (BWM) geht das durch 3x schnell den "Anlernknopf" drücken. Bei deinen Sensoren musst du halt in der BA schauen...

Was der Fenstersensor kann und was konfiguriert werden kann und was er wo/wie meldet steht in der BA des Sensors (evtl. mal bei Fibaro schauen)...

Ansonsten: es ist ein Batteriegerät! D.h. übertragene Config-Parameter werden erst beim nächsten "wakeup" übertragen/aktiv!!
Man kann bestimmt auch manuell "aufwecken", wie steht norm. auch in der BA.

Schon mal einen anderen Namen als "state" im userReadings versucht?
EDIT: erst mal die get-Aufrufe absetzen inkl. "wakeup" und dann ein list posten...

EDIT:
Zitat2020-12-29 16:08:36   neighborUpdate  failed
ob und welche Auswirkungen das hat weiß ich nicht. Hast du ein set neighborUpdate angestossen?

Gruß, Joachim
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: Beta-User am 30 Dezember 2020, 09:58:51
@MadMax-FHEM:
userReadings mit "state" geht! Siehe z.B. "shellydw" in mqtt2.template.

Hier fehlt es (u.A.) an der Meldung an den Controller, von daher wird auch das userReadings nicht getriggert.

Nach dem hier https://github.com/OpenZWave/open-zwave/blob/master/config/fibaro/fgdw2.xml (https://github.com/OpenZWave/open-zwave/blob/master/config/fibaro/fgdw2.xml) sollte es möglich sein, den Sensor direkt via mca-Gruppe 2 an den Thermostat senden zu lassen, aber dazu müsste hadenia sich etwas mehr in das ZWave-Thema eindenken. Hier scheint es mir so zu sein, dass "configBasicSetLevel" zum Thermostat gehört und nicht zum Sensor...

@hadenia:
Bitte daher entweder ein neues Thema im ZWave-Bereich aufmachen ("was muss ich liefern" beachten!), oder den Titel hier ändern, Infos wie bei "neu" ergänzen und verschieben (kannst du alles selbst!)
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: hadenia am 30 Dezember 2020, 16:22:27
Erstmal ein großes Dankeschön an euch Beide für die Geduld. Ich kann Erfolg vermelden  ;D

Durch die vielen Versuche war evtl. ein falsches Bit an den Sensoren gesetzt, ich weiß es nicht. Ich habe die Fenstersensoren resettet, neu inkluiert und dann entsprechend euren Tipps diese Befehlssequenz in die FHEM Kommandozeile eingegeben:

define Fenster_Buero_closed notify ZWave_SENSOR_NOTIFICATION_31:alarm.*closed set ZWave_THERMOSTAT_4 tmHeating
define Fenster_Buero_open notify ZWave_SENSOR_NOTIFICATION_31:alarm.*open set ZWave_THERMOSTAT_4 tmOff

attr ZWave_SENSOR_NOTIFICATION_31 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"}}


Den "wakeup" beim Fibaro Door/Window Sensor 2 macht man, indem man beide Tasten gleichzeitig drückt oder bei geschlossenem Gehäuse die untere Taste drückt.
Ich werde jetzt mal versuchen, das Notify so zu erweitern, dass ich mit zwei Sensoren zwei Heizkörper steuern kann.

Wie habt ihr eigentlich die Situation im Sommer geregelt bzw. bei Abwesenheit, wenn die Heizkörper ausgeschaltet sind? Ich bin beruflich bedingt auch in der Übergangszeit ab und an ein paar Wochen am Stück unterwegs wenn es nachts kalt wird und dann habe ich die Heizung eingeschaltet wegen der Frostgefahr aber die Heizkörper auf "tmOff". Ein paar Tage, bevor ich heim fahre, schalte ich die Heizkörperventile über die Entfernung auf "tmHeating" und das Haus ist warm wenn ich ankomme.

Wenn der Heizkörper auf "tmOff" steht und das Fenster während meiner Abwesenheit z. Bsp. vom Hausmeister auf und dann wieder zu gemacht wird, so wird der Heizkörper auf "tmHeating" gestellt. Kann man so eine Situation mit einfachen Mitteln abfangen oder muss man da anfangen ernsthaft zu programmieren?

Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: MadMax-FHEM am 30 Dezember 2020, 16:30:34
Na dann gratuliere!

Wenn du die notify hast kannst du sie auch mal posten, da kann man auch eines draus machen :)
(mit etwas Perl ;)  )

Zu den anderen Dingen kann ich nichts/wenig sagen.

Ich habe Homematic Thermostate...

Ich fahre eigentlich ausschließlich "deren" interne Wochenprogramme.
Habe von denen je nachdem 3 "Varianten": standard, athome (Urlaub oder so) und homeoffice (da wird halt das Büro mitgeheizt ;)  )

Je nachdem schalte ich die dann um und die laufen dann einfach...

Wenn ich doch mal was anders haben will, stelle ich auf manuellen Mode und wenn ich wieder die Automatik will, dann eben wieder auf auto Mode (kann ich auch per Sprache oder Knopf oder...).

Bei denen ist es so, dass sie wieder dahin zurückschalten, also wenn das Fenster auf war, wo sie vorher waren (sind aber DIREKT verbunden, also ohne notify, da macht das dann das System selbst / keine Ahnung, ob das hier auch geht)...

Bei meiner Freundin (die will das [immer] speziell) habe ich das per notify gelöst und ja: ich merke mir was vorher war und stelle dahin dann zurück mit Verzögerung...
Aber auch mit den Wochenprogrammen...

Gruß, Joachim
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: Beta-User am 30 Dezember 2020, 16:42:33
Na ja, ich komme eigentlich auch aus der CUL_HM-Welt, wobei bei mir jetzt alle direkten Peerings zwischen Thermostaten und Fensterkontakten zugunsten von virtuellen (beim Öffnen verzögerten) Peer rausgeflogen sind... Der betreffende Code ist in eine myUtils ausgelagert, die erst mal prüft, ob überhaupt "Heizperiode" angesagt ist, sonst wird nichts gesendet. Könnte man vermutlich für deine Zwecke anpassen, sowas ist m.E. eine gute Übung ;) .

(Daher auch manche Irritation, die ich beim Einstieg in ZWave hatte...)

tmOff ist aber immer noch Frostschutz (=>6°C), oder habe ich das falsch verstanden?

Eventuell würde ich das aber (in deinem Fall) im Rahmen von "Topic" sehen ;) . Du schaltest einfach das Profil auf "abwesend" und weist den WDT während der Heizeriode an, sich neu zu laden, wenn geschlossen wird. Dann sendet der ggf. den neuen (niedrigen) Zielwert raus und gut ist...
(Geht aber vermutlich nicht so gut mit tmHeating/tmOff; den Teil müßte ich auch austesten...).
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: hadenia am 30 Dezember 2020, 20:36:16
ZitattmOff ist aber immer noch Frostschutz (=>6°C), oder habe ich das falsch verstanden?
Das ist korrekt. Deswegen lasse ich den Brenner der Heizung an, dann zirkuliert bei mir im Haus das Warmwasser und wenn es doch mal richtig kalt werden sollte, greift der Frotzschutz der Heizkörperventile.

Um das Problem des versehentlichen Einschaltens der eigentlich ausgeschalteten Heizkörpern zu lösen habe ich mir überlegt, einen Dummy-Schalter zu definieren. Wenn der ausgeschaltet ist, soll per if Konstrukt das notify nicht ausgeführt werden.

Ich habe den Schalter definiert:
define SimSwitch_Fensterkontakte dummy
attr SimSwitch_Fensterkontakte webCmd on:off
attr SimSwitch_Fensterkontakte room System
attr SimSwitch_Fensterkontakte room 99_Variablen


Internals:
   FUUID      5fecc507-f33f-51ed-70fa-35a8c4cf323bece4
   NAME       SimSwitch_Fensterkontakte
   NR         147
   STATE      on
   TYPE       dummy
   READINGS:
     2020-12-30 20:26:24   state           on
Attributes:
   room       99_Variablen
   webCmd     on:off


Die Notify geändert:
Internals:
   DEF        ZWave_SENSOR_NOTIFICATION_31:alarm.*open { if( Value ("SimSwitch_Fensterkontakte") eq "on") { fhem "ZWave_THERMOSTAT_4 tmOff" }}
   FUUID      5fecccfc-f33f-51ed-785f-cb3dbd9ecc816c52
   NAME       Fenster_Buero_open
   NOTIFYDEV  ZWave_SENSOR_NOTIFICATION_31
   NR         149
   NTFY_ORDER 50-Fenster_Buero_open
   REGEXP     ZWave_SENSOR_NOTIFICATION_31:alarm.*open
   STATE      active
   TYPE       notify
   READINGS:
     2020-12-30 19:56:29   state           active
Attributes:


und
Internals:
   DEF        ZWave_SENSOR_NOTIFICATION_31:alarm.*closed { if( Value ("SimSwitch_Fensterkontakte") eq "on") { fhem "ZWave_THERMOSTAT_4 tmHeating" }}

   FUUID      5feccc4e-f33f-51ed-803e-c611b71b243b5a7d
   NAME       Fenster_Buero_closed
   NOTIFYDEV  ZWave_SENSOR_NOTIFICATION_31
   NR         148
   NTFY_ORDER 50-Fenster_Buero_closed
   REGEXP     ZWave_SENSOR_NOTIFICATION_31:alarm.*closed
   STATE      active
   TYPE       notify
   READINGS:
     2020-12-30 19:56:29   state           active
Attributes:


Leider bleibt es aber ohne Wirkung. Egal ob der SimSwitch_Fensterkontakte ein- oder ausgeschaltet ist, es passiert nichts.

Im Log sehe ich, dass der Sensor reagiert wenn ich ihn öffne oder schließe, aber der Thermostat zuckt nicht:
2020-12-30 20:31:33 ZWave ZWave_SENSOR_NOTIFICATION_31 alarm: AccessControl: Window/Door is closed
2020-12-30 20:31:33 ZWave ZWave_SENSOR_NOTIFICATION_31 closed
2020-12-30 20:31:33 ZWave ZWave_SENSOR_NOTIFICATION_31 alarm: AccessControl: Window/Door is closed
2020-12-30 20:31:33 ZWave ZWave_SENSOR_NOTIFICATION_31 closed
2020-12-30 20:31:34 ZWave ZWave_SENSOR_NOTIFICATION_31 alarm: AccessControl: Window/Door is open
2020-12-30 20:31:34 ZWave ZWave_SENSOR_NOTIFICATION_31 open


Kann das grundsätzlich nicht klappen oder habe ich einen Syntaxfehler etc.?

Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: MadMax-FHEM am 30 Dezember 2020, 20:43:51
Es muss fhem "set Heizkörper..." also es fehlt auf alle Fälle das 'set'...

EDIT: innerhalb von fhem " " muss das Kommando so stehen wie es auch in FhemWeb eingegeben wird/werden muss...

Besser statt Value("Name") ReadingsVal("DeviceName","ReadingName","Ersatzwert")

Weil: Value liest STATE aus! Nicht verwechseln mit state !!

Und STATE wird u.a. durch stateFormat "beeinflusst" und da liefert Value oft nicht das was man erwartet...

Bei deinem dummy merkst du das verm. nicht...

Wenn es nur drum geht das notify zu "deaktivieren", das geht mit set notifyName inactive/active oder dem Attribut disable ebenso...

Gruß, Joachim
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: hadenia am 31 Dezember 2020, 13:12:26
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!

Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag 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

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
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: Beta-User am 31 Dezember 2020, 14:01:03
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 (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.
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: MadMax-FHEM am 31 Dezember 2020, 14:17:02
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
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: Beta-User am 31 Dezember 2020, 14:21:54
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...?).
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: MadMax-FHEM am 31 Dezember 2020, 14:27:52
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
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: hadenia am 01 Januar 2021, 14:05:49
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.
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: MadMax-FHEM am 01 Januar 2021, 14:31:27
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
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: hadenia am 01 Januar 2021, 18:37:06
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?

Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: MadMax-FHEM am 01 Januar 2021, 18:53:25
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
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: hadenia am 01 Januar 2021, 19:15:25
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
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: MadMax-FHEM am 01 Januar 2021, 19:27:47
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
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: hadenia am 04 Januar 2021, 13:13:03
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?



Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: MadMax-FHEM am 04 Januar 2021, 13:30:31
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
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: Beta-User am 04 Januar 2021, 13:36:04
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...
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: hadenia am 04 Januar 2021, 19:52:13
Ihr seid genial, es klappt mit zwei Sensoren!

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


Ich habe momentan noch die Fibaros, die funktionieren sehr unzuverlässig und prellen. Daher lässt es sich nur sehr schwer testen, scheint aber alles wie erwartet zu funktionieren. Ich werde jetzt den Code nochmal vereinfachen und die Logeinträge einbauen.
Am Mittwoch sollen neue Sensoren kommen, es sind die TechniSat Z-Wave Plus Türkontakt 2. Ich hoffe die schalten zuverlässig. Ich melde mich und werde berichten.

Nochmal vielen Dank und einen schönen ABend,
Michael
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: MadMax-FHEM am 04 Januar 2021, 20:06:48
Prellen kannst du evtl. am notify "verbessern": Attribut disableAfterTrigger

Damit wird erst nach Ablauf der Zeit erneut getriggert.
Bis dahin sollte "entprellt" sein.
Evtl. und nat. besser wäre ein Entprellen beim Fenstersensor.
Vielleicht kann man dort was parametrisieren...

Gruß, Joachim
Titel: [Gelöst] Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: hadenia am 10 Januar 2021, 20:30:01
Wollte nochmal vielen Dank sagen für die tolle Unterstützung von Joachim und Beta-User. Ich habe die neuen Sensoren bekommen, habe die Notify´s nur leicht abändern damit alles geklappt hat aber nun läuft es. Die TechniSat-Sensoren reagieren perfekt, sind nicht so sensibel in Bezug auf den Abstand wie die Fibaro und prellen nicht. Ich kann sie bis jetzt nach den ersten Tests uneingeschränkt empfehlen.

Hier nochmal eine Zusammenfassung für alle die mitgelesen haben zum c&p übernehmen:

Die TechniSat Z-Wave Plus Türkontakt 2 ließen sich erst nicht inkluieren. Nachdem ich einen Resett gemacht habe (5 Sekunden den Knopd drücken) hat die Inkluierung geklappt und FHEM hat die Sensoren sichtig erkannt und angelegt.

Um alle Sensoren ein- ausschalten zu können, wird ein Dummy definiert:
define SimSwitch_Fensterkontakte dummy
attr SimSwitch_Fensterkontakte webCmd on:off
attr SimSwitch_Fensterkontakte room System
attr SimSwitch_Fensterkontakte room 99_Variablen


Das notify, welches die notify´s für die Sensoren an- bzw. ausschaltet:
define FensterSensor_activate_deactivate notify SimSwitch_Fensterkontakte:o[nf]+ {if($EVENT eq "on"){fhem("set Fenster_.* active");;Log3($SELF,1,"Event: $EVENT  -> active");;}elsif($EVENT eq "off"){fhem("set Fenster_.* inactive");;Log3($SELF,1,"Event: $EVENT  -> inactive");;}}


Setup für 1x Sensor und 2x Heizkörperthermostat:

Zuerst den Rückgabewert des Sensors definieren:
attr ZWave_SENSOR_NOTIFICATION_37 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"}}

Notify, welches bei Signal vom Sensor die Thermostate schaltet:
define Fenster_01 notify ZWave_SENSOR_NOTIFICATION_37:closed|ZWave_SENSOR_NOTIFICATION_37:open {if($EVENT =~ m/closed/){fhem("set ZWave_THERMOSTAT_13 tmHeating;;set ZWave_THERMOSTAT_15 tmHeating");;Log3($SELF,1,"Event: $EVENT  -> tmHeating");;}elsif($EVENT =~ m/open/){fhem("set ZWave_THERMOSTAT_13 tmOff;;set ZWave_THERMOSTAT_15 tmOff");;Log3($SELF,1,"Event: $EVENT  -> tmOff");;}}

Hier ein Setup für 2x Sensor und 2x Heizkörperthermostat:

Zuerst wieder den Rückgabewert der Sensors definieren:
attr ZWave_SENSOR_NOTIFICATION_38 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"}}
attr ZWave_SENSOR_NOTIFICATION_39 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"}}


Notify, welches bei Signal von den Sensoren die Thermostate schaltet:
define Fenster_02 notify ZWave_SENSOR_NOTIFICATION_38:closed|ZWave_SENSOR_NOTIFICATION_38:open|ZWave_SENSOR_NOTIFICATION_39:closed|ZWave_SENSOR_NOTIFICATION_39:open {
if (ReadingsVal("ZWave_SENSOR_NOTIFICATION_38", "state", "n.a.") eq "open" && ReadingsVal("ZWave_SENSOR_NOTIFICATION_39", "state", "n.a.") eq "open")
      { fhem("set ZWave_THERMOSTAT_11 tmOff;;set ZWave_THERMOSTAT_12 tmOff");;Log3($SELF,1,"Event: $EVENT  -> tmOff");;}
if (ReadingsVal("ZWave_SENSOR_NOTIFICATION_38", "state", "n.a.") eq "open" && ReadingsVal("ZWave_SENSOR_NOTIFICATION_39", "state", "n.a.") eq "closed")
      { fhem("set ZWave_THERMOSTAT_11 tmOff;;set ZWave_THERMOSTAT_12 tmOff");;Log3($SELF,1,"Event: $EVENT  -> tmOff");;}
if (ReadingsVal("ZWave_SENSOR_NOTIFICATION_38", "state", "n.a.") eq "closed" && ReadingsVal("ZWave_SENSOR_NOTIFICATION_39", "state", "n.a.") eq "open")
      { fhem("set ZWave_THERMOSTAT_11 tmOff;;set ZWave_THERMOSTAT_12 tmOff");;Log3($SELF,1,"Event: $EVENT  -> tmOff");;}
if (ReadingsVal("ZWave_SENSOR_NOTIFICATION_38", "state", "n.a.") eq "closed" && ReadingsVal("ZWave_SENSOR_NOTIFICATION_39", "state", "n.a.") eq "closed")
      { fhem("set ZWave_THERMOSTAT_11 tmHeating;;set ZWave_THERMOSTAT_12 tmHeating");;Log3($SELF,1,"Event: $EVENT  -> tmHeating");;}
}


Gruß,
Michael
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: tho-mas am 22 Januar 2022, 23:17:29
Moin!

Ich habe diese Diskussion gefunden und versucht, einen Spirit mit einem Fenstersensor entsprechend der Öffnung (auf/zu) aus- oder einzuschalten.


Zitat von: hadenia am 30 Dezember 2020, 16:22:27
Erstmal ein großes Dankeschön an euch Beide für die Geduld. Ich kann Erfolg vermelden  ;D

Durch die vielen Versuche war evtl. ein falsches Bit an den Sensoren gesetzt, ich weiß es nicht. Ich habe die Fenstersensoren resettet, neu inkluiert und dann entsprechend euren Tipps diese Befehlssequenz in die FHEM Kommandozeile eingegeben:

define Fenster_Buero_closed notify ZWave_SENSOR_NOTIFICATION_31:alarm.*closed set ZWave_THERMOSTAT_4 tmHeating
define Fenster_Buero_open notify ZWave_SENSOR_NOTIFICATION_31:alarm.*open set ZWave_THERMOSTAT_4 tmOff

attr ZWave_SENSOR_NOTIFICATION_31 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"}}



Fast erwartungsgemäß funktioniert - nichts... Um den Fehler zu finden müßte ich das Codebeispiel erst einmal verstehen. Die ersten beiden Zeilen sind einigermaßen erkennbar: Wenn die Meldung "Fenster zu" kommt soll der Thermostat auf Heizbetrieb gehen bzw. ausschalten. Aber wozu dient die 3. Zeile? Sehe ich das richtig, das damit nur ein Status (state) "sauber" gemacht wird?

Im Eventmonitor sehe ich je eine "ZWave_SENSOR_NOTIFICATION_17 open" bzw. "close". Im Logfile kommt jedoch gar nicht an? Fehlt evtl. etwas?
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: hadenia am 24 Januar 2022, 10:57:09
Wenn du alles per copy + paste eingibst, sollte es funktionieren. Du musst lediglich für die beiden Hardwarekomponenten, also den Thermostat und den Fenstersensor, die Bezeichnungen aus meinem Beispiel durch die Gerätenamen in deinem System ersetzen.
hast du das mal so probiert?
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: Beta-User am 24 Januar 2022, 11:18:51
Zitat von: hadenia am 24 Januar 2022, 10:57:09
Wenn du alles per copy + paste eingibst, sollte es funktionieren. Du musst lediglich für die beiden Hardwarekomponenten, also den Thermostat und den Fenstersensor, die Bezeichnungen aus meinem Beispiel durch die Gerätenamen in deinem System ersetzen.
hast du das mal so probiert?
Er halt "alte" Sensoren, die den Alarm-Status im state abbilden:
Zitat von: tho-mas am 22 Januar 2022, 23:17:29
Im Eventmonitor sehe ich je eine "ZWave_SENSOR_NOTIFICATION_17 open" bzw. "close". Im Logfile kommt jedoch gar nicht an? Fehlt evtl. etwas?

@tho-mas
Du solltest den Event-Monitor zur Erzeugung bzw. Änderung der c&p-notify nutzen ;)
Titel: Antw:Heizkörper / Fenstersensor über ein notify schalten
Beitrag von: tho-mas am 24 Januar 2022, 21:36:05
Hallo Beta-User,

deine Idee hört sich gut an, aber was mir fehlt ist eine Anleitung, wie bei den ganzen (leider ausländischen) Fachbegriffe zu verfahren ist. Dazu kommt, das in https://wiki.fhem.de/wiki/Notify wieder was anderes (veraltete Anleitung?) steht (zumindest sieht es im Moment für mich so aus).

Brauche ich denn bei meinen "alten" Sensoren überhaupt das userreading?

@hadenia:
Ich hatte die Daten rüberkopiert und natürlich die Bezeichner ausgetauscht...

Im Eventmonitor kommt:

2022-01-24 21:25:10 ZWave ZWave_SENSOR_NOTIFICATION_17 basicSet: 255
2022-01-24 21:25:10 ZWave ZWave_SENSOR_NOTIFICATION_17 alarm: AccessControl: Window/Door is open, arg 000
2022-01-24 21:25:10 ZWave ZWave_SENSOR_NOTIFICATION_17 open


2022-01-24 21:25:16 ZWave ZWave_SENSOR_NOTIFICATION_17 basicSet: 0
2022-01-24 21:25:16 ZWave ZWave_SENSOR_NOTIFICATION_17 alarm: AccessControl: Event cleared: Window/Door is closed, arg 000
2022-01-24 21:25:16 ZWave ZWave_SENSOR_NOTIFICATION_17 closed



Die notifiys:
Internals:
   DEF        ZWave_SENSOR_NOTIFICATION_17:alarm.*open set ZWave_THERMOSTAT_5 tmOff
   FUUID      61ec76bb-f33f-1cdf-84cb-f30c50e09fc52c65
   NAME       Fenster_SZ_auf
   NOTIFYDEV  ZWave_SENSOR_NOTIFICATION_17
   NR         136
   NTFY_ORDER 50-Fenster_SZ_auf
   REGEXP     ZWave_SENSOR_NOTIFICATION_17:alarm.*open
   STATE      active
   TYPE       notify
   READINGS:
     2022-01-23 16:15:27   state           active
Attributes:


Internals:
   DEF        ZWave_SENSOR_NOTIFICATION_17:alarm.*closed set ZWave_THERMOSTAT_5 tmHeating
   FUUID      61ec76fd-f33f-1cdf-6674-ee96545290a6827c
   NAME       Fenster_SZ_zu
   NOTIFYDEV  ZWave_SENSOR_NOTIFICATION_17
   NR         137
   NTFY_ORDER 50-Fenster_SZ_zu
   REGEXP     ZWave_SENSOR_NOTIFICATION_17:alarm.*closed
   STATE      active
   TYPE       notify
   READINGS:
     2022-01-23 16:15:27   state           active
Attributes:


Oder fehlt evtl. in der DEF-Zeile des notifys am Ende eine Klammer?

Zur Ergänzung:

Internals:
   DEF        f44c0737 5
   FUUID      61e4a51d-f33f-1cdf-b9d5-1bf9b007796e7b7a
   IODev      ZWDongle_0
   LASTInputDev ZWDongle_0
   MSGCNT     35
   NAME       ZWave_THERMOSTAT_5
   NR         78
   STATE      Soll: 20.0, Ist: 18.75 C, off, Batt.: 50 %
   TYPE       ZWave
   ZWDongle_0_MSGCNT 35
   ZWDongle_0_RAWMSG 0004000506310501420753
   ZWDongle_0_TIME 2022-01-24 21:16:04
   ZWaveSubDevice no
   cmdsPending 0
   homeId     f44c0737
   isWakeUp   
   lastMsgSent 1642978033.78571
   nodeIdHex  05
   webCmd     desired-temp
   READINGS:
     2022-01-23 16:15:27   IODev           ZWDongle_0
     2022-01-18 23:39:38   battery         50 %
     2022-01-18 23:39:38   batteryPercent  50
     2022-01-18 23:39:38   batteryState    ok
     2022-01-24 20:41:49   desired-temp    20.0
     2022-01-17 00:07:10   model           EUROtronic EUR_SPIRITZ Wall Radiator Thermostat
     2022-01-17 00:07:10   modelConfig     eurotronic/eur_spiritz.xml
     2022-01-17 00:07:10   modelId         0148-0003-0001
     2022-01-24 21:12:00   reportedState   off
     2022-01-24 20:41:49   setpointTemp    20.0 C heating
     2022-01-24 21:12:00   state           off
     2022-01-24 21:16:04   temperature     18.75 C
     2022-01-24 20:41:49   thermostatMode  heating
     2022-01-23 23:47:21   timeToAck       7.216
     2022-01-23 23:47:21   transmit        OK
     2022-01-17 00:07:11   zwavePlusInfo   version:01 role:SleepingListeningSlave node:Z-Wave+Node installerIcon:1200 userIcon:1200
Attributes:
   alias      Thermostat SZ
   classes    ZWAVEPLUS_INFO ASSOCIATION ASSOCIATION_GRP_INFO VERSION MANUFACTURER_SPECIFIC DEVICE_RESET_LOCALLY PROTECTION SENSOR_MULTILEVEL SWITCH_MULTILEVEL THERMOSTAT_MODE THERMOSTAT_SETPOINT BATTERY CONFIGURATION ALARM POWERLEVEL SECURITY SECURITY_S2 TRANSPORT_SERVICE SUPERVISION FIRMWARE_UPDATE_MD
   room       Heizung,Raumtemp,ZWave
   stateFormat Soll: desired-temp, Ist: temperature, state, Batt.: battery
   vclasses   ALARM:8 ASSOCIATION:2 ASSOCIATION_GRP_INFO:1 BATTERY:1 CONFIGURATION:1 DEVICE_RESET_LOCALLY:1 FIRMWARE_UPDATE_MD:3 MANUFACTURER_SPECIFIC:1 POWERLEVEL:1 PROTECTION:1 SECURITY:1 SECURITY_S2:1 SENSOR_MULTILEVEL:5 SUPERVISION:1 SWITCH_MULTILEVEL:1 THERMOSTAT_MODE:3 THERMOSTAT_SETPOINT:3 TRANSPORT_SERVICE:2 VERSION:2 ZWAVEPLUS_INFO:2


Nachtrag:

Ich habe wohl die Lösung gefunden: In

ZWave_SENSOR_NOTIFICATION_17:alarm.*open

habe ich direkt in der fhem.cfg den Teil "alarm" gelöscht. Ein kurzer Test und der HK fährt runter.