FHEM Forum

FHEM => Automatisierung => Thema gestartet von: frober am 10 Oktober 2019, 19:59:49

Titel: [gelöst] SVG Plot im Titel Differenz von Min-Max anzeigen
Beitrag von: frober am 10 Oktober 2019, 19:59:49
Hallo zusammen,

ist es möglich im Titel eines SVG Plots einen Wert berechnen zu lassen?

Aktuell habe ich:
"Temp. Min $data{min2}, Max $data{max2}, Last $data{currval2}, Verbr. $data{max4} ($data{min4}) kW"
für den Titel angegeben.

Kann ich darin die Diff. von
"Verbr. $data{max4} ($data{min4}) kW"
direkt berechnen, so dass ich nur den Tagesverbrauch angezeigt bekomme?

Gruß und Danke Bernd
Titel: Antw:SVG Plot im Titel Differenz von Min-Max anzeigen
Beitrag von: rudolfkoenig am 10 Oktober 2019, 22:02:11
Klar, title wird ja evaluiert:sprintf("Verbr. %d kW", $data{max4}-$data{min4})
Titel: Antw:SVG Plot im Titel Differenz von Min-Max anzeigen
Beitrag von: frober am 11 Oktober 2019, 10:30:33
Danke Rudi,

war mir nicht klar, dass ich hier auch einfach mittels Perl agieren kann.

Gruß Bernd
Titel: Antw:SVG Plot im Titel Differenz von Min-Max anzeigen
Beitrag von: frober am 11 Oktober 2019, 20:26:55
Leider bekomme ich einen Syntax Error und finde den Fehler nicht  :(
"Temp. Min $data{min2}, Max $data{max2}, Last $data{currval2}, sprintf("Verbr. %d kW", $data{max4}-$data{min4})"


2019.10.11 20:12:50 1: PERL WARNING: Bareword found where operator expected at (eval 23850) line 1, near ""Temp. Min $data{min2}, Max $data{max2}, Last $data{currval2}, sprintf("Verbr"
2019.10.11 20:12:50 3: eval: { "Temp. Min $data{min2}, Max $data{max2}, Last $data{currval2}, sprintf("Verbr. %d kW", $data{max4}-$data{min4})" }
2019.10.11 20:12:50 1: PERL WARNING: Bareword found where operator expected at (eval 23850) line 1, near "%d kW"
2019.10.11 20:12:50 3: eval: { "Temp. Min $data{min2}, Max $data{max2}, Last $data{currval2}, sprintf("Verbr. %d kW", $data{max4}-$data{min4})" }
2019.10.11 20:12:50 1: PERL WARNING: String found where operator expected at (eval 23850) line 1, near "kW", $data{max4}-$data{min4})""
2019.10.11 20:12:50 3: eval: { "Temp. Min $data{min2}, Max $data{max2}, Last $data{currval2}, sprintf("Verbr. %d kW", $data{max4}-$data{min4})" }
2019.10.11 20:12:50 1: ERROR evaluating { "Temp. Min $data{min2}, Max $data{max2}, Last $data{currval2}, sprintf("Verbr. %d kW", $data{max4}-$data{min4})" }: syntax error at (eval 23850) line 1, near ""Temp. Min $data{min2}, Max $data{max2}, Last $data{currval2}, sprintf("Verbr"
Global symbol "%d" requires explicit package name at (eval 23850) line 1.


Ich habe es auch u.a. so probiert, dann fehlt angeblich rechts eine Klammer  :o
"Temp. Min $data{min2}, Max $data{max2}, Last $data{currval2}, $data{sprintf("Verbr. %d kW", $data{max4}-$data{min4})}"

Mit meinen bescheidenen Perlkenntnissen stehe ich auf dem Schlauch :(
Titel: Antw:SVG Plot im Titel Differenz von Min-Max anzeigen
Beitrag von: rudolfkoenig am 11 Oktober 2019, 20:38:40
Ich empfehle statt Improvisation die ersten 3 Kapitel eines Perl-Buches durchzulesen.sprintf("Temp. Min %d, Max %d, Last %d, Verbr. %d kW", $data{min2}, $data{max2}, $data{currval2}, $data{max4}-$data{min4})
Titel: Antw:SVG Plot im Titel Differenz von Min-Max anzeigen
Beitrag von: frober am 11 Oktober 2019, 21:18:27
Naja, ich habe mal, 2-3Jahre her, das ganze Buch gelesen. Wenn ich es nicht regelmäßig anwende, geht vieles leider wieder verloren.
Ich habe aber gegoogelt und auch meine sonstige sprintf, mit denen ich STATE manipuliere verglichen. Dadurch habe ich probiert, bin aber nicht auf die Idee gekommen, alles in sprintf zu packen.

Jeden falls danke für deine Hilfe.

P.S. Das Buch sollte ich wirklich wieder aus dem Schrank holen ;-)
Titel: Antw:SVG Plot im Titel Differenz von Min-Max anzeigen
Beitrag von: frober am 11 Oktober 2019, 22:16:45
So, habe es noch etwas verfeinert  ;)

sprintf("Temp. Min %s, Max %s, Last %s, Verbr. %0.4s kW", $data{min2}, $data{max2}, $data{currval2}, $data{max4}-$data{min4})

Ergebnis:
ZitatTemp. Min 18.9, Max 20.6, Last 19.2, Verbr. 0.82 kW

Und gelöst  :)