FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: SeriousPat am 23 Juli 2019, 20:37:10

Titel: Ein DOIF für alle Geräte mit Suffix übergabe
Beitrag von: SeriousPat am 23 Juli 2019, 20:37:10
Hallo zusammen,
ich habe folgendes DOIF:
define DI_Fenter_Rollladen DOIF (([Sensor_Fenster_Gaeste_WC:state] eq "open") and ([Rollladen_Gaeste_WC:state] eq "off")) (set Rollladen_Gaeste_WC pct 50)

Welches meinen Rollladen im GasteWC auf 50% stellt wenn das Fenster geöffnet wird.
Da ich eine Feste Namenskonvention habe, möchte ich den DOIF so umbauen das er für alle Fenstersenoren/Rollläden gilt.
Leider finde ich nicht heraus wie ich den Suffix welche ich in der Bedingung mit * angebe in das SET bekomme.

define DI_Fenter_Rollladen DOIF (([Sensor_Fenster_*:state] eq "open") and ([Rollladen_{WERT AUS DEM *}:state] eq "off")) (set Rollladen_{WERT AUS DEM *} pct 50)

Kann mir da jemand weiterhelfen?
Titel: Antw:Ein DOIF für alle Geräte mit Suffix übergabe
Beitrag von: MadMax-FHEM am 23 Juli 2019, 21:26:09
Bei RegEx gibt es kein "Wildcard"...

...ein "egal was dann kommt" wird so gemacht: .*

Also "Punkt-Stern"...
...Punkt: "beliebiges Zeichen"
...Stern: "beliebig viele"

Nutze allerdings kein DOIF, von daher weiß ich nicht, ob das schon alles war...

EDIT: {WERT AUS DEM *} soll was sein? Wie "gebildet" werden?

Gruß, Joachim
Titel: Antw:Ein DOIF für alle Geräte mit Suffix übergabe
Beitrag von: Otto123 am 23 Juli 2019, 22:13:07
Hi,

bei set kannst Du devspec verwenden. So z.B. wie bei list erstmal zum anzeigen
list Rollladen_.*:FILTER=state=off
set Rollladen_.*:FILTER=state=off pct 50

Das spart schon mal die zweite Abfrage.
Idee: Man könnte auf den Sensor_Fenster_.* triggern und in Perl Im Namen des Gerätes Sensor_Fenster_ durch Rollladen_ tauschen.
Ein Versuch - Noch nicht komplett getestet:
Ich befürchte der trigger "open" stimmt nicht, müsstest Du mal im Eventmonitor als Beispiel erzeugen.
https://wiki.fhem.de/wiki/Event_monitor
Kann sein der muss so ähnlich aussehen "Sensor_Fenster_.*:.open.*"
Der trigger sollte klappen :) mit einem HM Sensor getestet
define n_SensorFenster Sensor_Fenster_.*:open {$NAME =~ s/Sensor_Fenster_/Rollladen_/;; fhem("set $NAME:FILTER=state=off pct 50")}

Gruß Otto
Titel: Antw:Ein DOIF für alle Geräte mit Suffix übergabe
Beitrag von: Damian am 23 Juli 2019, 23:18:01
https://forum.fhem.de/index.php/topic,101394.msg948456.html#msg948456 könnte ein Ansatz sein
Titel: Antw:Ein DOIF für alle Geräte mit Suffix übergabe
Beitrag von: Per am 30 Juli 2019, 09:55:45
Zitat von: Otto123 am 23 Juli 2019, 22:13:07Das spart schon mal die zweite Abfrage.
Vorsicht, hier wird jedes Rollo, welches "off" ist, angesprochen, sobald ein Fenster geöffnet wird.

Die zweite Abfrage passt aber. Und, im GGsatz zur Ausgangsformel, wird auch nix gemacht, wenn ein Rollo auf "off" geht (dem man dort aber mit einem ? abhelfen könnte).
Titel: Antw:Ein DOIF für alle Geräte mit Suffix übergabe
Beitrag von: Otto123 am 30 Juli 2019, 11:17:32
Zitat von: Per am 30 Juli 2019, 09:55:45
Vorsicht, hier wird jedes Rollo, welches "off" ist, angesprochen, sobald ein Fenster geöffnet wird.
Da stand aber drüber Beispiel!
ZitatSo z.B. ....
;D
Das notify von mir behandelt explizit die zugehörigen Fenster, wenn die Namen konsequent stimmen.

Man muss solche Filter immer explizit, am Einfachsten mit list testen!
Und vielleicht noch um ein weiteres Kriterium (z.B. TYPE=) "schärfen".

Gruß Otto