[gelöst] Array-Variable in Notify

Begonnen von AndyMu, 08 November 2015, 16:48:47

Vorheriges Thema - Nächstes Thema

AndyMu

Hallo *,

ich stell mich grad blöd an, der folgende Codeschnipsel schlägt fehl:
EinbruchFenster:open.* {
if (ReadingsVal("Handys","state","absent") eq "absent") {
my @letztes_handy=split(/_/,ReadingsVal("Handys","LastDevice","Privathandy_Andy"));;
{fhem( "set Alarmierung_$letztes_handy[1] message Es sind noch einbruchsrelevante Fenster offen!")};;
}
}


Ich wollte eigentlich, wenn die Struktur "EinbruchFenster" auf "open" geht, dass geprüft wird ob die Struktur "Handys" (alle Handys) auf "absent" steht.
Jetzt möchte ich aber mit dem "my @..." aus der Handys-Struktur das letzte device auslesen, das die Struktur auf "absent" gesetzt hat.
Ich bekomme aber immer nur eine Fehlermeldung
EinbruchsicherungNotify return value: No such class EinbruchFensterletztes_handy at (eval 2002) line 3, near "{
my EinbruchFensterletztes_handy"
syntax error at (eval 2002) line 3, near "my EinbruchFensterletztes_handy="

weil das "@" durch den Namen der structure ersetzt wird, die die notify auslöst.

Eigentlich wollte ich den Namen, der hinter dem "_" in den Handybezeichnungen kommt, nehmen und durch Alarmierung_$letztes_handy[1] dynmamisch gestalten.

betateilchen

probiers mal mit @@ statt mit @
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

AndyMu

#2
Mönsch... das ist ja einfach.
Danke!

Das blöde ist jetzt, dass in PRESENCE nicht das Device mit der letzten Änderung gespeichert wird, sondern das Device, das zuletzt abgefragt wurde. Dafür habe ich aber hier irgendwo schon ne Lösung gesehen...

betateilchen

Zitat von: AndyMu am 08 November 2015, 17:13:05
Mönsch... das ist ja einfach.

und es steht sogar in der Doku...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

AndyMu

Witzig... seit 5.7 bekomme ich folgende Fehlermeldung:
2015.11.19 18:58:12 3: KritischeFensterOffen return value: Can't use global @@ in "my" at (eval 14278) line 3, near "my @@"
syntax error at (eval 14278) line 3, near "@@letztes_handy"
Global symbol "@letztes_handy" requires explicit package name at (eval 14278) line 4.
Global symbol "@letztes_handy" requires explicit package name at (eval 14278) line 5.

Ich habe einfach ein @ entfernt, jetzt funktioniert es wieder.
Vermutlich hat das was damit zu tun, dass die @ und % nicht mehr für name bzw. event verwendet werden?

marvin78