Werte die durch ein at übertragen werden formatieren

Begonnen von Knallfrosch, 06 April 2018, 14:37:23

Vorheriges Thema - Nächstes Thema

Knallfrosch

Hallo,

ich habe mir ein at gebaut das wie folgt aussieht:
*23:59:10 {
my $d1 = "Gesamtertrag: ".(ReadingsVal("Solarertrag","energyDay",0)/1000)." kWh ";
my $d2 = "Erparnis: " . (ReadingsVal("Solarertrag","energyDay",0)*0.2651/1000)." EUR ";
fhem ("set Solarertrag_Log $d1 $d2");}


Mir werden damit 2 Werte in ein Dummy zum loggen geschrieben.
Die errechnete Ersparnis sollte aber nur mit 2 Nachkommastellen geschrieben werden.

Mit stateformat komme ich ja nicht weiter, da ja alles komplett in das state Reading geschrieben wird und dann wie folgt aussieht:

state       Gesamtertrag: 2.282 kWh Erparnis: 0.6049582 EUR     2018-04-06 14:35:37

kann mir bitte jemand helfen wie ich es schaffe das es dann so aussieht:



state       Gesamtertrag: 2.282 kWh Erparnis: 0.61 EUR    2018-04-06 14:35:37

Vielen Dank.


Grüße

CoolTux

#1
http://www.perl-community.de/bat/poard/thread/12280

Man beachte aber bitte die weiter führende Diskussion
http://www.perl-community.de/bat/poard/thread/11767

Hier noch etwas aus unserem Forum selber
https://forum.fhem.de/index.php?topic=17743.0


Und hier noch eine Möglichkeit
https://forum.selfhtml.org/self/1998/nov/17/perl-zahlen-runden-auf-x-dez-stellen/4142




Die hundert Treffer im englischen habe ich Dir erspart
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Frank_Huber

Zitat von: Knallfrosch am 06 April 2018, 14:37:23
ich habe mir ein at gebaut das wie folgt aussieht:
*23:59:10 {
my $d1 = "Gesamtertrag: ".(ReadingsVal("Solarertrag","energyDay",0)/1000)." kWh ";
my $d2 = "Erparnis: " . (ReadingsVal("Solarertrag","energyDay",0)*0.2651/1000)." EUR ";
fhem ("set Solarertrag_Log $d1 $d2");}


Mir werden damit 2 Werte in ein Dummy zum loggen geschrieben.
Die errechnete Ersparnis sollte aber nur mit 2 Nachkommastellen geschrieben werden.

Mit stateformat komme ich ja nicht weiter, da ja alles komplett in das state Reading geschrieben wird und dann wie folgt aussieht:

state       Gesamtertrag: 2.282 kWh Erparnis: 0.6049582 EUR     2018-04-06 14:35:37
kann mir bitte jemand helfen wie ich es schaffe das es dann so aussieht:
state       Gesamtertrag: 2.282 kWh Erparnis: 0.61 EUR    2018-04-06 14:35:37

ungetestet, aber so sollte das gehen:
{
my $wert1=ReadingsVal("Solarertrag","energyDay",0)/1000);
my $wert2=ReadingsVal("Solarertrag","energyDay",0)*0.2651/1000);
my $wert3=round($wert2,2);
fhem ("set Solarertrag_Log Gesamtertrag: $wert1 KWh Ersparnis: $wert3 EUR")
}

Knallfrosch

Danke für eure Hilfe

Ich habe es nun so gelöst:

*23:59:10 {
my $d1 = "Ertrag: ".(ReadingsVal("Solarertrag","energyDay",0)/1000)." kWh ";
my $d2 = "Ersparnis: ". sprintf "%.2f EUR" ,  (ReadingsVal("Solarertrag","energyDay",0)*0.2651/1000);
fhem ("set Solarertrag_Log $d1 $d2");}


Vielleicht nicht sehr schön, aber es funktioniert und bringt mir den gewünschten State- bzw. Logeintrag:


Ertrag: 2.451 kWh Ersparnis: 0.65 EUR


Grüße