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?
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
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...
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
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...)
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 ::)
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
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?
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
@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!)
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?
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
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...).
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.?
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
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!
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
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.
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
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...?).
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
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.
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
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?
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
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
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
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?
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
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...
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
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
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
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?
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?
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 ;)
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.