Hauptmenü

UserReadings

Begonnen von Gisbert, 08 Oktober 2025, 19:13:13

Vorheriges Thema - Nächstes Thema

Gisbert

Hallo zusammen,

ich bin gerade bei der Definition eines UserReadings über einen Fehler gestolpert, den ich so nicht erwartet hätte.

summer {if (80 <= $yday <= 264) {"yes"} else {"no"}}
Fehlermeldung im Logfile:
Error evaluating <Device> userReading summer: Global symbol "$yday" requires explicit package name (did you forget to declare "my $yday"?) at (eval 54967821) line 1.
Gebe ich jedoch
{if (80 <= $yday <= 264) {"yes"} else {"no"}}in der Fhem-Kommandozeile ein, bekomme ich die erwartete Antwort no.

Warum kommt es zu diesem Verhalten?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

betateilchen

Weil es in FHEM "spezielle" Variablen gibt, die nur in der Befehlszeile zur Verfügung stehen, aber nicht FHEM-systemweit. Dazu gehört z.B. auch $hms oder $today.
Du kannst diese Variablen in "onelinern" verwenden, die direkt über die Befehlszeile eingegeben werden, z.B. um notify mit perl Code anzulegen.

Wenn Du diese Variablen in eigenem Code verwenden möchtest, musst Du sie Dir selbst erzeugen oder beispielsweise beim Aufruf von Funktionen der 99_myUtils.pm als Parameter übergeben.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!