Wie umsetzen? Lüfter in mehreren Stufen schalten mit zwei weiteren Abhänigkeiten

Begonnen von monosurr0und, 30 August 2016, 11:01:54

Vorheriges Thema - Nächstes Thema

monosurr0und

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?

igami

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]
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

monosurr0und

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