Hallo,
ich möchte in stateFormat 2 Werte anzeigen.
{ my $Wert = ReadingsNum($name,"total_pac",0);
my $Ladu = ReadingsNum($name,"chargestatus",0);
my $string = ' ';
if ($Wert > 0) {
$string = sprintf("Einspeisung: %.1f W ",$Wert);
}
elsif ($Wert <= 0) {
$string = sprintf("Ladung: %.1f W ",$Wert);
}
if ($Wert > 0) {
return '<font color="Yellow"><b>' . $string . '</b></font>'}
elsif ($Wert <= 0) {
return '<font color="Green"><b>' . $string . '</b></font>'}
else {return $string }
}
Wie bekomme ich my $Ladu mit dem Zusatz "Status" hinter den 1. Wert?
Soll dann z.B. so aussehen: Einspeisung: 500 W Status 50 %
Danke für Hilfe und VG Dieter
Vielleicht habe ich ja das Problem nicht so recht verstanden, aber folgendes müsste eigentlich gehen
{ my $Wert = ReadingsNum($name,"EnergyExpected",0);
my $Ladu = ReadingsNum($name,"Global.Radiation",0);
my $string = ' ';
if ($Wert > 0) {
$string = sprintf("Einspeisung: %.1f W ",$Wert);
}
elsif ($Wert <= 0) {
$string = sprintf("Ladung: %.1f W ",$Wert);
}
$string .= sprintf("Status: %.1f %",$Ladu);
if ($Wert > 0) {
return '<font color="Yellow"><b>' . $string . '</b></font>'}
elsif ($Wert <= 0) {
return '<font color="Green"><b>' . $string . '</b></font>'}
else {return $string }
}
Falls der Status nicht die Farbe und den Font übernehmen soll, dann könnte es so aussehen:
{ my $Wert = ReadingsNum($name,"EnergyExpected",0);
my $Ladu = ReadingsNum($name,"Global.Radiation",0);
my $string = ' ';
if ($Wert > 0) {
$string = sprintf("Einspeisung: %.1f W ",$Wert);
}
elsif ($Wert <= 0) {
$string = sprintf("Ladung: %.1f W ",$Wert);
}
#$string .= sprintf("\nStatus: %.1f %",$Ladu);
if ($Wert > 0) {
return '<font color="Yellow"><b>' . $string . '</b></font>' . sprintf("\nStatus: %.1f %",$Ladu)}
elsif ($Wert <= 0) {
return '<font color="Green"><b>' . $string . '</b></font>' . sprintf("\nStatus: %.1f %",$Ladu)}
else {return $string }
}
Falls der Status nicht in eine neue Zeile kommen soll, müsstest Du das \n weglassen.
Hallo eki,
vielen Dank, fast perfekt ;)
Der Status steht trotz \n nicht in einer neuen Zeile.
Muss er auch nicht unbedingt, aber wie bekomme ich etwas Abstand zwischen die beiden Werte?
Hast du mal <br> versucht anstatt \n? Ansonsten \n durch Leerzeichen ersetzen oder
Ich würde ja in etwa sowas schreiben:
my $Wert = ReadingsNum($name, q{EnergyExpected}, 0);
my $Ladu = ReadingsNum($name, q{Global.Radiation}, 0);
my ($direction, $colour) =
($Wert > 0) ? qw{Einspeisung yellow} : qw{Ladung green};
return sprintf(
qq{<span style="color: %s">%s: %1.f W</span><br />Ladung: %.1f %%},
$colour, $direction, $Wert, $Ladu
);
Zitat von: mumpitzstuff am 28 Oktober 2020, 09:14:16
Hast du mal <br> versucht anstatt \n? Ansonsten \n durch Leerzeichen ersetzen oder
Vielen Dank bis hier hin, mit <br> hat es funktioniert.
Jetzt noch rechtsbündig.
Geht wohl hiermit <ALIGN=\"RIGHT\">
Aber wohin?
Zitat von: dk3572 am 28 Oktober 2020, 12:27:37
Jetzt noch rechtsbündig.
Mein Lösungsweg, rechtsbündig:
my $Wert = ReadingsNum($name, q{EnergyExpected}, 0);
my $Ladu = ReadingsNum($name, q{Global.Radiation}, 0);
my ($direction, $colour) =
($Wert > 0) ? qw{Einspeisung yellow} : qw{Ladung green};
return sprintf(
qq{<div style="text-align: right;"><span style="color: %s">%s: %1.f W</span><br />Ladung: %.1f %%</div>},
$colour, $direction, $Wert, $Ladu
);
ok, vielen Dank für eure Hilfe, passt jetzt.