[gelöst] Perl Variablen plötzlich defekt?

Begonnen von drobskind, 08 September 2017, 20:35:19

Vorheriges Thema - Nächstes Thema

drobskind

Hallo,
einige meiner notifys funktionieren seit einiger Zeit plötzlich nicht mehr.  :(

Ich kann mir das gerade nicht wirklich erklären und finde auch keine Lösung.
Somit habe ich einen ganz einfaches notify erstellt, welches aber auch nicht funktioniert:


11110_C:.* {
my $AZ = "Hugo";
{Log 1, $AZ}
};


Ergibt folgendes Ergebnis im LOG:
2017.09.08 20:33:41 1: ERROR evaluating my $EVENT='off';my $TYPE='dummy';my $SELF='testnotify';my $NAME='11110_C';my $EVTPART0='off';{Log 1, $AZ}
}: Global symbol "$AZ" requires explicit package name at (eval 254169) line 1.
Unmatched right curly bracket at (eval 254169) line 2, at end of line
syntax error at (eval 254169) line 2, near "}
}"


jetzt fühle ich mich echt blöd  :o, weil soviel kann man ja bei dem bisschen Quellcode nicht falsch machen. Zudem es bis vor einigen Wochen noch lief...

Bitte um Hilfe.
Danke


->> Lösung: ich hatte ein unnötiges Semikolon ";" hinter der letzen geschweiften Klammer "}"

viegener

Lass doch mal die inneren geschweiften Klammern weg
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

drobskind

Hallo Viegener,

danke, somit ist jetzt schon mal die Fehlermeldung weg.
Im Log wird mir dennoch nicht der Wert der Variablen ausgegeben.
Beim Suchen habe ich einen Thread gefunden indem erwähnt wird, dass "Log" veraltet ist.
Ist es eventuell schon heraus gefallen und muss nun ersetzt werden?
Wenn ja, wie kann ich jetzt aus einem perl ins fhem log schreiben?

Danke

CoolTux

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

drobskind

Hallo CoolTux,

danke für den Hinweis. Dann werde ich mal auf Log3 umstellen. Gibt es dazu auch eine Doku? Habe gelesen, das die 1 für das loglevel/verbose steht. Würde gern genauer wissen, wie ich es sinnvoll nutze.
Eine Reine Logausgabe hat in meinem notify nun funktioniert.
Sobald ich die Variable dazu deklariert habe ging wieder nichts mehr.
Nachdem ich nun hinter jeden Befehl 2 Semikolon geschrieben habe funktioniert er plötzlich.
Ich verstehe nur nicht, warum es früher ohne diese / bzw mit einem Semikolon ging.

So tuts jetzt auch mit dem "alten" Log 1:

11110_C:.* {
my $VAR = "Hugo";;
Log3(undef, 1, "Hallo".$VAR);;
Log 1, "Hallo".$VAR;;
};


Log:
2017.09.08 21:47:21 1: HalloHugo
2017.09.08 21:47:21 1: HalloHugo

CoolTux

Kann es sein das Du direkt in die fhem.cfg schreibst?
Es gibt im Wiki ein Developer Guide
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

viegener

Das doppelte Semikolon ist in der fhem.cfg oder bei der Definition über die FHEM-Komanndozeile nötig. Im Editor für notifys und in der Anzeige wird nur ein Semikolon verwendet. Aus Deinem Post ist aber nicht klar, von wo Du den Text kopiert hast / einträgst?
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

drobskind

Hallo CoolTux,

in der fhem.cfg wird sowas normalerweise mit doppelten Semikolon angezeigt und zusätzlich einem Backslash. Das habe ich auch schon gesehen, somit kann ich nachvollziehen, dass du das denkst.
Aber nein.
Ich schreibe es in das Notify. Indem ich auf "DEF" klicke und dann in die sich öffnene Textbox schreibe. Anschließend bestätige ich das mit "modify <notifiyname>"

Deswegen bin ich ja auch so verwirrt  :o

drobskind

Lustigerweise steht es in der fhem.cfg nun mit 4x Semikolon  ;D

CoolTux

Interessant. Ich werde das morgen mal auf meinem Testsystem nachstellen. Erklären kann ich es mir nicht.

Und wenn du my $VAR Mal direkt nach dem ersten { schreibst? Nur so eine Idee
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

drobskind

Du meinst so? -> funktioniert nicht mehr.
11110_C:.* {my $VAR = "Hugo";
Log3(undef, 1, "Hallo".$VAR);
Log 1, "Hallo".$VAR;
};


So tut es noch (2x ; ), aber das ist ja nicht das Ziel:
11110_C:.* {my $VAR = "Hugo";;
Log3(undef, 1, "Hallo".$VAR);;
Log 1, "Hallo".$VAR;;
};

drobskind

#11
Hier noch ein Auszug mit VERBOSE = 5:
2017.09.08 22:13:50 3: n_Licht_11110_C_off return value: -1
2017.09.08 22:13:50 5: Cmd: >{my $VAR = "Hugo"<
2017.09.08 22:13:50 5: Cmd: >Log3(undef, 1, "Hallo".$VAR)<
2017.09.08 22:13:50 5: Cmd: >Log 1, "Hallo".$VAR<
2017.09.08 22:13:50 5: AnalyzeCommand: trying Log2Syslog for Log
2017.09.08 22:13:50 5: Cmd: >}<
2017.09.08 22:13:50 5: End notify loop for 11110_C



Und um auf Nummer sicher zu gehen, habe ich gerade nochmal "update" ausgeführt. Das habe ich auch bereits gestern getan. Geändert hat dies aber auch nichts.
Kann es sein, dass auf meinem Raspi ein perl Paket fehlt/ein update benötigt? ("sudo apt-get update" UND "sudo apt-get upgrade" habe ich gestern aber auch bereits ausgeführt.)

Was mir gerade noch in den Sinn kommt:
kann es sein, dass durch ein anderes notify, at oder doif ein "Fehler" in der fhem.cfg entstanden ist, der sich auf andere (korrekte) notify negativ auswirkt?

CoolTux

Kann ich nicht glauben, ist alles in FHEM. Ich Versuch morgen mal zu testen.
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

drobskind

Hallo CoolTux,

danke ich würde mich freuen wenn du dir das morgen anschaust. Danke!

Übrigens ALLES GUTE ZU DEINEM 10000 Post!!!! *party*

CoolTux

Oh danke. Sehe gerade sind schon 10002. Man wie die Zeit vergeht.
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