Hauptmenü

im AT-Device rechnen

Begonnen von Dracolein, 15 Dezember 2021, 13:18:09

Vorheriges Thema - Nächstes Thema

Dracolein

Hallo zusammen,

folgendes AT-Device funktioniert:


Internals:
   COMMAND    setreading SMATripower6 PVErtragDay [SMATripower6:SPOT_ETODAY]
   DEF        *23:59 setreading SMATripower6 PVErtragDay [SMATripower6:SPOT_ETODAY]
   FUUID      61ae4e=)"/((/)()$/)/$)($d8d7d89cd7
   NAME       at_PVErtragDay
   NR         174
   PERIODIC   yes
   RELATIVE   no
   REP        -1
   STATE      Next: 23:59:00
   TIMESPEC   23:59
   TRIGGERTIME 1639609140
   TRIGGERTIME_FMT 2021-12-15 23:59:00
   TYPE       at
   READINGS:
     2021-12-14 23:59:00   state           Next: 23:59:00
Attributes:
   room       Befehle,Photovoltaik


Das Ding setzt pünktlich vor Null Uhr einen Wert auf das definierte Reading, um dadurch einen Logeintrag zu erzeugen. Alles gut.
Nun möchte ich gern den Wert vorher / 1000 teilen (Wh --> kWh) und habe auch schon einige vergleichbare Rechenoperationen am laufen. Ein Beispiel zum Ableiten wäre aus diesem Forum hier ( https://forum.fhem.de/index.php/topic,74898.msg673695.html?PHPSESSID=60kn47asdjcak0kbv536v4nev0#msg673695 )
Zitatenergy { sprintf("%.1f",ReadingsNum("Verbrauch_aktuell","AVERAGE",0)/1000.0);}
was ich normalerweise als Vorlage nutzen würde.

Ich könnte mir behelfsweise ein weiteres Reading zum "zwischenspeichern" erstellen usw, aber es gibt doch bestimmt auch eine elegantere Methode, wie ich in meine obige Definition bestehend aus FHEM-Code noch diese Rechenoperation einfügen könnte, oder? Wie müsste das aussehen? Ich scheitere an der Syntax.

setreading SMATripower6 PVErtragDay {sprintf("%.2f",ReadingsNum("SMATripower6","SPOT_ETODAY",0)/1000.0);}
::)


Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

yersinia

Command könnte so aussehen (ungetestet):
{
my $val = sprintf("%.2f",ReadingsNum("SMATripower6","SPOT_ETODAY",0)/1000.0);
fhem("setreading SMATripower6 PVErtragDay $val");
}
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

TomLee

#2
Man kann es auch so umsetzen das man im FHEM-Befehl das Ergebnis von Perl anhängt.
Dazu muss man das sprintf auch Klammern und das Semikolon am Ende darf nicht sein.

setreading SMATripower6 PVErtragDay {(sprintf("%.2f",ReadingsNum("SMATripower6","SPOT_ETODAY",0)/1000.0))}