Hallo,
ich habe folgendes Doif gebaut:
([Heizung.OG.VorlaufIst:temperature.avg] < {[Heizung.OG.VorlaufSollClone]-10} and [Heizung.OG.Mischer:position]<97 and [Heizung.OG.Pumpe] eq "on")
(set Heizung.OG.Mischer {([Heizung.OG.Mischer:position]+2)}) ## Cmd 1: Schnell oeffnen
DOELSEIF ([Heizung.OG.VorlaufIst:temperature.avg] < {[Heizung.OG.VorlaufSollClone]-6} and [Heizung.OG.Mischer:position]<98 and [Heizung.OG.Pumpe] eq "on")
(set Heizung.OG.Mischer {([Heizung.OG.Mischer:position]+1)}) ## Cmd 2: Ganz langsam oeffnen
DOELSEIF ([Heizung.OG.VorlaufIst:temperature.avg] < {[Heizung.OG.VorlaufSollClone]-2} and [Heizung.OG.Mischer:position]<98 and [Heizung.OG.Pumpe] eq "on")
(set Heizung.OG.Mischer {([Heizung.OG.Mischer:position]+1)}) ## Cmd 3: Noch ein bisschen
DOELSEIF ([Heizung.OG.VorlaufIst:temperature.avg] > {[Heizung.OG.VorlaufSollClone]+5} and [Heizung.OG.Mischer:position]>3)
(set Heizung.OG.Mischer {([Heizung.OG.Mischer:position]-2)}) ## Cmd 4: Viel zu heiss, schnell zu
DOELSEIF ([Heizung.OG.VorlaufIst:temperature.avg] > {[Heizung.OG.VorlaufSollClone]+3} and [Heizung.OG.Mischer:position]>2)
(set Heizung.OG.Mischer {([Heizung.OG.Mischer:position]-1)}) ## Cmd 5: Zu heiss, schnell zu
DOELSEIF ([Heizung.OG.VorlaufIst:temperature.avg] > {[Heizung.OG.VorlaufSollClone]+1} and [Heizung.OG.Mischer:position]>2)
(set Heizung.OG.Mischer {([Heizung.OG.Mischer:position]-1)}) ## Cmd 6: Noch ein bisschen
DOELSEIF ([03:50])
(set Heizung.OG.Mischer calibrate) ## Cmd 7: Calibrieren fuer Tagprogramm
DOELSEIF ([04:00])
(set Heizung.OG.Mischer 40) ## Cmd 8: Headstart, Ende der Nachtabsenkung
aber offensichtlich ergibt die Prüfung:
[Heizung.OG.VorlaufIst:temperature.avg] < {[Heizung.OG.VorlaufSollClone]-10}
immer true, da ich am Ende immer Cmd1 als Ergebnis habe.
Hier ein paar aktuelle Werte:
Device Heizung.OG.Pumpe
cmd 1
cmd_event Heizung.OG.Mischer
cmd_nr 1
e_Heizung.OG.Mischer_position 27
e_Heizung.OG.Pumpe_STATE on
e_Heizung.OG.VorlaufIst_temperature.avg 38.281
e_Heizung.OG.VorlaufSollClone_STATE 29
state cmd_1
timer_1_c7 18.10.2016 03:50:00
timer_2_c8 18.10.2016 04:00:00
wait_timer 17.10.2016 13:50:10 cmd_1 Heizung.OG.Mischer
Eigentlich sollte jetzt cmd4 hier stehen? Wie kann ich die Bedingungen am besten prüfen? Kann es ein Problem mit dem Datenformat sein?
VG
F.
Hi,
also ich würde runde Klammern verwenden:{[Heizung.OG.VorlaufSollClone]-10}
so bist Du auf Perlebene. Keine Ahnung was da rauskommt, aber das kannst Du leicht überprüfen, einfach oben in die Kommandozeile kopieren und sehen was passiert.
Auf Perlebene werden Readings nicht mit eckigen Klammern sondern sondern mit ReadingsVal gelesen.
Du musst mit Deiner Schreibweise auf DOIF Ebene bleiben und das geht mit runden Klammern.
Also, zumindest denke ich das so. Muss nicht stimmen :)
Gruß Otto
In der Bedingung von DOIF keine geschweiften Klammern verwenden (höchstens für Zeitfunktionen), daher ist korrekt:
[Heizung.OG.VorlaufIst:temperature.avg] < ([Heizung.OG.VorlaufSollClone]-10)
Gruß
Damian
Danke Euch, jetzt funktioniert es :)