FHEM Forum

FHEM => Automatisierung => Perl für FHEM-User => Thema gestartet von: sunrise am 19 November 2023, 12:09:44

Titel: [Gelöst] Problem mit dem Escapen von "%" in sprintf (Invalid conversion in sprintf)
Beitrag von: sunrise am 19 November 2023, 12:09:44
Hallo zusammen!

Ich habe eine Verständnisfrage zu folgendem, wo offenbar die Syntax falsch ist, ich aber nicht verstehe, wie ich es richtig machen muss. Ich möchte, dass nach den Werten jeweils "%" bzw. "Hz" steht, aber "%" geht hier offenbar nicht, weil es als Teil der Formatierung angesehen wird.

Aktuell so (mit Fehlermeldungen im Logfile, s.u.):
attr Mythz_Plot4_Fans label sprintf("Zuluft_Soll %0.0f%, Zuluft_Ist %0.0fHz, Abluft_Soll %0.0f%, Abluft_Ist %0.0fHz, Fortluft_Ist %0.0fHz", $data{currval1}, $data{currval2}, $data{currval3}, $data{currval4}, $data{currval5})
Muss ich da etwas escapen? Aber wie? Mit jeweils einem Backslash (\) vor den beiden %-Zeichen, die nach dem Wert für "Zuluft_Soll" und "Abluft_Soll" angezeigt werden sollen, scheint es auch nicht korrekt zu sein ...
attr Mythz_Plot4_Fans label sprintf("Zuluft_Soll %0.0f\%, Zuluft_Ist %0.0fHz, Abluft_Soll %0.0f\%, Abluft_Ist %0.0fHz, Fortluft_Ist %0.0fHz", $data{currval1}, $data{currval2}, $data{currval3}, $data{currval4}, $data{currval5})(Dass "Soll" in % und "Ist" in Hz ausgegeben werden, ist so gewollt bzw. vorgegeben.)

... denn es kommen dieselben Fehlermeldungen im Logfile:
2023.11.19 11:27:02 1: PERL WARNING: Invalid conversion in sprintf: "%," at (eval 47044) line 1.
2023.11.19 11:27:02 3: eval: { sprintf("Zuluft_Soll %0.0f%, Zuluft_Ist %0.0fHz, Abluft_Soll %0.0f%, Abluft_Ist %0.0fHz, Fortluft_Ist %0.0fHz", $data{currval1}, $data{currval2}, $data{currval3}, $data{currval4}, $data{currval5}) }

Die Darstellung des Labels über dem Plot sieht - trotz Fehlermeldungen im Logfile (s.o.) - wie gewünscht aus:

ZitatZuluft_Soll 57%, Zuluft_Ist 27Hz, Abluft_Soll 58%, Abluft_Ist 42Hz, Fortluft_Ist 0Hz

Danke für Eure Hinweise! :)
Titel: Aw: Problem mit dem Escapen von "%" in sprintf (Invalid conversion in sprintf)
Beitrag von: xenos1984 am 19 November 2023, 12:23:57
%%

http://perldoc.perl.org/perlfunc#sprintf-FORMAT%2C-LIST
Titel: Aw: Problem mit dem Escapen von "%" in sprintf (Invalid conversion in sprintf)
Beitrag von: sunrise am 19 November 2023, 12:28:12
Ganz lieben Dank! ❤️ Passt! 🤗

Und die Referenz, die Du verlinkt hast, habe ich mir gleich als Favorit abgespeichert - sehr hilfreich! ;)