FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: iloni am 08 Juni 2019, 13:19:05

Titel: DOIF regex
Beitrag von: iloni am 08 Juni 2019, 13:19:05
Hallo zusammen,

ich habe mehrere Readings in dieser Form :

00a     x
00b     y
00c     z
01a     x
01b     y
01c     z
02a     x
.
.


Wie kann ich mit DOIF auf alle Readings, die mit "a" enden oder "a" enthalten triggern ?
Also statt :

DOIF [device:00a] eq "x" or [device:01a] eq "x" ...


So etwas :

DOIF [device:.*a] eq "x"


Das funktioniert leider nicht :

([device:"a$",0] eq "x")


Danke im Voraus
Gruß
Iloni
Titel: Antw:DOIF regex
Beitrag von: Damian am 08 Juni 2019, 20:44:59
Regex kannst du nur bei Event-Angaben definieren, hier z. B.

Event beinhaltet a im Reading:

DOIF ([device:"a: x"])


Event endet mit a im Reading

DOIF ([device:"a$: x"])



Titel: Antw:DOIF regex
Beitrag von: iloni am 08 Juni 2019, 22:36:40
Danke für deine Antwort !

Zum besseren Verständnis nehmen wir den unteren Code, mein Problem ist, dass ich nicht im Voraus weiß, wie viele Readings (00Abfall, 01Abfall,....) mein Device im Laufe des Tages noch anlegt bzw. wie viele wieder entfernt, deshalb wollte ich regex zum Triggern anwenden : 


                               DOIF ([Termine:00Abfall] =~ "heute Nachmittag" or\
[Termine:01Abfall] =~ "heute Nachmittag" or\
[Termine:02Abfall] =~ "heute Nachmittag" or\
[Termine:03Abfall] =~ "heute Nachmittag")




Diese Varianten haben nicht funktioniert :


  DOIF ([Termine:"Abfall$",0] =~ "heute Nachmittag")

  DOIF ([Termine:"Abfall$: heute Nachmittag"])


Wenn man Regex nur bei Event-Angaben definieren kann, das wird das nicht funktionieren !?
Titel: Antw:DOIF regex
Beitrag von: Damian am 08 Juni 2019, 22:47:37
Zitat von: iloni am 08 Juni 2019, 22:36:40
Danke für deine Antwort !

Zum besseren Verständnis nehmen wir den unteren Code, mein Problem ist, dass ich nicht im Voraus weiß, wie viele Readings (00Abfall, 01Abfall,....) mein Device im Laufe des Tages noch anlegt bzw. wie viele wieder entfernt, deshalb wollte ich regex zum Triggern anwenden : 


                               DOIF ([Termine:00Abfall] =~ "heute Nachmittag" or\
[Termine:01Abfall] =~ "heute Nachmittag" or\
[Termine:02Abfall] =~ "heute Nachmittag" or\
[Termine:03Abfall] =~ "heute Nachmittag")




Diese Varianten haben nicht funktioniert :


  DOIF ([Termine:"Abfall$",0] =~ "heute Nachmittag"

  DOIF ([Termine:"Abfall$: heute Nachmittag"])


Wenn man Regex nur bei Event-Angaben definieren kann, das wird das nicht funktionieren !?

Es war mein Denkfehler, es gibt keine Trennung zwischen Reading und Inhalt, daher sollte es so funktionieren:

DOIF ([Termine:"Abfall: heute Nachmittag"])
Titel: Antw:DOIF regex
Beitrag von: iloni am 09 Juni 2019, 00:04:37
Es klappt, vielen vielen Dank !