[gelöst] SVG Plot im Titel Differenz von Min-Max anzeigen

Begonnen von frober, 10 Oktober 2019, 19:59:49

Vorheriges Thema - Nächstes Thema

frober

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
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

rudolfkoenig

Klar, title wird ja evaluiert:sprintf("Verbr. %d kW", $data{max4}-$data{min4})

frober

Danke Rudi,

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

Gruß Bernd
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

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 :(
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

rudolfkoenig

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

frober

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 ;-)
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

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  :)
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...