FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: teufelchen am 04 November 2021, 09:08:58

Titel: userReadings mit Variablen liefert HASH(xxxxxxx) statt Wert
Beitrag von: teufelchen am 04 November 2021, 09:08:58
Hallo,

ich versuche innerhalb von userReadings eigene Variable zu definieren und dann damit weiterzurechnen.

Jedoch bekomme ich keinen Zahlenwert sondern nur ein HASH(xxx) zurück.

Mein userReadings sieht wie folgt aus:
Z_myreading1 {strftime("%d",localtime)},
Z_myreading2 { my$Testvar = {strftime("%d",localtime)}; $Testvar},


Als Ergebnis bekomme ich für:
Z_myreading1 04
Z_myreading2 HASH(0x8ac37f8)


Wenn ich also über die Variable gehe bekomme ich keinen "lesbaren" Wert.

Wo habe ich den Fehler?
Titel: Antw:userReadings mit Variablen liefert HASH(xxxxxxx) statt Wert
Beitrag von: DeeSPe am 04 November 2021, 09:12:08
Die geschweiften Klammern sehen mir nicht richtig aus.
Probier doch mal ohne.
Z_myreading2 { my$Testvar = strftime("%d",localtime); $Testvar}

Gruß
Dan
Titel: Antw:userReadings mit Variablen liefert HASH(xxxxxxx) statt Wert
Beitrag von: MadMax-FHEM am 04 November 2021, 09:24:31
Zitat von: DeeSPe am 04 November 2021, 09:12:08
Die geschweiften Klammern sehen mir nicht richtig aus.
Probier doch mal ohne.
Z_myreading2 { my$Testvar = strftime("%d",localtime); $Testvar}

Gruß
Dan

Muss nicht zwischen my und $Testvar ein Leerzeichen?

Gruß, Joachim
Titel: Antw:userReadings mit Variablen liefert HASH(xxxxxxx) statt Wert
Beitrag von: teufelchen am 04 November 2021, 09:38:45
Zitat von: DeeSPe am 04 November 2021, 09:12:08
Die geschweiften Klammern sehen mir nicht richtig aus.
Probier doch mal ohne.
Z_myreading2 { my$Testvar = strftime("%d",localtime); $Testvar}

Gruß
Dan

Danke für die schnelle Antwort. Das war der Fehler.

Nun bekomme ich das Ergebnis was ich möchte.
Beide Varianten my$Testvar als auch my $Testvar führen dann zum gleichen korrekten Ergebnis.
Titel: Antw:userReadings mit Variablen liefert HASH(xxxxxxx) statt Wert
Beitrag von: Otto123 am 04 November 2021, 10:20:49
CO² Einsparung :)
Z_myreading2 { strftime("%d",localtime) }
Ohne Formatierung geht auch:
Z_myreading2 { $mday }
Titel: Antw:userReadings mit Variablen liefert HASH(xxxxxxx) statt Wert
Beitrag von: teufelchen am 04 November 2021, 13:26:13
Zitat von: Otto123 am 04 November 2021, 10:20:49
CO² Einsparung :)
Z_myreading2 { strftime("%d",localtime) }
Ohne Formatierung geht auch:
Z_myreading2 { $mday }

Habe ich gerade getestet und bekomme folgende Fehlermeldung:

Error evaluating RO_Test userReading Z_myreading2: Global symbol "$mday" requires explicit package name (did you forget to declare "my $mday"?) at (eval 131507) line 1.


Titel: Antw:userReadings mit Variablen liefert HASH(xxxxxxx) statt Wert
Beitrag von: Otto123 am 04 November 2021, 21:48:27
Ok kann sein...
Zur Erklärung Auszug aus der commandref:
ZitatUm die Verwendung von Datum und Zeitangaben zu vereinfachen, wurden die Variablen $sec, $min, $hour, $mday, $month, $year, $wday, $yday, $isdst und $hms für die Verwendung in PERL-"oneliners" eingeführt (s. unter perldoc -f localtime). Ausnahmen: $month hat einen Wertebereich von 1 bis 12 und $year ist korrigiert von 1900. Weiterhin enthält $hms die Zeit in dem HH:MM:SS Format und $today das aktuellen Datum in YYYY-MM-DD Format.
Die Variabe $we hat den Wert 1 wenn der abgefragte Tag auf ein Wochenende fällt (Z.B. $wday == 0 [Sonntag] oder $wday == 6 [Samstag]), und 0 für die anderen Wochentage. Wenn man das global holiday2we Attribut setzt, dann ist $we ebenfalls 1 bei Urlaubstagen.
Kann aber sein es funktioniert nicht in allen Modulen  oder nicht in userReadings ::) hab es nur in der Kommandozeile probiert

Dann sorry...