Temperaturregelung THSensor, DOIF und Siemens Logo

Begonnen von AyshaHM, 14 Februar 2018, 14:20:17

Vorheriges Thema - Nächstes Thema

AyshaHM

Hallo zusammen,
ich habe folgende Situation in meiner Steuerung.

Ich schalte über eine Siemens Logo einen Ausgang für eine elektrische Fußbodenheizung.
Über S7_DWrite gebe ich einen kurzen On Befehl und die Logo schaltet.
Das sehe ich im S7_DRead.
Der kurze On Befehl wird über einen Dummy und Notify realisiert.
Da es eine Heizung ist wird diese über einen DOIF und THSensor über den Notify ( SLTA02FussbodenheizungBad ) Taster ein und aus geschaltet.

Hier der DOIF
([HM8TemperaturBad:temperature] <=20.0 and [AQ2FussbodenheizungBad:state] eq "off" and [HM8HeizunOn:state] eq "on") (set SLTA02FussbodenheizungBad on)DOELSEIF
([HM8TemperaturBad:temperature] >20.1 and [AQ2FussbodenheizungBad:state] eq "on" and [HM8HeizunOn:state] eq "off") (set SLTA02FussbodenheizungBad on)DOELSE


Das funktioniert wunderbar!

Jetzt das Problem:  Jedes Mal, wenn sich der THSensor aktualisiert sendet der DOIF nochmals einen "on" Befehl dieser schaltet dann die Heizung wieder aus.
Das soll auch so sein aber nur wenn die Temperatur die 20.1 überschritten hat.

Ich hoffe ich habe es einigermaßen Verständlich beschrieben.

Für eure Hilfe schon mal vielen Dank
lG
AyshaHM  :D
Hardware: Raspberry  4

KernSani

nimm mal das do always aus dem DOIF (sagt meine Glaskugel). Bitte list des Devices, damit man mehr sehen kann.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

AyshaHM

Hallo KernSani,
vielen Dank für deine Antwort. Ich habe da "do" von allways auf resetwait gesetzt.
Es wird jetzt weiterhin geschaltet aber der doif schaltet wieder ein. Eigentlich funktioniert jetzt alles.
Nur die Logo schaltet jetzt alle drei Minuten ein und wieder aus, aber nur bis die Temperatur den Wert 20.1 überschreitet.
Welches device soll ich abbilden?

lG
AyshaHM
Hardware: Raspberry  4

KernSani

Hi,

resetwait macht in dem Zusammenhang glaube ich auch keinen Sinn, du kannst das "do" Attribut komplett löschen.

ein "list" des DOIF wäre besser gewesen (dann hätte ich wegen "do always" nicht raten müssen)

[HM8HeizunOn:state]
führt dazu, dass das DOIF bei jedem einschalten erneut getriggert wird. Wenn du nur abfragen willst verwende [?HM8HeizunOn:state]

Übrigens ist der Fall genau 20.1 Grad nicht abgedeckt ;-)

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

AyshaHM

Hardware: Raspberry  4

AyshaHM

Ich hatte das "do allways" als attribut nicht gesetzt.
Jetzt nach deinem Rat habe ich dieses gesetzt.

:D :D :D
Hardware: Raspberry  4

KernSani

Bitte keine Screenshots, sondern

list HM8HeizOn

Wenn's jetzt gelöst ist (was ich irgendwie nicht glaube) dann bitte [Gelöst] vor das Subject des ersten Posts.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

AyshaHM

Hallo KernSani,
für mich ist das Problem nicht gelöst!
Wie ich oben schon beschrieben habe; schaltet das DOIF beim manuellen schalten des dummy HM8HeizunOn über das notify SLTA01SLNI2Q2FussbodenheizungBad (Taster) über den S7_DWrite SLNI2Q2FussbodenheizungBad die Logo ein. Wenn die Temperatur unter 20.1 Grad ist.
Der THSensor aktualisiert sich ca. alle 3 min. Auf diese Aktualisierung reagiert das Doif einmalig und führt den gleichen Befehl nochmals durch.
Die Tasterfunktion schaltet die Logo wieder aus. Dann passierte nichts mehr.
Das Attribut "do" ist nicht gesetzt.

Wenn ich das Attribut "do" mit dem Wert resetwait setze passiert das gleiche wie oben aber das Doif schaltet gleich nochmal. Also zweimal.
Die Logo ist dann wieder eingeschaltet. Dieser Prozess wiederholt sich bei jeder Aktualisierung des THSensors bis die Temperatur die 20.1 Grad überschreitet. Die Funktion ist so ersteinmal gegeben. Es ist aber nicht schön wenn die Logo alle 3 min. schaltet.

Bitte entschuldige die Hardcopy aber der Befehl list war mir noch nicht bekannt.

Internals:
   DEF        ([HM8TemperaturBad:temperature] <=20.0 and [AQ2FussbodenheizungBad:state] eq "off" and [HM8HeizunOn:state] eq "on") (set SLTA02FussbodenheizungBad on)DOELSEIF
([HM8TemperaturBad:temperature] >20.1 and [AQ2FussbodenheizungBad:state] eq "on" and [HM8HeizunOn:state] eq "on") (set SLTA02FussbodenheizungBad on)DOELSE



   NAME       HM8HeizOn
   NR         575
   NTFY_ORDER 50-HM8HeizOn
   STATE      cmd_3
   TYPE       DOIF
   READINGS:
     2018-02-18 10:10:43   Device          AQ2FussbodenheizungBad
     2018-02-18 10:10:43   cmd             3
     2018-02-18 10:10:43   cmd_event       AQ2FussbodenheizungBad
     2018-02-18 10:10:43   cmd_nr          3
     2018-02-18 10:10:43   e_AQ2FussbodenheizungBad_state on
     2018-02-18 10:09:59   e_HM8TemperaturBad_temperature 18.2
     2018-02-18 10:09:40   mode            enabled
     2018-02-18 10:10:43   state           cmd_3
   Regex:
   condition:
     0          ReadingValDoIf($hash,'HM8TemperaturBad','temperature') <=20.0 and ReadingValDoIf($hash,'AQ2FussbodenheizungBad','state') eq "off" and ReadingValDoIf($hash,'HM8HeizunOn','state') eq "on"
     1          ReadingValDoIf($hash,'HM8TemperaturBad','temperature') >20.1 and ReadingValDoIf($hash,'AQ2FussbodenheizungBad','state') eq "on" and ReadingValDoIf($hash,'HM8HeizunOn','state') eq "on"
   devices:
     0           HM8TemperaturBad AQ2FussbodenheizungBad HM8HeizunOn
     1           HM8TemperaturBad AQ2FussbodenheizungBad HM8HeizunOn
     all         HM8TemperaturBad AQ2FussbodenheizungBad HM8HeizunOn
   do:
     0:
       0          set SLTA02FussbodenheizungBad on
     1:
       0          set SLTA02FussbodenheizungBad on
     2:
       0         
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      on
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   AQ2FussbodenheizungBad
     timerevent on
     triggerDev AQ2FussbodenheizungBad
     timerevents:
       on
     timereventsState:
       state: on
     triggerEvents:
       on
     triggerEventsState:
       state: on
   internals:
   itimer:
   readings:
     0           HM8TemperaturBad:temperature AQ2FussbodenheizungBad:state HM8HeizunOn:state
     1           HM8TemperaturBad:temperature AQ2FussbodenheizungBad:state HM8HeizunOn:state
     all         HM8TemperaturBad:temperature AQ2FussbodenheizungBad:state HM8HeizunOn:state
   trigger:
   uiState:
   uiTable:
Attributes:
   do         resetwait
   room       03-HeizungHM8


Danke für deine Hilfe !!!


Hardware: Raspberry  4