Hi
irgendwie ist es mir unklar wie ich die Variablen verwenden kann.
habe ein notify mit einem Send Message und möchte die Variablen verwenden.
$NAME, $SELF, $hms, gehen, aber $DEVICE will er nicht, $EVENTS ebenfalls nicht, ( die auch nicht $events, $device)
habe ich Fhem und Perl eben irgendwie vermischt?
Funktioniert:
defmod 1_V_FTK3_open_on notify HM_480AA7.open {my $alias = AttrVal($NAME,"alias",$NAME);; {fhem("set TR_BOT message Von $SELF -mit FHEM klammer -NAME: $NAME und Event: $EVENT !!-Value: Value($NAME)-!-STATE : ".ReadingsVal("$NAME","state","")."-- ($hms) Uhr ✓ count: ".ReadingsVal("$NAME","trigger_cnt","")."!!ALIAS $alias!") }}
Funktioniert nicht :
defmod 1_V_FTK3_open_on notify HM_480AA7.open {my $alias = AttrVal($NAME,"alias",$NAME);; {fhem("set TR_BOT message Von $SELF -mit FHEM klammer -NAME: $NAME und Event: $EVENT !!-Value: Value($NAME)-!-STATE : ".ReadingsVal("$NAME","state","")."-- ($hms) Uhr ✓ count: ".ReadingsVal("$NAME","trigger_cnt","")."!!ALIAS $alias! --$DEVICE ") }}
Fehler: Global symbol "$DEVICE" requires explicit package name (did you forget to declare "my $DEVICE"?) at (eval 1771402) line 1
Danke für die Klärung
Thomas
$DEVICE und $EVENTS sind auch keine FHEM Variablen.
$EVENT ist noch eine, $DEVICE aber nicht. Das heißt $NAME
Zitat von: CoolTux am 03 Mai 2018, 09:12:14
$DEVICE und $EVENTS sind auch keine FHEM Variablen.
$EVENT ist noch eine, $DEVICE aber nicht. Das heißt $NAME
Hi
ok, danke, dachte wenn ich die dazugehörigen perl variablen nutze müsste es gehen: $device, $events, geht aber auch nicht.
weil es die nicht gibt!
... ausser im DOIF... ;)
Zitat von: amenomade am 03 Mai 2018, 19:30:16
... ausser im DOIF... ;)
achso, die gehen wirklich nur im DOIF?
Man muss nur lesen.
Zitat von: CommandRef/DOIFIn der Bedingung und im Ausführungsteil werden die Schlüsselwörter $SELF durch den eigenen Namen des DOIF-Moduls, $DEVICE durch das aktuelle Device, $EVENT durch die passende Eventzeile, $EVENTS kommagetrennt durch alle Eventzeilen des Triggers ersetzt.
Entsprechend können Perl-Variablen in der DOIF-Bedingung ausgewertet werden, sie werden in Kleinbuchstaben geschrieben. Sie lauten: $device, $event, $events
Zitat von: CommandRef/notifyIn der Anweisung von Notify kann das auslösende Ereignis (Event) genutzt werden:
Die Anweisung $EVENT wird das komplette Ereignis (Event) beinhalten, z.B. measured-temp: 21.7 (Celsius)
$EVTPART0,$EVTPART1,$EVTPART2,etc enthalten die durch Leerzeichen getrennten Teile des Events der Reihe nach (im Beispiel also $EVTPART0="measured-temp:", $EVTPART1="21.7", $EVTPART2="(Celsius)".
Diese Daten sind verfügbar als lokale Variablen in Perl, als Umgebungs-Variablen für Shell-Scripts, und werden als Text ausgetauscht in FHEM-Kommandos.
$NAME und $TYPE enthalten den Namen bzw. Typ des Ereignis auslösenden Gerätes, z.B. myFht und FHT
Danke für den Hinweis,
hatte ich zwar gelesen, aber mangels perl Kentnisse nicht eindeutig verstanden und nicht nur auf DOIF bezogen.
Nun klar