[gelöst] DOIF: Regex mit Klammern im IF-Statement

Begonnen von Loredo, 08 November 2015, 20:24:50

Vorheriges Thema - Nächstes Thema

Damian

Zitat von: Loredo am 08 November 2015, 22:57:28
In diesem Fall vielleicht wegen der Mischung aus event-on-change und event-on-update, ist aber nur eine Vermutung.

Gesichert funktionieren tut es eben mit dem doppelt gemoppelten. Wäre aber sicher gut, wenn du da doch noch eine plausible Erklärung für fändest.

Gute Nacht einstweilen ;-)


Gruß
Julian

Ich habe noch mal in der Source geschaut und es bei mir auch nachgestellt. Es ist eigentlich nicht möglich von zusammenhängenden Events mehrere Auslöser zu bekommen, denn sobald ein Match stattfindet wird die Schleife verlassen.

Beispiel:
Internals:
   DEF        ([zaehler:?l-]) (set FS20_000003 on-for-timer 1)
   NAME       di_test
   NR         436
   NTFY_ORDER 50-di_test
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2015-11-09 20:49:36   Device          zaehler
     2015-11-09 20:49:36   cmd_event       zaehler
     2015-11-09 20:49:36   cmd_nr          1
     2015-11-09 20:49:36   e_zaehler_events l-momentan: 0.3935 Aktuell: P: 0.000 L: 0.000 V: 0.425 B: 0.425 P: 6.6 L: 4.9 V: 6.4 B: 4.7 l-Bezug: 0.425 l-Lieferung: 0.000 l-Produktion: 0.000 l-Verbrauch: 0.425 z-Bezug: 2530.2621 z-Lieferung: 5211.3977 z-Produktion: 7320.1820 z-Verbrauch: 4639.0464 time: 1447098576
     2015-11-09 20:49:36   state           cmd_1
   Condition:
     0          EventDoIf('zaehler',$hash->{helper}{triggerDev},$hash->{helper}{triggerEvents},'l-')
   Devices:
     0           zaehler
     all         zaehler
   Do:
     0:
       0          set FS20_000003 on-for-timer 1
   Helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev zaehler
     triggerEvents:
       l-momentan: 0.3935
       Aktuell: P: 0.000 L: 0.000 V: 0.425 B: 0.425
       P: 6.6 L: 4.9 V: 6.4 B: 4.7
       l-Bezug: 0.425
       l-Lieferung: 0.000
       l-Produktion: 0.000
       l-Verbrauch: 0.425
       z-Bezug: 2530.2621
       z-Lieferung: 5211.3977
       z-Produktion: 7320.1820
       z-Verbrauch: 4639.0464
       time: 1447098576
   Internals:
   Itimer:
   Readings:
   State:
   Timerfunc:
   Trigger:
     all         zaehler
Attributes:
   do         always


Obwohl "l-" hier mehrfach vorkommt wird lt. log nur einmal geschaltet.

Gruß

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

JoeALLb

Zitat von: Damian am 08 November 2015, 21:31:38
ja, aber eigentlich verstehe ich diese Konstruktion nicht, warum triggerst du nicht gleich auf die regexp, wie beim notify:
(
[geofancy:?[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}]
)
...



Kann ich den Match aus dem Regex dann später verwenden, beispiensweise als $1?
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Damian

Zitat von: JoeALLb am 08 Januar 2016, 16:13:46
Kann ich den Match aus dem Regex dann später verwenden, beispiensweise als $1?

Wo willst du $1 verwenden?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF