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
nimm mal das do always aus dem DOIF (sagt meine Glaskugel). Bitte list des Devices, damit man mehr sehen kann.
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
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 ;-)
Hier das Doif
:D
Ich hatte das "do allways" als attribut nicht gesetzt.
Jetzt nach deinem Rat habe ich dieses gesetzt.
:D :D :D
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.
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 !!!