Problem mit ReadingsVal

Begonnen von HRueck, 09 Juni 2016, 14:38:38

Vorheriges Thema - Nächstes Thema

HRueck

Ich möchte aus folgendem reading des statistics Moduls:

Hour: 0.095 Day: 0.561 Month: 0.561 Year: 0.561

den Wert von "Day" in einem ReadingsVal auslesen.

Leider geht "ReadingsVal("<device>","<reading>","$EVTPART4")" nicht.

Mir fehlt leider die zündende Idee, wie das richtig gehen müsste, googeln hat nichts gebracht.
Wer kann mir bitte weiterhelfen?

betateilchen

gib mal in die fhem Befehlszeile im Frontend ein:

{ (split(/ /,ReadingsVal('<deviceName>','<readingName>','')))[3] }

deviceName und readingName musst Du natürlich selbst eintragen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

HRueck

ok, ich kriege den richtigen Wert als Antwort.

werde das ganze jetztmal in meinen code einbauen.

vielen Dank für die schnelle Hilfe!

HRueck

so jetzt funktioniert alles zufriedenstellend  :)

allerdings stellt sich mir die Frage, wie man auf die Lösung kommt.
könntest du mir die Syntax bitte erklären?

bloss den code zu kopieren ist ja praktisch, aber wirklich gelernt habe ich dabei natürlich nichts!

franky08

split zerlegt die Zeichenkette, / / gibt an das am Leerzeichen getrennt wird und die [3] gibt dann das an der dritten Stelle stehende Reading zurück.

Hier was zu split: http://www.hidemail.de/blog/split-in-perl.shtml

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

betateilchen

#5
Zitat von: HRueck am 09 Juni 2016, 15:24:32
allerdings stellt sich mir die Frage, wie man auf die Lösung kommt.

Indem man sich mit perl Grundlagen beschäftigt :)


Zitat von: franky08 am 09 Juni 2016, 16:27:41
und die [3] gibt dann das an der dritten Stelle stehende Reading zurück.

Nicht ganz richtig.

Die drei gibt an, dass man den vierten Wert haben möchte, weil die Zählung bei null beginnt.


[0] = Hour:
[1] = 0.095
[2] = Day:
[3] = 0.561
[4] = Month:
[5] = 0.561
[6] = Year:
[7] = 0.561

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