DOIF reagiert nicht (ProxyReading)

Begonnen von flmma, 07 Februar 2019, 21:47:35

Vorheriges Thema - Nächstes Thema

flmma

Hallo,

habe um meine witterungsgeführte Ölheizung etwas intelligenter zu machen folgende Überlegung angestellt:
Wenn Wohnzimmertemperatur > 24 dann soll die Heizung abgeschalten werden und bei <22.8 wieder angeschalten werden.
Leider reagiert aber das DOIF auf eine Änderung der Wohnzimmertemperatur (ist ein proxyreading) nicht, wenn ich stattdessen ein Dummy verwende und die Temperatur manuell setze arbeitet meine Logik wie gewünscht.

Anbei ein Output wenn ich mir mit list den DOIF-Schalter ausgeben lasse:
ZitatInternals:
   DEF        ([MA_111bd5ad2025:temperatureIn] gt 24.0 and [Heizung_WZTempAktiv:state] eq "off") (set Heizung_WZTempBetriebsart [BetriebsartEinstellen],set BetriebsartEinstellen 05,set Heizung_WZTempAktiv on) DOELSEIF ([MA_111bd5ad2025:temperatureIn] lt 22.8 and [Heizung_WZTempAktiv:state] eq "on") (set BetriebsartEinstellen [Heizung_WZTempBetriebsart],set Heizung_WZTempAktiv off)
   FUUID      5c4a4cea-f33f-2764-ca6d-f2bc22cabca7cefd
   MODEL      FHEM
   NAME       Heizung_WZTemp
   NR         119
   NTFY_ORDER 50-Heizung_WZTemp
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2019-02-07 21:42:23   Device          MA_111bd5ad2025
     2019-01-29 12:57:23   cmd             1
     2019-01-29 12:57:23   cmd_event       MA_111bd5ad2025
     2019-01-29 12:57:23   cmd_nr          1
     2019-02-06 17:22:48   e_BetriebsartEinstellen_state 01
     2019-02-07 20:52:30   e_Heizung_WZTempAktiv_state off
     2019-02-07 21:42:23   e_MA_111bd5ad2025_temperatureIn 24.2
     2019-01-29 12:57:23   state           cmd_1
   Regex:
   attr:
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'MA_111bd5ad2025','temperatureIn') gt 24.0 and ::ReadingValDoIf($hash,'Heizung_WZTempAktiv','state') eq "off"
     1          ::ReadingValDoIf($hash,'MA_111bd5ad2025','temperatureIn') lt 22.8 and ::ReadingValDoIf($hash,'Heizung_WZTempAktiv','state') eq "on"
   devices:
     0           MA_111bd5ad2025 Heizung_WZTempAktiv
     1           MA_111bd5ad2025 Heizung_WZTempAktiv
     all         MA_111bd5ad2025 Heizung_WZTempAktiv
   do:
     0:
       0          set Heizung_WZTempBetriebsart [BetriebsartEinstellen],set BetriebsartEinstellen 05,set Heizung_WZTempAktiv on
     1:
       0          set BetriebsartEinstellen [Heizung_WZTempBetriebsart],set Heizung_WZTempAktiv off
     2:
   helper:
     event      txCounter: 6065,temperature2: 21.4,temperatureString2: 21.4°C,temperatureIn: 24.2,temperatureStringIn: 24.2°C,In T: 24.2 H: 34 1 T: 19.3 H: 42 2 T: 21.4 H: 34 3 T: -9999 H: 9999,lastRcv: 2019-02-07 21:41:24
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   MA_111bd5ad2025
     timerevent txCounter: 6065,temperature2: 21.4,temperatureString2: 21.4°C,temperatureIn: 24.2,temperatureStringIn: 24.2°C,In T: 24.2 H: 34 1 T: 19.3 H: 42 2 T: 21.4 H: 34 3 T: -9999 H: 9999,lastRcv: 2019-02-07 21:41:24
     triggerDev MA_111bd5ad2025
     timerevents:
       txCounter: 6065
       temperature2: 21.4
       temperatureString2: 21.4°C
       temperatureIn: 24.2
       temperatureStringIn: 24.2°C
       In T: 24.2 H: 34 1 T: 19.3 H: 42 2 T: 21.4 H: 34 3 T: -9999 H: 9999
       lastRcv: 2019-02-07 21:41:24
     timereventsState:
       txCounter: 6065
       temperature2: 21.4
       temperatureString2: 21.4°C
       temperatureIn: 24.2
       temperatureStringIn: 24.2°C
       state: In T: 24.2 H: 34 1 T: 19.3 H: 42 2 T: 21.4 H: 34 3 T: -9999 H: 9999
       lastRcv: 2019-02-07 21:41:24
     triggerEvents:
       txCounter: 6065
       temperature2: 21.4
       temperatureString2: 21.4°C
       temperatureIn: 24.2
       temperatureStringIn: 24.2°C
       In T: 24.2 H: 34 1 T: 19.3 H: 42 2 T: 21.4 H: 34 3 T: -9999 H: 9999
       lastRcv: 2019-02-07 21:41:24
     triggerEventsState:
       txCounter: 6065
       temperature2: 21.4
       temperatureString2: 21.4°C
       temperatureIn: 24.2
       temperatureStringIn: 24.2°C
       state: In T: 24.2 H: 34 1 T: 19.3 H: 42 2 T: 21.4 H: 34 3 T: -9999 H: 9999
       lastRcv: 2019-02-07 21:41:24
   internals:
   itimer:
   perlblock:
   readings:
     0           MA_111bd5ad2025:temperatureIn Heizung_WZTempAktiv:state
     1           MA_111bd5ad2025:temperatureIn Heizung_WZTempAktiv:state
     all         MA_111bd5ad2025:temperatureIn Heizung_WZTempAktiv:state
   trigger:
   uiState:
   uiTable:
