Hallo Zusammen,
hänge schon seit einiger Zeit im Forum und versuche ein DOIF mit dem Modul Stellmotor zu kombinieren.
habe jetzt schon einiges ausprobiert, aber das DOIF triggert nicht bei einer Temperaturänderung.
hier schon mal das DOIF:
Internals:
CFGFN
DEF ([DS18B20_FF7387831603:temperature] <28 and [Stellmotor:position] <97 and [Temp.Puffer] eq "low")
(set Stellmotor {([Stellmotor:position]+2)})
DOELSEIF ([DS18B20_FF7387831603:temperature] >30 and [Stellmotor:position] >3 and [Temp.Puffer] eq "low")
(set Stellmotor {([Stellmotor:position]-2)})
FUUID 5ccf0ad0-f33f-9a41-a654-e72cab805bac6d0f
MODEL FHEM
NAME Ventil1.Steuerung
NR 1196
NTFY_ORDER 50-DI_MischerCommands
STATE initialized
TYPE DOIF
VERSION 19303 2019-05-01 08:47:16
READINGS:
2019-05-05 18:13:09 Device DS18B20_FF7387831603
2019-05-05 18:11:57 cmd 0
2019-05-05 18:13:09 e_DS18B20_FF7387831603_temperature 21
2019-05-05 18:11:57 mode enabled
2019-05-05 18:11:57 state initialized
Regex:
accu:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::ReadingValDoIf($hash,'DS18B20_FF7387831603','temperature') <28 and ::ReadingValDoIf($hash,'Stellmotor','position') <97 and ::InternalDoIf($hash,'Temp.Puffer','STATE') eq "low"
1 ::ReadingValDoIf($hash,'DS18B20_FF7387831603','temperature') >30 and ::ReadingValDoIf($hash,'Stellmotor','position') >3 and ::InternalDoIf($hash,'Temp.Puffer','STATE') eq "low"
devices:
0 DS18B20_FF7387831603 Stellmotor Temp.Puffer
1 DS18B20_FF7387831603 Stellmotor Temp.Puffer
all DS18B20_FF7387831603 Stellmotor Temp.Puffer
do:
0:
0 set Stellmotor {([Stellmotor:position]+2)}
1:
0 set Stellmotor {([Stellmotor:position]-2)}
2:
helper:
event temperature: 21,alarm: 1
globalinit 1
last_timer 0
sleeptimer -1
triggerDev DS18B20_FF7387831603
triggerEvents:
temperature: 21
alarm: 1
triggerEventsState:
temperature: 21
alarm: 1
internals:
0 Temp.Puffer:STATE
1 Temp.Puffer:STATE
all Temp.Puffer:STATE
itimer:
readings:
0 DS18B20_FF7387831603:temperature Stellmotor:position
1 DS18B20_FF7387831603:temperature Stellmotor:position
all DS18B20_FF7387831603:temperature Stellmotor:position
trigger:
uiState:
uiTable:
Attributes:
room Stellmotor
Oder verstehe ich das Vielleicht falsch und das DOIF kann nicht auf die Temperaturwerte reagieren.
Das DS18B20 ist so eingerichtet das es alle 20 Sekunden einen Wert liefert, aber wie gesagt das DOIF reagiert darauf nicht.
Der Temp.Puffer ist bei mir ein Dummy:
Internals:
FUUID 5cced9c6-f33f-9a41-a699-c11ad3da1b2ebc43
NAME Temp.Puffer
NR 30
STATE high
TYPE dummy
READINGS:
2019-05-05 17:28:07 state high
Attributes:
room Stellmotor
webCmd high:low
Wenn ich im DOIF "do always" einstelle schiebt er den Wert im Stellmotor auch nach oben oder unten, nur halt in sekunden schritten.
Ich würde aber gerne nur bei einem Event des Temperatursensors den Wert um 2 nach oben oder unten verschieben.
Vielleicht kann mir da jemand einen Tipp geben.
MFG
Jens
Ich würde sagen, dass der Trigger vom Temperatursensor ankommt, aber der Rest der jeweiligen Bedingung nicht wahr ist.
Hy Damian,
im Prinzip stimmt der Rest, wenn ich das Attribut "do always" aktiviere Funktioniert es ja.
Nur halt das er diese Abfrage dann im Sekundentakt macht und den Zähler sofort hoch und runter zählt.
Oder verstehe ich das Falsch?!
Ich habe allerdings auch schon mal folgendes probiert:
DOIF ([DS18B20_FF7387831603:temperature] <28 (set Temp.Puffer low)
DOELSE (set Temp.Puffer high)
Funktioniert leider auch nicht.
MFG
Jens
Laut deinem ersten Post war aber Temp.puffer seit 17:28 Uhr auf "high" => keine Bedingung wahr
Sorry habe auch seit dem nichts mehr getestet.
Das letzte was ich noch probiert habe war das mit do always.
Daher kann es sein das ich den nicht wieder zurück auf low gestellt habe.
MFG
Jens
Sorry nochmal,
habe gerade festgestellt das der Trigger funktioniert, allerdings nur wenn die 28 unterschritten oder 30 überschritten werden.
Was ich bezwecken wollte war das bei jeder Temperaturänderung die sich unter 28 Grad bewegt, jedesmal das DOIF auslöst.
D.h. wenn die Temperatur 10 mal hintereinander unter 28 Grad gemessen wird er dann auch 10 mal das DOIF durchläuft.
Somit sollte er dann auch 10 mal den Wert des Stellmotors um 2 nach oben setzen.
Das DOIF setzt den Wert aber nur einmal noch oben.
Würde das mit einem DOIF überhaupt Funktionieren?
MFG
Jens
ZitatWas ich bezwecken wollte war das bei jeder Temperaturänderung die sich unter 28 Grad bewegt, jedesmal das DOIF auslös
Dann musst Du doch do always setzen. Aber dann wahrscheinlich die andere Konditionen nicht triggernd machen (mit "?" vor dem Devicename). Siehe https://fhem.de/commandref_DE.html#DOIF_Zeitintervalle_Readings_und_Status_ohne_Trigger
Super Danke,
habe hundert mal gelesen konnte es aber nicht zusammenbingen.
Dadurch das Stellmotor:position auch im Trigger mit drin war aggierte das DOIF sofort, habe es mit ? herausgenommen.
Vielen Dank für die Hilfe
MFG
Jens