FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: PS915 am 07 Februar 2019, 20:56:09

Titel: Mehrere DOIFs mit selbem "Shema" zusammenfassen/vereinfachen
Beitrag von: PS915 am 07 Februar 2019, 20:56:09
Guten Abend zusammen,

mal angenommen, man hat mehrere DOIFS mit immer dem selben "Schema" und möchte diese vereinfachen. Zum Beispiel nur mit einem DOIF. Ist das in irgendeiner Form möglich? Wie würde so eine Struktur aussehen?

define push.raum1.sabotage DOIF ([windows.raum1:sabotageError] eq "on" and [push_allowed.raum1] eq "yes") (set pushmsg msg 'Raum1' 'Achtung! Sabotagealarm in Raum 1')
define push.raum2.sabotage DOIF ([windows.raum2:sabotageError] eq "on" and [push_allowed.raum2] eq "yes") (set pushmsg msg 'Raum2' 'Achtung! Sabotagealarm in Raum 2')
define push.raum3.sabotage DOIF ([windows.raum3:sabotageError] eq "on" and [push_allowed.raum3] eq "yes") (set pushmsg msg 'Raum3' 'Achtung! Sabotagealarm in Raum 3')
define push.raum4.sabotage DOIF ([windows.raum4:sabotageError] eq "on" and [push_allowed.raum4] eq "yes") (set pushmsg msg 'Raum4' 'Achtung! Sabotagealarm in Raum 4')
define push.raum5.sabotage DOIF ([windows.raum5:sabotageError] eq "on" and [push_allowed.raum5] eq "yes") (set pushmsg msg 'Raum5' 'Achtung! Sabotagealarm in Raum 5')
[...]


Hintergrund: Wenn ich an dem "Shema" etwas ändern möchte, zum Beispiel den Text von "Achtung! Sabotagealarm" auf "ALARM! Sabotagealarm" ändern möchte, müsste ich haufenweise DOIFS editieren.

Gruß,
Phil
Titel: Antw:Mehrere DOIFs mit selbem "Shema" zusammenfassen/vereinfachen
Beitrag von: doman75 am 08 Februar 2019, 08:22:13
heissen die alle ([windows.raum1:sabotageError] oder auch raum2 raum3 etc?
Titel: Antw:Mehrere DOIFs mit selbem "Shema" zusammenfassen/vereinfachen
Beitrag von: PS915 am 08 Februar 2019, 10:15:11
Ja, sie heißen natürlich raum1,raum2, das hatte ich vergessen zu ändern. Ist nun editiert. Die Räume wären quasi durchnummeriert, wenn man aber verschiedene Räume wie

define push.raum_bad.sabotage DOIF ([windows.raum_bad:sabotageError] eq "on" and [push_allowed.raum_bad] eq "yes") (set pushmsg msg 'Bad' 'Achtung! Sabotagealarm in Bad')
define push.raum_schlafzimmer.sabotage DOIF ([windows.raum_schlafzimmer:sabotageError] eq "on" and [push_allowed.schlafzimmer] eq "yes") (set pushmsg msg 'Schlafzimmer' 'Achtung! Sabotagealarm in Schlafzimmer')


benennt, wäre das natürlich auch cool. Könnte man nicht auf den Alias des Sensors/Device verwenden um daraus auf die readings und anderen dummys zu schließen?
Titel: Antw:Mehrere DOIFs mit selbem "Shema" zusammenfassen/vereinfachen
Beitrag von: Beta-User am 08 Februar 2019, 10:21:46
Erfordert vielleicht etwas tiefere Einarbeitung und paßt auch nicht ganz genau (da es um "normale Öffnungen" geht, nicht um den Sabotagekontakt), aber vielleicht mal als Muster/Anregung:
Globale, flexible Fenster-/Tür-Offen-Meldungen (https://forum.fhem.de/index.php/topic,36504.0.html)
Titel: Antw:Mehrere DOIFs mit selbem "Shema" zusammenfassen/vereinfachen
Beitrag von: Damian am 08 Februar 2019, 11:48:26
In solchen Fällen musst du von konkreten Readingangaben weg und auf Ereignisse mit RegEx umsteigen.

Bsp.:

define push.raum1.sabotage DOIF (["^windows.raum:sabotageError",""] eq "on" and [?push_allowed_$DEVICE] eq "yes") (set pushmsg msg '$DEVICE' 'Achtung! Sabotagealarm in $DEVICE')

Hier wird auf alles was mit windows.raum beginnt mit sabotageError getriggert. Aus dem Event wird der Wert entnommen und mit "on" verglichen, dann wird vor den triggernden Devicenamen pusch_allowed davorgehängt und dieses Devices auf "yes" abgefragt.

Dazu müssen pusch_allowed-Devices den Aufbau haben:

push_allowed_windows.raum<nr>