Attributes:
   group      Heizung_Automatisierung
   room       Heizung

Habt Ihr eine Idee woran das liegen könnte?

Danke!

amenomade

#1
Und was ist das Problem?
temperatureIn ist grösser als 24 und WZTempAkiv ist auf off. Dann bleibt der DOIF bei cmd_1
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

flmma

Hallo,

ah, evtl. bin ich nun schlauer. Sprich weil wieder die Bedingung 1 erfüllt ist, wird das cmd_1 nicht nochmal aufgerufen.
Sprich es wird nicht bei jeder Temperaturänderung das cmd_1 ausgeführt, sondern nur, wenn es ungleich dem letzten state vom Device Heizung_WZTemp (cmd_1) ist, oder?

amenomade

Richtig. Es sei denn, du setzt den Attribute do always
Es steht alles in CommandRef
ZitatDas Modul wird getriggert, sobald das angegebene Device hier "remotecontrol" ein Event erzeugt. Das geschieht, wenn irgendein Reading oder der Status von "remotecontrol" aktualisiert wird. Ausgewertet wird hier der Zustand des Status von remotecontrol nicht das Event selbst. Im FHEM-Modus arbeitet das Modul mit Zuständen, indem es den eigenen Status auswertet. Die Ausführung erfolgt standardmäßig nur ein mal, bis ein anderer DOIF-Zweig und damit eine Ändernung des eigenen Status erfolgt. Das bedeutet, dass ein mehrmaliges Drücken der Fernbedienung auf "on" nur einmal "set garage on" ausführt. Die nächste mögliche Ausführung ist "set garage off", wenn Fernbedienung "off" liefert. Wünscht man eine Ausführung des gleichen Befehls mehrfach nacheinander bei jedem Trigger, unabhängig davon welchen Status das DOIF-Modul hat, weil z. B. Garage nicht nur über die Fernbedienung geschaltet wird, dann muss man das per "do always"-Attribut angeben:

attr di_garage do always
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus