Hallo!
Ich würde gerne nachfolgende DOIF zusammenfassen:
define SZ.Lueften.Automatik DOIF
([SZ.Klimasensor:schimmelGefahr] eq "ja" and [SZ.Klimasensor:lueftenMoeglich] eq "ja" and [SZ.Fenster:state] eq "closed") (set SZ.Lueften Lüften zwingend notwendig) (set Pushover msg 'Lüften im Bad notwendig!')
DOELSEIF ([SZ.Klimasensor:schimmelGefahr] eq "ja" and [SZ.Klimasensor:lueftenMoeglich] eq "ja" and [SZ.Fenster:state] eq "open") (set SZ.Lueften wird gelüftet)
DOELSEIF ([SZ.Klimasensor:schimmelGefahr] eq "nein" and [SZ.Klimasensor:lueftenMoeglich] eq "nein" and [SZ.Fenster:state] eq "closed") (set SZ.Lueften Lüften sollte vermieden werden)
DOELSEIF ([SZ.Klimasensor:schimmelGefahr] eq "nein" and [SZ.Klimasensor:lueftenMoeglich] eq "nein" and [SZ.Fenster:state] eq "open") (set SZ.Lueften Fenster sollte geschlossen werden) (set Pushover msg 'Fenster im Bad schließen!')
DOELSEIF ([SZ.Klimasensor:schimmelGefahr] eq "ja" and [SZ.Klimasensor:lueftenMoeglich] eq "nein" and [SZ.Fenster:state] eq "closed") (set SZ.Lueften Lüften nicht möglich heizen?)
DOELSEIF ([SZ.Klimasensor:schimmelGefahr] eq "ja" and [SZ.Klimasensor:lueftenMoeglich] eq "nein" and [SZ.Fenster:state] eq "open") (set SZ.Lueften Fenster schließen Lüften bringt nichts mehr!) (set Pushover msg 'Fenster im Bad schließen! Lüften bringt nichts!')
DOELSEIF ([SZ.Klimasensor:schimmelGefahr] eq "nein" and [SZ.Klimasensor:lueftenMoeglich] eq "ja" and [SZ.Fenster:state] eq "closed") (set SZ.Lueften Lüften möglich aber nicht nötig!)
DOELSEIF ([SZ.Klimasensor:schimmelGefahr] eq "nein" and [SZ.Klimasensor:lueftenMoeglich] eq "ja" and [SZ.Fenster:state] eq "open") (set SZ.Lueften wird gelüftet ist aber nicht nötig!)
define BZ.Lueften.Automatik DOIF
([BZ.Klimasensor:schimmelGefahr] eq "ja" and [BZ.Klimasensor:lueftenMoeglich] eq "ja" and [BZ.Fenster:state] eq "closed") (set BZ.Lueften Lüften zwingend notwendig) (set Pushover msg 'Lüften im Bad notwendig!')
DOELSEIF ([BZ.Klimasensor:schimmelGefahr] eq "ja" and [BZ.Klimasensor:lueftenMoeglich] eq "ja" and [BZ.Fenster:state] eq "open") (set BZ.Lueften wird gelüftet)
DOELSEIF ([BZ.Klimasensor:schimmelGefahr] eq "nein" and [BZ.Klimasensor:lueftenMoeglich] eq "nein" and [BZ.Fenster:state] eq "closed") (set BZ.Lueften Lüften sollte vermieden werden)
DOELSEIF ([BZ.Klimasensor:schimmelGefahr] eq "nein" and [BZ.Klimasensor:lueftenMoeglich] eq "nein" and [BZ.Fenster:state] eq "open") (set BZ.Lueften Fenster sollte geschlossen werden) (set Pushover msg 'Fenster im Bad schließen!')
DOELSEIF ([BZ.Klimasensor:schimmelGefahr] eq "ja" and [BZ.Klimasensor:lueftenMoeglich] eq "nein" and [BZ.Fenster:state] eq "closed") (set BZ.Lueften Lüften nicht möglich heizen?)
DOELSEIF ([BZ.Klimasensor:schimmelGefahr] eq "ja" and [BZ.Klimasensor:lueftenMoeglich] eq "nein" and [BZ.Fenster:state] eq "open") (set BZ.Lueften Fenster schließen Lüften bringt nichts mehr!) (set Pushover msg 'Fenster im Bad schließen! Lüften bringt nichts!')
DOELSEIF ([BZ.Klimasensor:schimmelGefahr] eq "nein" and [BZ.Klimasensor:lueftenMoeglich] eq "ja" and [BZ.Fenster:state] eq "closed") (set BZ.Lueften Lüften möglich aber nicht nötig!)
DOELSEIF ([BZ.Klimasensor:schimmelGefahr] eq "nein" and [BZ.Klimasensor:lueftenMoeglich] eq "ja" and [BZ.Fenster:state] eq "open") (set BZ.Lueften wird gelüftet ist aber nicht nötig!)
Ich nutze diese für Hinweise zum Lüften und zur Vorbeugung von Schimmel in allen Räumen, sodass für jeden Raum ein DOIF, ein Dummy, ein Fensterkontakt und ein Klimasensor vorhanden ist.
Lassen sich die DOIF zusammenfassen? Macht das überhaupt Sinn?
Wenn SZ.Lueften ein Dummy ist, der nur zur Anzeige dient, könntest Du darauf verzichten und stattdessen das Attribut cmdState einsetzen, dann kann DOIF selbst als Anzeigeelement dienen.
cmdState Lüften zwingend notwendig|wird gelüftet|Lüften sollte vermieden werden|...
Da die Zustände der beiden DOIF unabhängig voneinander sind, würde ich sie nicht zusammen fassen.
Aber Du kannst eine Zusammenfassung ausprobieren und dann entscheiden, ob es für Dich Sinn ergibt. Eine Idee, wie man es lösen könnte wird hier besprochen: https://forum.fhem.de/index.php/topic,46327.msg592493.html#msg592493
Ich würde das aufteilen:
define SZ.Lueften.Automatik DOIF
([*.Klimasensor:schimmelGefahr] or [*.Klimasensor:lueftenMoeglich] or [*.Fenster:state])
(99_sub_lueften([{("$DEVICE"=~/(.*)\..*\.(.*)/;"$1.Klimasensor")}],[{("$DEVICE"=~/(.*)\..*\.(.*)/;"$1.Klimasensor")}],[{("$DEVICE"=~/(.*)\..*\.(.*)/;"$1.Fenster")}]))
Und die Abfrage sebst einmalig mit Perl in der 99_myUtil darstellen.
Habe das jetzt nur zusammenkopiert, Klammern und so müsste man also definitiv nochmal nachzählen ;)
Zitat von: Ellert am 26 Februar 2017, 00:02:21
Wenn SZ.Lueften ein Dummy ist, der nur zur Anzeige dient, könntest Du darauf verzichten und stattdessen das Attribut cmdState einsetzen, dann kann DOIF selbst als Anzeigeelement dienen.
cmdState Lüften zwingend notwendig|wird gelüftet|Lüften sollte vermieden werden|...
Danke für den Tipp! Ich werde nun für jeden Raum ein DOIF anlegen und mir dafür den Dummy sparen. :)
Zitat von: Spezialtrick am 05 März 2017, 10:53:19
Danke für den Tipp! Ich werde nun für jeden Raum ein DOIF anlegen und mir dafür den Dummy sparen. :)
Der Vorschlag ergibt natürlich nur einen Vorteil, wenn Du die DOIF pro Raum nicht zusammenlegen kannst.
Wenn Du es schaffst ein DOIF für alle Räume zu bauen, könntest statt der Anzeige-Dummys, Readings im DOIF zur Anzeige nutzen und z.B. über stateFormat oder einer readingsGroup zusammenfassen.