FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Knallfrosch am 06 April 2018, 14:37:23

Titel: Werte die durch ein at übertragen werden formatieren
Beitrag von: Knallfrosch am 06 April 2018, 14:37:23
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
Titel: Antw:Werte die durch ein at übertragen werden formatieren
Beitrag von: CoolTux am 06 April 2018, 14:42:13
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
Titel: Antw:Werte die durch ein at übertragen werden formatieren
Beitrag von: Frank_Huber am 06 April 2018, 14:53:34
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")
}
Titel: Antw:Werte die durch ein at übertragen werden formatieren
Beitrag von: Knallfrosch am 06 April 2018, 15:00:02
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