Hauptmenü

[gelöst] Wert von $EVENT

Begonnen von Per, 25 Mai 2016, 09:27:33

Vorheriges Thema - Nächstes Thema

Per

In $EVENT steckt ja sowohl der Name als auch der Wert des auslösenden Events. Kann ich das, ohne auf Perl-Ebene wechselns zu müssen, splitten? $EVENT:d (oder $VALUE :D) geht nicht.
Hintergrund: ich will einem Dummy nur den Wert, nicht den ganzen Event zuweisen: set dummy $EVENT

Wernieman

?? Laut Doku steckt in $EVENT nur der Wert, nicht der Name ??
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

CoolTux

$EVTPART kann da helfen. Z.B.   $EVTPART1
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Damian

Zitat von: Per am 25 Mai 2016, 09:27:33
In $EVENT steckt ja sowohl der Name als auch der Wert des auslösenden Events. Kann ich das, ohne auf Perl-Ebene wechselns zu müssen, splitten? $EVENT:d (oder $VALUE :D) geht nicht.
Hintergrund: ich will einem Dummy nur den Wert, nicht den ganzen Event zuweisen: set dummy $EVENT

Also bei mir steht bei einem Event: 2016-05-25 11:00:19.672 FS20 FS on

nur on im $EVENT.

Gruß

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

marvin78

Es kommt stark auf das Event an. Events bestehen in der Regel tatsächlich aus mehreren Teilen. Es kommt eben darauf an, ob das Event über state oder ein anderes Reading geht.

Damian

Zitat von: Damian am 25 Mai 2016, 11:02:09
Also bei mir steht bei einem Event: 2016-05-25 11:00:19.672 FS20 FS on

nur on im $EVENT.

Gruß

Damian

Wenn es kein Status ist, dann handelt es sich normalerweise um ein bestimmes Reading, welches den Wert beinhaltet, dann kannst du [$DEVICE:<Reading>] benutzen, dort steht dann der entsprechende Wert drin, den du nutzen kannst.


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

Per

Zitat von: Damian am 25 Mai 2016, 11:18:39ein bestimmes Reading
Leider ein Userreading, welches über RegEx ermittelt wird.

Zitat von: CoolTux am 25 Mai 2016, 09:55:42$EVTPART kann da helfen. Z.B.   $EVTPART1
Geht das nicht nur bei notify? Zumindest finde ich nix dazu in der CommandRef.

CoolTux

Da Du nicht gesagt hast auf welcher Art Du dem Dummy das Zuweisen willst, habe ich das einfach mal so reingeworfen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Per

Nun, wir sind bei DOIF ;).
Davon abgesehen, ich dachte, ich hatte irgendwo mal ne "Absichtserklärung" bzgl. $EVTPART1 und DOIF gelesen.
Aber leider nicht wiedergefunden.

Wernieman

Wobei es "echt bescheuert" wäre, wenn DOIF eine Globale Variable wie $EVENT anders behandelt als alle anderen Tools.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Damian

#10
Zitat von: Wernieman am 25 Mai 2016, 15:08:42
Wobei es "echt bescheuert" wäre, wenn DOIF eine Globale Variable wie $EVENT anders behandelt als alle anderen Tools.

$EVENT ist nicht global, sondern wird im jeweiligen Modul definiert.

Es gibt da feine Unterschiede, da DOIF etwas anderen Funktionsumfang als notify hat ;)

Im Gegensatz zu notify, wird DOIF auch ohne Regex getriggert. Wenn man z. B. nur einen Status abfragt ([Dummy]), dann wird bei geblockten Events (mehrere Zeilen zu einem Trigger) einfach die erste Zeile in $EVENT gepackt, da es ja keine Regex in diesem Fall gibt. Mit $EVENTS gibt es dagegen alle Event-Zeilen eines Triggers - das gibt es z. B. bei notify nicht, weil es anhand der Regex für jede passende Zeile die Befehle ausführt - das macht wiederum DOIF nicht.

$EVTPART1 habe ich mir bisher gespart, da ich davon ausging, dass man entsprechende Readings abfragen kann.


Gruß

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

Per

OK, aktuell behelfe ich mir damit, dass ich in der Auswertung :d anhänge. Vllt. gibt es später mal ne andere Lösung.

Damian

Zitat von: Per am 25 Mai 2016, 22:45:18
OK, aktuell behelfe ich mir damit, dass ich in der Auswertung :d anhänge. Vllt. gibt es später mal ne andere Lösung.

Wenn du im Sourcecode von DOIF schaust, wirst du $EVTPART finden, bisher allerdings noch auskommentiert.

Gruß

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

Per

Habe ich gesehen, als ich die Hilfe durchsucht habe. Da hat F3 nur die beiden auskommentierten Zeilen gefunden.

Wernieman

@Damian
Sorry, habe mich alsch ausgedrückt.

Hätte es anders schreiben sollen:

ZitatEs ist blöde, wenn "Grundsätzliche" Variablen wie $EVENT in den verschiedenen Modulen unterschiedlich behandelt werden. So ist die pflege der Doku noch viel schwieriger, da immer mehr Modulabhängig. Besser währe es, enn solche "Grundsätzlichen" Variablen überall gleich sind. Bei Unterschieden eben unerschiedliche Variablennamen. Ansonsten hat man beim Wechsel von Modulen zusätzliche, unnötige Fehlerquellen.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html