FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: riker1 am 03 Mai 2018, 08:21:54

Titel: habe es nicht verstanden $DEVICE $device $NAME Variablen
Beitrag von: riker1 am 03 Mai 2018, 08:21:54
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
Titel: Antw:habe es nicht verstanden $DEVICE $device $NAME Variablen
Beitrag 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
Titel: Antw:habe es nicht verstanden $DEVICE $device $NAME Variablen
Beitrag von: riker1 am 03 Mai 2018, 18:58:46
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.
Titel: Antw:habe es nicht verstanden $DEVICE $device $NAME Variablen
Beitrag von: CoolTux am 03 Mai 2018, 19:22:36
weil es die nicht gibt!
Titel: Antw:habe es nicht verstanden $DEVICE $device $NAME Variablen
Beitrag von: amenomade am 03 Mai 2018, 19:30:16
... ausser im DOIF... ;)
Titel: Antw:habe es nicht verstanden $DEVICE $device $NAME Variablen
Beitrag von: riker1 am 04 Mai 2018, 07:21:38
Zitat von: amenomade am 03 Mai 2018, 19:30:16
... ausser im DOIF... ;)

achso, die gehen wirklich nur im DOIF?
Titel: Antw:habe es nicht verstanden $DEVICE $device $NAME Variablen
Beitrag von: amenomade am 04 Mai 2018, 07:44:40
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
Titel: Antw:habe es nicht verstanden $DEVICE $device $NAME Variablen
Beitrag von: riker1 am 07 Mai 2018, 15:59:18
Danke für den Hinweis,

hatte ich zwar gelesen, aber mangels perl Kentnisse nicht eindeutig verstanden und nicht nur auf DOIF bezogen.

Nun klar