DOIF neue Features: Generalisierung, $DEVICE, $EVENT, Attribut notexist

Begonnen von Damian, 28 Dezember 2015, 22:06:42

Vorheriges Thema - Nächstes Thema

Per

Aha, danke.
Aber:
Zitat von: CommandRef■ dieses Attribut muss beim Empfänger (notify, FileLog, etc) gesetzt werden.
Und gerade bei notify funktionierte es bisher ohne :o , ich wollte ja auf DOIF umstellen.
Leider kann ich gerade nicht nachschauen, kann DOIF addStateEvent?

Loredo

Zitat von: Damian am 25 Januar 2016, 11:21:34
Poste mal list deines Moduls. Aktuelle Version V 0.5 hast du schon?


Habe die 0.5 installiert gehabt und gerade nochmal mit der 0.6 getestet (inkl. shutdown restart). Funktioniert leider nicht.


Ich habe mal das List in eine Textdatei kopiert, falls Zeilenumbrüche ö.ä. relevant werden.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Damian

Zitat von: Loredo am 28 Januar 2016, 16:31:48

Habe die 0.5 installiert gehabt und gerade nochmal mit der 0.6 getestet (inkl. shutdown restart). Funktioniert leider nicht.


Ich habe mal das List in eine Textdatei kopiert, falls Zeilenumbrüche ö.ä. relevant werden.
2016-01-28 16:27:30   e_regexp_c1     rr_Julian:locationPresence: absent locationLat: xx.xxx locationLong: xx.xxxx locationAddr: Strasse 1A


Dein Event endet offenbar nicht mit "locationPresence", sondern mit "locationPresence: absent", deswegen kann es mit deiner Definition nicht funktionieren.

Deswegen solltest du eher:

["^rr_:^locationPresence"]  oder ["^rr_:^locationPresence: absent"]

definieren.

Gruß

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

Damian

Version 0.8.

$EVENT bzw. $EVENTS wird jetzt mit "timer_<nr>" belegt, wenn der Trigger vom Timer kommt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Zitat von: Per am 28 Januar 2016, 11:49:18kann DOIF addStateEvent?
Hat es nicht.
Aber - ich habe es hinbekommen:
define DoorLog DOIF([".*\.Door$:^open$|^closed$"]) (log $DEVICE $EVENT)
mit attr DoorLog do always (wg. nur einem Zustand).
Ich könnte zwar schwören, dass ich das schon mal probiert habe, aber vllt. hatte ich da auch nen Tippfehler dabei. Oder das "do always" vergessen. Egal, jetzt geht es :D.

Damian

Version 0.9

1) Events werden jetzt in $EVENTS nicht mit Leerzeichen, sondern mit Komma getrennt dargestellt. Damit kann man einzelne Ereignisse eines Triggers besser auseinander halten.

2) Bisherige Angabe für Event-Trigger [<Device>:?<Regex für Event>] lässt sich jetzt auch wie folgt angeben  [<Device>:"<Regex für Event>"]
Damit wird zum Einen die neue Syntax (Regex in Anführungszeichen) vereinheitlicht zum Anderen ist das Fragezeichen an dieser Stelle immer etwas verwirrend gewesen, da es ja auch ein Fragezeichen für "nicht triggern" vor einem Device gibt. Die bisherige Syntax bleibt natürlich aus Kompatibilitätsgründen bestehen.

Gruß

Damian

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

Damian

Neue Version wurde eingecheckt.

Ab morgen per Update verfügbar.

Gruß

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

Loredo

Zitat von: Damian am 28 Januar 2016, 17:29:46
Dein Event endet offenbar nicht mit "locationPresence", sondern mit "locationPresence: absent", deswegen kann es mit deiner Definition nicht funktionieren.


Hm, ok. Finde ich etwas verwirrend, dass das Regex auf einen langen state-ähnlichen String angewendet wird. Intuitiv hätte ich eher erwartet, dass pro Event das Regex ausgewertet wird und nicht zunächst aus allen Events ein langer String gebildet wird. Das ist definitiv ein großer Unterschied zu dem wie man ansonsten in FHEM mit Events umgeht. Hat das Performancegründe oder weshalb hast du dich dafür entschieden? Was hat es da mit der Trennung per , im Reading jetzt aufsich?
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Damian

Zitat von: Loredo am 31 Januar 2016, 15:37:09

