FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: meier81 am 24 April 2019, 22:24:05

Titel: [gelöst] ein DOIF für mehrere Devices benutzen
Beitrag von: meier81 am 24 April 2019, 22:24:05
Hallo und guten Abend,

ich habe mal folgende Frage: Ich habe mir ein DOIF zusammengestellt mit dem ich eine Lüftungsempfehlung anhand verschiedener Werte mache. Hier mal meine Definition:

## Muss gelüftet werden
(([Fuehler_ELW_Schlafzimmer:dewpoint] - [Wetterstation:dewpoint]) > 3 and [Fuehler_ELW_Schlafzimmer:humidity] > 60)
   (set dy_Lueften mandatory)
## Kann gelüftet werden
DOELSEIF (([Fuehler_ELW_Schlafzimmer:dewpoint] - [Wetterstation:dewpoint]) > 3)
   (set dy_Lueften allowed)
## Darf nicht gelüftet werden
DOELSEIF (([Fuehler_ELW_Schlafzimmer:dewpoint] - [Wetterstation:dewpoint]) < 2)
   (set dy_Lueften not_allowed)


Jetzt meine Frage: Ist es möglich das ich dem DOIF verschiedene dewpoint-Werte bzw. humidity-Werte zuweisen kann bzw. dann auf verschiedene dummy-Variablen schreibe (z.B. nimmt er den dewpoint vom Schlafzimmer, den humidity vom Schlafzimmer und schreibt auf den dummy vom Schlafzimmer)? Falls ja könnt ihr mir mal einen Tipp geben wie ich das anstellen könnte, wäre falls möglich eleganter als 15 DOIF´s zu schreiben.

Gruß Markus
Titel: Antw:ein DOIF für mehrere Devices benutzen
Beitrag von: Damian am 24 April 2019, 22:56:12
Zitat von: meier81 am 24 April 2019, 22:24:05
Hallo und guten Abend,

ich habe mal folgende Frage: Ich habe mir ein DOIF zusammengestellt mit dem ich eine Lüftungsempfehlung anhand verschiedener Werte mache. Hier mal meine Definition:

## Muss gelüftet werden
(([Fuehler_ELW_Schlafzimmer:dewpoint] - [Wetterstation:dewpoint]) > 3 and [Fuehler_ELW_Schlafzimmer:humidity] > 60)
   (set dy_Lueften mandatory)
## Kann gelüftet werden
DOELSEIF (([Fuehler_ELW_Schlafzimmer:dewpoint] - [Wetterstation:dewpoint]) > 3)
   (set dy_Lueften allowed)
## Darf nicht gelüftet werden
DOELSEIF (([Fuehler_ELW_Schlafzimmer:dewpoint] - [Wetterstation:dewpoint]) < 2)
   (set dy_Lueften not_allowed)


Jetzt meine Frage: Ist es möglich das ich dem DOIF verschiedene dewpoint-Werte bzw. humidity-Werte zuweisen kann bzw. dann auf verschiedene dummy-Variablen schreibe (z.B. nimmt er den dewpoint vom Schlafzimmer, den humidity vom Schlafzimmer und schreibt auf den dummy vom Schlafzimmer)? Falls ja könnt ihr mir mal einen Tipp geben wie ich das anstellen könnte, wäre falls möglich eleganter als 15 DOIF´s zu schreiben.

Gruß Markus

Als Denkanstoß, ein DOIF für alle Zimmer:

DOIF (["^Fuehler_ELW:dewpoint"] and ([$DEVICE:dewpoint] - [?Wetterstation:dewpoint]) > 3 and [$DEVICE:humidity] > 60)
   (set dy_Lueften mandatory)
...


Du kannst auch für jedes Device einen eigenen Grenzwert per setreading festlegen (z. B. dp und hum) und dann in deinem DOIF abfragen:

DOIF (["^Fuehler_ELW:dewpoint"] and ([$DEVICE:dewpoint] - [?Wetterstation:dewpoint]) > [$DEVICE:dp] and [$DEVICE:humidity] > [$DEVICE:hum])
   (set dy_Lueften mandatory)
...


In den Beispielen müssen die zu triggernden Devices mit "Fuehler_ELW" beginnen.
Titel: Antw:ein DOIF für mehrere Devices benutzen
Beitrag von: Per am 25 April 2019, 13:04:10
Allerdings braucht es dann auch für jedes Zimmer einen "Dummy":
(set $DEVICE Lueften xxx)
Hier wird in den jeweiligen Fühler eine Uservariable mit dem Namen Lueften angelegt bzw. geändert. Die Werte können wie oben übernommen werden.
Titel: Antw:ein DOIF für mehrere Devices benutzen
Beitrag von: meier81 am 25 April 2019, 14:04:42
Super, dann werde ich mich gleich mal an die Umsetzung machen, werde dann berichten ob es geklappt hat.
Titel: Antw:ein DOIF für mehrere Devices benutzen
Beitrag von: meier81 am 25 April 2019, 14:36:38
Hab´s eben mal probiert, funktioniert soweit mal super.

Nur zu Vollständigkeit hier, falls jemand anderes das zur Anregung benutzt, man muss das Attribut do always noch setzen beim doif, zudem ging es bei mir nicht mit
(set $DEVICE Lueften xxx)

sondern mit
(setreading $DEVICE Lueften xxx)

Gruß Markus
Titel: Antw:ein DOIF für mehrere Devices benutzen
Beitrag von: Per am 25 April 2019, 16:31:20
Zitat von: meier81 am 25 April 2019, 14:36:38sondern mit
(setreading $DEVICE Lueften xxx)
Ist natürlich richtig, wollte nur deine Aufmerksamkeit testen :D