Hallo zusammen,
neuerdings habe ich immer mal wieder diese Warnings:
2025.05.14 23:59:55 1: PERL WARNING: Wide character in print at fhem.pl line 1652.
2025.05.14 23:59:55 1: stacktrace:
2025.05.14 23:59:55 1: main::__ANON__ called by fhem.pl (1652)
2025.05.14 23:59:55 1: main::WriteStatefile called by ./FHEM/98_statistics.pm (410)
2025.05.14 23:59:55 1: main::statistics_DoStatisticsAll called by ./FHEM/98_statistics.pm (389)
2025.05.14 23:59:55 1: main::statistics_PeriodChange called by fhem.pl (3511)
2025.05.14 23:59:55 1: main::HandleTimeout called by fhem.pl (710)
025.05.15 08:58:51 1: PERL WARNING: Wide character in print at fhem.pl line 1652.
2025.05.15 08:58:51 1: stacktrace:
2025.05.15 08:58:51 1: main::__ANON__ called by fhem.pl (1652)
2025.05.15 08:58:51 1: main::WriteStatefile called by fhem.pl (1739)
2025.05.15 08:58:51 1: main::CommandSave called by fhem.pl (1285)
2025.05.15 08:58:51 1: main::AnalyzeCommand called by fhem.pl (1136)
2025.05.15 08:58:51 1: main::AnalyzeCommandChain called by ./FHEM/98_telnet.pm (263)
2025.05.15 08:58:51 1: main::telnet_Read called by fhem.pl (3988)
2025.05.15 08:58:51 1: main::CallFn called by fhem.pl (789)
Wrote configuration to fhem.cfg
2025.05.15 08:58:57 0: Server shutdown
2025.05.15 08:58:57 1: Shutdown executed
2025.05.15 08:58:58 1: PERL WARNING: Wide character in print at fhem.pl line 1652.
2025.05.15 08:58:58 1: stacktrace:
2025.05.15 08:58:58 1: main::__ANON__ called by fhem.pl (1652)
2025.05.15 08:58:58 1: main::WriteStatefile called by fhem.pl (1873)
2025.05.15 08:58:58 1: main::CommandShutdown called by fhem.pl (738)
Hat jemand einen Tipp, wo die Ursache liegen könnte ?
VG Klaus
Vermutung: in irgendeinem reading stehen merkwürdig/falsch codierte Zeichen.
Um der Sache auf die Spur zu kommen, könntest Du in der (jetzt leeren) Zeile 1650 eintragen:
Debug "device: $d";
damit solltest Du zumindest das betroffene device rausfinden können.
Danach aber die Zeile wieder löschen :)
Zusaetzlich: das betreffende Modul hat die Daten (womoeglich per Bibliothek) eingelesen, ohne sie zu konvertieren.
Per Voreinstellung (attr global encoding bytestream) muessen alle Module die Daten nach UTF-8 konvertieren, das ist hier nicht passiert.
Mit "attr global encoding unicode" muss alles nach "wide-char" konvertiert werden, leider machen da viele Module nicht mit.
Zitat von: rudolfkoenig am 15 Mai 2025, 10:16:55Mit "attr global encoding unicode" muss alles nach "wide-char" konvertiert werden, leider machen da viele Module nicht mit.
Kann ich einfach einen "attr global encoding unicode" absetzen ?
Die Empfehlung ist ja offensichtlich bytestream.
Mit welchen Problemen ist denn zu rechnen ?
Zitat von: betateilchen am 15 Mai 2025, 09:47:48Debug "device: $d";
Habe ich mal gemacht, abwarten..
Nehme an, dass bei einem "config save" jedes device angemeckert wird, ist wohl normal ?
ZitatKann ich einfach einen "attr global encoding unicode" absetzen ?
Das ist einfach.
Nach einer Weile stellt sich dann raus, ob alle verwendeten Module diese Einstellung unterstuetzen.
Ich habe versucht das bei meinen Modulen zu tun.
Zitat von: Rampler am 15 Mai 2025, 14:52:05Nehme an, dass bei einem "config save" jedes device angemeckert wird, ist wohl normal ?
Ja, sorry. Ich fürchte, mein Vorschlag beruht auf einem Denkfehler meinerseits.
Habe das Problem lösen können !
Es lag an meinen schwachsinnigen webCmdLabel Definition eines bestimmten Devices.
Ich habe einfach mal nachgedacht, was ich die letzten Tage so verändert habe ...
In sofern, alles wieder super.
Danke für eure Hilfe.
Muss mich leider nochmal zu diesem Thema melden.
Offensichtlich war es doch was anderes, jedenfalls habe ich wieder diese
"PERL WARNING: Wide character in print at fhem.pl line 1652."
Meldungen.
Irgendwie fehlt mir der Mut das attr global encoding auf unicode zu setzen.
Kann ich denn wieder problemlos auf "bytestream" zurück, falls es Probleme gibt ?
Mich würde brennend interessieren welches Gerät/Definition das verursacht ..
ZitatKann ich denn wieder problemlos auf "bytestream" zurück, falls es Probleme gibt ?
Ja.
Ich empfehle voher die Konfiguration (fhem.save und fhem.state) zu sichern.
ZitatMich würde brennend interessieren welches Gerät/Definition das verursacht ..
Ich habe fhem.pl erweitert:
> telnet localhost 7072
{ setReadingsVal($defs{"fb"},"wc",Encode::decode("UTF-8","😀"),TimeNow());; undef}
save
Wrote configuration to cfg/fhem.cfg.test
erzeugt ab sofort in fhem.log mit "attr global stacktrace 1" eine zusaetzliche Zeile (eval:...)
2025.08.06 09:54:59 1: PERL WARNING: Wide character in print at fhem.pl line 1654.
2025.08.06 09:54:59 3: eval: setstate fb 2025-08-06 09:54:58 wc (128512)
2025.08.06 09:54:59 1: stacktrace:
2025.08.06 09:54:59 1: main::__ANON__ called by fhem.pl (1654)
2025.08.06 09:54:59 1: main::WriteStatefile called by fhem.pl (1742)
2025.08.06 09:54:59 1: main::CommandSave called by fhem.pl (1285)
Die letzte Änderung der fhem.pl hat mich vermutlich auf die richtige Fährte gebracht (Danke Rudi) :
2025.08.08 18:34:37 1: PERL WARNING: Wide character in print at fhem.pl line 1654.
2025.08.08 18:34:37 3: eval: setstate SpeedTest <div style="text-align:left">Down: 88.1 Mbit/s</div>\(10)<div style="text-align:left">Up:  ; 38.3 Mbit/s </div> \(10)<div style="text-align:left">Ping: ; 7.066 msec</div>\(10)<div style="color:white ;; text-align:left"><b>State: ok</b></div>\(10)(10)setstate SpeedTest 2025-08-08 11:54:40 download 88.1(10)setstate SpeedTest 2025-08-08 11:54:40 id 69838(10)setstate SpeedTest 2025-08-08 11:54:40 location Nuremberg(10)setstate SpeedTest 2025-08-08 11:54:40 name Atakan Do(287)an (214)zban(10)setstate SpeedTest 2025-08-08 11:54:40 packetLoss 0(10)setstate SpeedTest 2025-08-08 11:54:40 ping 7.066(10)setstate SpeedTest 2025-08-08 11:54:40 state ok(10)setstate SpeedTest 2025-08-08 11:54:40 upload 38.3
2025.08.08 18:34:37 1: stacktrace:
2025.08.08 18:34:37 1: main::__ANON__ called by fhem.pl (1654)
2025.08.08 18:34:37 1: main::WriteStatefile called by fhem.pl (1876)
2025.08.08 18:34:37 1: main::CommandShutdown called by fhem.pl (1285)
2025.08.08 18:34:37 1: main::AnalyzeCommand called by fhem.pl (1136)
2025.08.08 18:34:37 1: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2875)
2025.08.08 18:34:37 1: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (1035)
2025.08.08 18:34:37 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (613)
2025.08.08 18:34:37 1: main::FW_Read called by fhem.pl (3994)
2025.08.08 18:34:37 1: main::CallFn called by fhem.pl (789)
Kann es sein, das der reading name:
Atakan Doğan Özban
die Fehlermeldung verursacht hat ?
Ich habe das device testweise mal entfernt..
fhem.save:
setstate SpeedTest 2025-08-06 06:48:03 download 88.9
setstate SpeedTest 2025-08-06 06:48:03 id 69838
setstate SpeedTest 2025-08-06 06:48:03 location Nuremberg
setstate SpeedTest 2025-08-06 06:48:03 name Atakan Doğan Özban
setstate SpeedTest 2025-08-06 06:48:03 packetLoss 0
setstate SpeedTest 2025-08-06 06:48:03 ping 7.698
setstate SpeedTest 2025-08-06 06:48:03 state ok
setstate SpeedTest 2025-08-06 06:48:03 upload 38.2
fhem.cfg:
define SpeedTest speedtest 86400\
setuuid SpeedTest 6018fc45-f33f-b6d9-1378-4295798c23d4bf44
attr SpeedTest disable 0
attr SpeedTest event-on-change-reading state,upload,download,ping
attr SpeedTest icon virtualbox-alt
attr SpeedTest ookla 1
attr SpeedTest path /usr/local/bin
attr SpeedTest room Network
attr SpeedTest stateFormat <div style="text-align:left">Down: download Mbit/s</div>\
<div style="text-align:left">Up:  ; upload Mbit/s </div> \
<div style="text-align:left">Ping: ; ping msec</div>\
<div style="color:white ;; text-align:left"><b>State: state</b></div>\
Kann es sein, das der reading name: [...] die Fehlermeldung verursacht hat ?
Ja.
Das Modul hat wohl nicht mit nicht-ascii Input gerechnet.
Der Serverbetreiber war ja auch gemein, so einen Namen zu waehlen :)