Hauptmenü

DOIF regex

Begonnen von iloni, 08 Juni 2019, 13:19:05

Vorheriges Thema - Nächstes Thema

iloni

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

Damian

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"])



Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

iloni

#2
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 !?

Damian

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"])
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

iloni

Es klappt, vielen vielen Dank !