Moin zusammen.
Ich brauche mal Inspiration wie ich folgendes umsetzen kann:
Ich habe einen Deckenventilator den ich mit Pilight in 4 Stufen schalten kann. Aus, low, medium, high.
Den möchte ich in Abhängigkeit mit einem Anwesenheits- Dummy, einem MaxLan Fensterkontakt und der Temperatur in diesen Stufen schalten.
Als Bedingung zum einschalten soll das Fenster den State "opened", die Anwesenheit "On" gesetzt sein. Je nach Temperatur (via LaCrosse) sollen dann die Stufen geschaltet werden.
Ich wollte das jetzt mit Threshold umsetzen. Mit zwei Bedingungen klappt das such ganz gut:
define DFAN1 THRESHOLD Wohnzimer.Temp:temperature:5:27 AND HA.Jay:state:on DFAN_L|set @ on|set @ off|2
attr DFAN1 number_format %.1f
attr DFAN1 room Homebase
attr DFAN1 state_format _m _dv
Mit drei Bedingungen und zwei Treshold für unterschiedliche Temperaturen dann schon nicht mehr:
define DFAN1 THRESHOLD Wohnzimer.Temp:temperature:5:27 AND HA.Jay:state:on DFAN_L|set @ on|set @ off|2
attr DFAN1 number_format %.1f
attr DFAN1 room Homebase
attr DFAN1 state_format _m _dv
define DFAN2 THRESHOLD Wohnzimer.Temp:temperature:5:32 AND HA.Jay:state:on DFAN_M|set @ on|set @ off|2
attr DFAN2 number_format %.1f
attr DFAN2 room Homebase
attr DFAN2 state_format _m _dv
(das zweite AND in Threshold scheint nicht richtig erkannt zu werden...ist in diesem Bsp auch nicht aufegührt)
Heben diese zwei TH sich nicht auf? Wenn die temp von 22° erreicht ist, würde der erste TH ja einschalten wollen, der zweite TH aber aus...
DOIF wäre sicher eine Option für diese Fall?!?
Muss ich DOIF dann mit Threshold kombinieren?
Ziel ist, dass der Fan von 22°-27° auf Stufe 1 läuft, bei 27°-32° auf Stufe 2 und sagen wir mal von 32°-47° auf Stufe 3. Jedoch nur wenn ich daheim bin und das Fester auf ist (dadurch z.Bsp nicht im Winter).
Wie würdet Ihr das umsetzen?
Zitat von: monosurr0und am 30 August 2016, 11:01:54
Wie würdet Ihr das umsetzen?
Ich würde das mit einem DOIF machen
define Ventilator_DOIF DOIF
([temp] => 22 and
[temp] < 27 and
[window] eq "opened" and
[presense] eq "present"
)(
set ventilator low
)
DOELSEIF
...
DOELSE(
set ventilator off
)
[code]
Sauber, vielen Dank!
Lese mich auch gerade in die DOIF Referenz ein...
Kurz zum Verständnis:
Unter "DOELSEIF" wird dann einfach die nächste Stufe geschaltet,ein weiteres "DOELSEIF" für die Dritte und das "DOELSE" wenn keine der Bedienungen erfüllt ist...also aus.
Edit: z.Bsp
define DFAN_DOIF DOIF
([Wohnzimer.Temp:temperature] => 22 and
[Wohnzimer.Temp:temperature] <= 25 and
[MAX_0476aa] eq "opened" and
[HA.Jay] eq "on"
)(
set DFAN_L on
)
DOELSEIF
([Wohnzimer.Temp:temperature] > 25 and
[Wohnzimer.Temp:temperature] <= 27 and
[MAX_0476aa] eq "opened" and
[HA.Jay] eq "on"
)(
set DFAN_M on
)
DOELSEIF
([Wohnzimer.Temp:temperature] > 27 and
[Wohnzimer.Temp:temperature] < 40 and
[MAX_0476aa] eq "opened" and
[HA.Jay] eq "on"
)(
set DFAN_H on
)
...
DOELSE(
set DFAN_L off
)
[code]
EDIT: damit haut mir fhem folgende Meldung raus:
ZitatUnknown command ([Wohnzimer.Temp:temperature]=>, try help. Unknown command [Wohnzimer.Temp:temperature]<=, try help. Unknown command [MAX_0476aa], try help. Unknown command [HA.Jay], try help. Unknown command )(, try help. Unknown command ), try help. Unknown command DOELSEIF, try help. Unknown command ([Wohnzimer.Temp:temperature:d]>, try help. Unknown command [Wohnzimer.Temp:temperature:d]<=, try help. Unknown command [MAX_0476aa], try help. Unknown command [HA.Jay], try help. Unknown command )(, try help. Unknown command ), try help. Unknown command DOELSEIF, try help. Unknown command ([Wohnzimer.Temp:temperature:d]>, try help. Unknown command [Wohnzimer.Temp:temperature:d]<, try help. Unknown command [MAX_0476aa], try help. Unknown command [HA.Jay], try help. Unknown command )(, try help. Unknown command ), try help. Unknown command DOELSE(, try help. Unknown command ), try help.
:o :o :o