Heizungssteuerung mit Fensterkontakt

Begonnen von stoniii, 08 Oktober 2018, 20:04:12

Vorheriges Thema - Nächstes Thema

stoniii

Hallo :)

habe hier ein wenig merkwürdiges Problem und finde den Fehler nicht.

Was sollte passieren? Eine Heizungssteuerung die als erstes die tmp absenkt wenn keiner zuhause ist + wenn wieder jemand zuhause ist die ursprüngliche tmp wieder einstellen - dies klappt auch schon
([Anwesenheit] <1 and [Fenstersensor:doorWindow] eq "off")(setreading MAX_1a9eda gespeicherteTemperatur [MAX_1a9eda:desiredTemperature])(set MAX_1a9eda desiredTemperature eco)

als nächstes sollte noch wenn ein fenster geöffnet wird die Heizung ausgeschaltet werden und bei geschlossenen Fenster die ursprüngliche Tmp wieder eingestellt werden - hier passt was überhaupt noch nicht
DOELSEIF ([Anwesenheit] >0 and [Fenstersensor:doorWindow] eq "off")(set MAX_1a9eda desiredTemperature [MAX_1a9eda:gespeicherteTemperatur])
DOELSEIF ([Anwesenheit] >0 and [Fenstersensor:doorWindow] eq "on")(setreading MAX_1a9eda gespeicherteTemperatur [MAX_1a9eda:desiredTemperature])(set MAX_1a9eda desiredTemperature off)


Was funktioniert bisher? Wenn ein Fenster geöffnet wird, wird die aktuelle tmp (desiredTemperature) auch in ein neues reading (gespeicherteTemperatur) geschrieben und zusätzlich die Heizung auf off gestellt. Soweit so gut.

Wenn jetzt des Fenster geschlossen wird stellt sich komischerweise die gespeicherteTemperatur und desiredTemperature auf off. eigentlich sollte aber bei desiredTemperature der Wert von gespeicherteTemperatur stehen.

anbei noch mein DOIF in voller pracht :)



Internals:
   DEF        ([Testingdummy] <1 and [ZWave_SENSOR_NOTIFICATION_18:doorWindow] eq "off")(setreading MAX_1a9eda gespeicherteTemperatur [MAX_1a9eda:desiredTemperature])(set MAX_1a9eda desiredTemperature eco)
DOELSEIF ([Testingdummy] >0 and [ZWave_SENSOR_NOTIFICATION_18:doorWindow] eq "off")(set MAX_1a9eda desiredTemperature [MAX_1a9eda:gespeicherteTemperatur])
DOELSEIF ([Testingdummy] >0 and [ZWave_SENSOR_NOTIFICATION_18:doorWindow] eq "on")(setreading MAX_1a9eda gespeicherteTemperatur [MAX_1a9eda:desiredTemperature])(set MAX_1a9eda desiredTemperature off)
DOELSE (set teleBot msg Heizungssteuerung Fehler)
   MODEL      FHEM
   NAME       Heizungssteuerung
   NR         311
   NTFY_ORDER 50-Tischlampe
   STATE      cmd_2
   TYPE       DOIF
   .attraggr:
   .attrminint:
   READINGS:
     2018-10-08 19:50:07   Device          ZWave_SENSOR_NOTIFICATION_18
     2018-10-08 19:50:07   cmd             2
     2018-10-08 19:50:07   cmd_event       ZWave_SENSOR_NOTIFICATION_18
     2018-10-08 19:50:07   cmd_nr          2
     2018-10-08 19:32:41   e_Testingdummy_STATE 2
     2018-10-08 19:50:07   e_ZWave_SENSOR_NOTIFICATION_18_doorWindow off
     2018-10-08 19:31:34   mode            enabled
     2018-10-08 19:50:07   state           cmd_2
   Regex:
   attr:
     cmdState:
     wait:
       0:
         1
         2
     waitdel:
   condition:
     0          ::InternalDoIf($hash,'Testingdummy','STATE') <1 and ::ReadingValDoIf($hash,'ZWave_SENSOR_NOTIFICATION_18','doorWindow') eq "off"
     1          ::InternalDoIf($hash,'Testingdummy','STATE') >0 and ::ReadingValDoIf($hash,'ZWave_SENSOR_NOTIFICATION_18','doorWindow') eq "off"
     2          ::InternalDoIf($hash,'Testingdummy','STATE') >0 and ::ReadingValDoIf($hash,'ZWave_SENSOR_NOTIFICATION_18','doorWindow') eq "on"
   devices:
     0           Testingdummy ZWave_SENSOR_NOTIFICATION_18
     1           Testingdummy ZWave_SENSOR_NOTIFICATION_18
     2           Testingdummy ZWave_SENSOR_NOTIFICATION_18
     all         Testingdummy ZWave_SENSOR_NOTIFICATION_18
   do:
     0:
       0          setreading MAX_1a9eda gespeicherteTemperatur [MAX_1a9eda:desiredTemperature]
       1          set MAX_1a9eda desiredTemperature eco
     1:
       0          set MAX_1a9eda desiredTemperature [MAX_1a9eda:gespeicherteTemperatur]
     2:
       0          setreading MAX_1a9eda gespeicherteTemperatur [MAX_1a9eda:desiredTemperature]
       1          set MAX_1a9eda desiredTemperature off
     3:
       0          set teleBot msg Heizungssteuerung Fehler
   helper:
     event      doorWindow: off
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   ZWave_SENSOR_NOTIFICATION_18
     timerevent doorWindow: off
     triggerDev ZWave_SENSOR_NOTIFICATION_18
     DOIF_eventas:
       cmd_nr: 2
       cmd: 2
       cmd_event: ZWave_SENSOR_NOTIFICATION_18
       state: cmd_2
     timerevents:
       doorWindow: off
     timereventsState:
       doorWindow: off
     triggerEvents:
       doorWindow: off
     triggerEventsState:
       doorWindow: off
   internals:
     0           Testingdummy:STATE
     1           Testingdummy:STATE
     2           Testingdummy:STATE
     all         Testingdummy:STATE
   itimer:
   readings:
     0           ZWave_SENSOR_NOTIFICATION_18:doorWindow
     1           ZWave_SENSOR_NOTIFICATION_18:doorWindow
     2           ZWave_SENSOR_NOTIFICATION_18:doorWindow
     all         ZWave_SENSOR_NOTIFICATION_18:doorWindow
   trigger:
   uiState:
   uiTable:
Attributes:
   alias      Heizungssteuerung Büro
   checkall   all
   do         always
   room       1.1.0 Buero,9.1.0 LOGIKCENTER
   wait       1,2



auch ein rumspielen mit wait hat leider keinen Erfolg gebracht. ich kann mir einfach nicht erklären, woher im reading (gespeicherteTemperatur) dieses "off" herkommt.


anbei noch ein Auszug aus dem Eventmonitor
2018-10-08 20:22:47 DOIF Heizungssteuerung_Fensterkontakt wait_timer: 08.10.2018 20:22:48 cmd_1 ZWave_SENSOR_NOTIFICATION_18
2018-10-08 20:22:47 ZWave ZWave_SENSOR_NOTIFICATION_18 alarm: AccessControl: Window/Door is open
2018-10-08 20:22:47 DOIF Heizungssteuerung_Fensterkontakt cmd_event: ZWave_SENSOR_NOTIFICATION_18
2018-10-08 20:22:47 DOIF Heizungssteuerung_Fensterkontakt cmd_event: ZWave_SENSOR_NOTIFICATION_18
2018-10-08 20:22:47 ZWave ZWave_SENSOR_NOTIFICATION_18 doorWindow: on
2018-10-08 20:23:19 DOIF Heizungssteuerung_Fensterkontakt cmd_event: ZWave_SENSOR_NOTIFICATION_18
2018-10-08 20:23:19 DOIF Heizungssteuerung_Fensterkontakt cmd_event: ZWave_SENSOR_NOTIFICATION_18
2018-10-08 20:23:19 ZWave ZWave_SENSOR_NOTIFICATION_18 alarm: AccessControl: Window/Door is closed
2018-10-08 20:23:19 DOIF Heizungssteuerung_Fensterkontakt wait_timer: 08.10.2018 20:23:20 cmd_1 ZWave_SENSOR_NOTIFICATION_18
2018-10-08 20:23:19 ZWave ZWave_SENSOR_NOTIFICATION_18 doorWindow: off
2018-10-08 20:23:20 DOIF Heizungssteuerung_Fensterkontakt cmd_event: ZWave_SENSOR_NOTIFICATION_18


sieht für mich ein wenig danach aus, dass hier 2x gleichzeitig ein Event ausgelöst wird, sobald der Fenstersensor angesprochen wird.

stoniii

Niemand der hier weiterhelfen kann?

Gesendet von meinem SM-N960F mit Tapatalk


Damian

Ich kann keine Stelle entdecken, die ein "off" hineinschreibt. Da wirst du dich herantasten müssen, indem du die Anweisungen einzeln ausführst und schaust was passiert, um den Fehler einzukreisen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

stoniii

Lösung gefunden.

Anscheinend hat der Fenstersensor wirklich 2 Events ausgelöst.
event-on-update-reading brachte hier die Lösung.

evtl. hilft es ja den ein oder anderen

Benni

Zitat von: stoniii am 12 Oktober 2018, 16:01:56
Anscheinend hat der Fenstersensor wirklich 2 Events ausgelöst.
event-on-update-reading brachte hier die Lösung.

Ich hätte ja eher auf event-on-change-reading als Lösung getippt.  ???

gb#