FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Rampler am 15 Mai 2025, 09:37:56

Titel: Perl Warning fhem.pl 1652
Beitrag von: Rampler am 15 Mai 2025, 09:37:56
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
Titel: Aw: Perl Warning fhem.pl 1652
Beitrag von: betateilchen am 15 Mai 2025, 09:47:48
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 :)
Titel: Aw: Perl Warning fhem.pl 1652
Beitrag von: rudolfkoenig am 15 Mai 2025, 10:16:55
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.
Titel: Aw: Perl Warning fhem.pl 1652
Beitrag von: Rampler am 15 Mai 2025, 14:52:05
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 ?


Titel: Aw: Perl Warning fhem.pl 1652
Beitrag von: rudolfkoenig am 15 Mai 2025, 15:55:42
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.
Titel: Aw: Perl Warning fhem.pl 1652
Beitrag von: betateilchen am 15 Mai 2025, 18:10:37
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.
Titel: Aw: Perl Warning fhem.pl 1652
Beitrag von: Rampler am 16 Mai 2025, 20:39:30
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.
Titel: Aw: Perl Warning fhem.pl 1652
Beitrag von: Rampler am 06 August 2025, 07:27:37
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 ..
Titel: Aw: Perl Warning fhem.pl 1652
Beitrag von: rudolfkoenig am 06 August 2025, 10:02:26
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)
Titel: Aw: Perl Warning fhem.pl 1652
Beitrag von: Rampler am 08 August 2025, 21:39:39
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: &emsp;; 38.3 Mbit/s </div> \(10)<div style="text-align:left">Ping: &nbsp;; 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: &emsp;; upload Mbit/s </div> \
<div style="text-align:left">Ping: &nbsp;; ping msec</div>\
<div style="color:white ;; text-align:left"><b>State: state</b></div>\
Titel: Aw: Perl Warning fhem.pl 1652
Beitrag von: rudolfkoenig am 09 August 2025, 10:04:20
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 :)