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
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
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")
}
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