FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Manul am 05 Mai 2017, 19:12:47

Titel: Rechnen in stateFormat/"set magic"?
Beitrag von: Manul am 05 Mai 2017, 19:12:47
Unterstützt das stateFormat bzw. die "set magic" einfache Rechnungen? Hintergrund: Ich würde einen Energieverbrauch gern in kWh anzeigen, das reading liefert aber Wh.
Titel: Rechnen in stateFormat/"set magic"?
Beitrag von: KernSani am 05 Mai 2017, 19:23:47
Ja, rechnen in Perl geht auf jeden Fall. Einfach ausprobieren

Edit: Hier ein Beispiel (vor set magic):
{if(ReadingVal($name,"power".0)<1000) {sprintf("%i", $VALUE)." W"} else {sprintf("%.2f",ReadingVal($name,"power".0)/1000)." KW"}}
Titel: Antw:Rechnen in stateFormat/"set magic"?
Beitrag von: Manul am 06 Mai 2017, 09:31:16
Danke! Hast Du evtl. auch noch einen Tip, wie ich die ReadingsTimestamp() nach meinen Wünschen formatieren kann? Wo sind die Perl-Funktionen eigentlich dokumentiert?
Titel: Antw:Rechnen in stateFormat/"set magic"?
Beitrag von: zap am 06 Mai 2017, 09:37:12
Einige Funktionen sind hier beschrieben:

https://wiki.fhem.de/wiki/DevelopmentModuleAPI
Titel: Antw:Rechnen in stateFormat/"set magic"?
Beitrag von: Thorsten Pferdekaemper am 06 Mai 2017, 09:52:03
Zitat von: Manul am 06 Mai 2017, 09:31:16
Wo sind die Perl-Funktionen eigentlich dokumentiert?
Hier:
https://fhem.de/commandref.html#perl
und hier:
http://perldoc.perl.org/
Gruß,
   Thorsten
Titel: Antw:Rechnen in stateFormat/&quot;set magic&quot;?
Beitrag von: KernSani am 06 Mai 2017, 09:58:35
Zitat von: KernSani am 05 Mai 2017, 19:23:47
Ja, rechnen in Perl geht auf jeden Fall. Einfach ausprobieren

Edit: Hier ein Beispiel (vor set magic):
{if(ReadingVal($name,"power".0)<1000) {sprintf("%i", $VALUE)." W"} else {sprintf("%.2f",ReadingVal($name,"power".0)/1000)." KW"}}
Edit: mir fällt gersde auf, dass $VALUE noch durch ReadingsValue(..) ersetzt werden muss...
Titel: Antw:Rechnen in stateFormat/"set magic"?
Beitrag von: Manul am 06 Mai 2017, 11:03:49
Danke Euch allen! Dank der perl-links habe ich jetzt folgendes stateFormat:

{ sprintf "Aktuell: %.1f W, Verbrauch: %i kWh seit %s.",ReadingsVal($name,"power",0),ReadingsVal($name,"energy",0)/1000,POSIX::strftime("%-d.%-m., %H:%M",localtime(time_str2num(ReadingsTimestamp($name,"energyOffset",0)))); }

Ist das wirklich die einfachste Art, einen beliebig formatierten Zeitstring zu bekommen? Kann ich die locale fürs strftime irgendwie umstellen (hätte gerne den deutschen Monatsnamen drin)?
Titel: Antw:Rechnen in stateFormat/"set magic"?
Beitrag von: zap am 06 Mai 2017, 13:00:12
Sorry, dachte du meinst die FHEM internen Perl Funktionen und nicht Perl i.A.
Titel: Antw:Rechnen in stateFormat/"set magic"?
Beitrag von: Manul am 06 Mai 2017, 17:57:17
Das hattest Du schon richtig verstanden, vielen Dank für den link!