Hm, ok. Finde ich etwas verwirrend, dass das Regex auf einen langen state-ähnlichen String angewendet wird. Intuitiv hätte ich eher erwartet, dass pro Event das Regex ausgewertet wird und nicht zunächst aus allen Events ein langer String gebildet wird. Das ist definitiv ein großer Unterschied zu dem wie man ansonsten in FHEM mit Events umgeht. Hat das Performancegründe oder weshalb hast du dich dafür entschieden? Was hat es da mit der Trennung per , im Reading jetzt aufsich?
Es wird wie beim Notify jede Eventzeile einzeln ausgewertet. Alle Events eines Triggers werden nur zur Information in einer Zeile dargestellt.

Gruß

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

Loredo

Sehr gut, dann ist das doch so wie ich zunächst annahm.


Hatte mich zuerst gefragt weshalb ^locationPresence$ als Trigger nicht funktioniert. Mein Denkfehler war dabei, dass ich Reading und Value bei einem Event immer getrennt betrachte und es irgendwie nicht in meinen Schädel geht, dass das zusammen gehört...


Denke nun ist alles klar, danke ;)
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Damian

Zitat von: Loredo am 31 Januar 2016, 17:14:31
Sehr gut, dann ist das doch so wie ich zunächst annahm.


Hatte mich zuerst gefragt weshalb ^locationPresence$ als Trigger nicht funktioniert. Mein Denkfehler war dabei, dass ich Reading und Value bei einem Event immer getrennt betrachte und es irgendwie nicht in meinen Schädel geht, dass das zusammen gehört...


Denke nun ist alles klar, danke ;)

Am besten nimmst du auch die aktuelle Version, die ich gestern eingecheckt habe. Ich habe noch an einigen Sachen gedreht.
Insbesondere heißt das neue Reading für die neue Regex-Syntax: "matched_event...", dort wird auch nur das Event angezeigt, was tatsächlich "gematched" hat.

Was man allerdings wissen sollte:

In einem Punkt unterscheidet sich funktionsbedingt die Vorgehensweise im Vergleich zu Notify. Im DOIF-Modul kann innerhalb eines Triggers höchstens nur eine Eventzeile "zutreffen" und nicht mehr.

Beispiel:

mit
DOIF ([""]) ({Log 3, "$EVENT"}) wird man nicht alle Events loggen, sondern nur jeweils die erste Eventzeile eines Triggers.

mit

DOIF ([""]) ({Log 3, "$EVENTS"}) werden dagegen alle Events dargestellt, allerdings pro Trigger alle in einer Zeile mit Komma getrennt.

Gruß

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

Loredo

Zitat von: Damian am 31 Januar 2016, 17:42:58
Am besten nimmst du auch die aktuelle Version, die ich gestern eingecheckt habe. Ich habe noch an einigen Sachen gedreht.
Insbesondere heißt das neue Reading für die neue Regex-Syntax: "matched_event...", dort wird auch nur das Event angezeigt, was tatsächlich "gematched" hat.


Ja hab ich gesehen. Macht absolut Sinn und ist extrem benutzerfreundlich so  ;)


Zitat von: Damian am 31 Januar 2016, 17:42:58
Was man allerdings wissen sollte:


Ja das sind gute Hinweise. Einer wäre vermutlich noch, dass man nur einen einzigen Regex-Trigger gleichzeitig anwenden kann bzw. dass mehrere Regex-Trigger durch "and" verknüpft keinen Sinn machen, höchstens mit "or". Richtig?
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Damian

Zitat von: Loredo am 31 Januar 2016, 17:48:01
Ja das sind gute Hinweise. Einer wäre vermutlich noch, dass man nur einen einzigen Regex-Trigger gleichzeitig anwenden kann bzw. dass mehrere Regex-Trigger durch "and" verknüpft keinen Sinn machen, höchstens mit "or". Richtig?

ja, im Normalfall ja, es sei denn beide Regex-Angaben finden jeweils einen Treffen innerhalb der Eventzeilen eines Triggers - das wird allerdings normalerweise weniger interessant sein.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

P.A.Trick

Zitat von: Damian am 30 Januar 2016, 23:28:47
Neue Version wurde eingecheckt.

Ab morgen per Update verfügbar.

Gruß

Damian

Bombe, vielen Dank dafür! Ich glaube nun haben wir alle Funktionen die benötigt werden! Danke Damian!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Damian

Zitat von: P.A.Trick am 02 Februar 2016, 23:09:23
Bombe, vielen Dank dafür! Ich glaube nun haben wir alle Funktionen die benötigt werden! Danke Damian!

Noch nicht alle ;)

Es sollen noch Datumsangaben hinzukommen z. B.  [2015-10-30 10:00] oder ähnlich.

Gruß

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