[gelöst] $hour & Co per se verfügbar?

Begonnen von wkarl, 02 Januar 2015, 07:15:22

Vorheriges Thema - Nächstes Thema

wkarl

Hallo,

falls ich die command ref richtig verstehe sollten $hour & Co doch innerhalb von fhem bei verwenden von Perl-Code zur Verfügung stehen.
Verwende ich z.B. bei valueFormat { LogInfo 0, "LogInfo >>> $hour" } wird im log nichts angezeigt.
Bei { my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); Log 0, "LogInfo >>> $hour" } wird Text und Inhalt von $hour angezeigt.

Was übersehe ich hier?

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

betateilchen

Zitat von: wkarl am 02 Januar 2015, 07:15:22
Was übersehe ich hier?

Du übersiehst den Zusatz "oneliners"

ZitatUm die Verwendung von Datum und Zeitangaben zu vereinfachen, wurden die Variablen $sec, $min, $hour, $mday, $month, $year, $wday, $yday, $isdst für die Verwendung in PERL-"oneliners" eingeführt

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

FranzB94

betateilchen hat doch glatt den Syntaxfehler übersehen, es muss PERL-"onlinern" heissen.

Doggiebert

SW: FHEM 5.5, Raspian, XBMC, Testinstallation auf Win7
HW: Raspi B, 32GB SD, enocean Pi, RFXTRX433E, BSC - MwC-32, Onkyo TX-NR709, Samsung UE55F8090, Jung LS-Eno, permundo SmartPlug, KDG-FB 6490cable (ohne FHEM)

betateilchen

bla bla bla...

Die von mir im vorigen Beitrag zitierte Textstelle stammt original aus der commandref und da steht das exakt so drin:

(http://up.picr.de/20570882ce.jpg)

Und diese Bezeichnung macht auch absolut Sinn.

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

wkarl

#5
so, jetzt sehe ich es aber verstehe es nicht. Ich habe jetzt einige Seiten zu dem Thema 'oneliners' durchgelesen. Mein Verständnis ist - es sind so etwas wie 'best practices', wie komme ich mit einer Zeile code zu einem bestimmten Ergebnis. Gut zu wissen, aber ich habe keinen Ansatz zu meinem Problem gefunden.
Nochmal zurück zu meiner anfänglichen Frage.
Der code
{ my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); Log 0, "LogInfo >>> $hour" }
liefert mir im log
2015.01.03 08:55:00 0: LogInfo >>> 8
Lese ich das Zitat aus der command ref verstehe ich $hour kann direkt verwendet werden und liefert entsprechend den Wert der Stunde. Jedoch liefert der code
{ Log 0, "LogInfo >>> $hour" }
nichts, nicht mal eine Fehlermeldung.

Edit: Mit (global) verbose 2 kommt folgende Fehlermeldung:
Global symbol "$hour" requires explicit package name at (eval 634) line 1.

Sollte dieser code die Stunde ausgeben?

Danke und ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

marvin78

Dann mal die Übersetzung: Du kannst bspw. $hour direkt in den DEFs von notifys etc. verwenden. Dabei ist es eigentlich egal, ob es Einzeiler sind oder nicht (auch wenn dort eigentlich nicht mehr als Einzeiler nötig und sinnvoll sind). In den myUtils subs steht dir $hour nicht direkt zur Verfügung. Du kannst es aber entweder an die entsprechende sub übergeben oder, wie du selbst Schon heraus gefunden hast, die Variable selbst mit dem richtigen Wert belegen.

Eine Eingabe von {$hour} in die Befehlszeile gibt aktuell 13 zurück.

wkarl

Ok, jetzt habe ich es auch kapiert. Danke für Eure Geduld. Das war mal ne lange Leitung  :o

$hour und Co sind nur für notify und at per se verfügbar. Ansonsten mit localtime anlegen.

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen