72_FRITZBOX.pm wird zu 72_FritzSmart.pm

Begonnen von JoWiemann, 02 März 2026, 16:29:49

Vorheriges Thema - Nächstes Thema

passibe

Also es sind beide installiert.

"perldoc -l XML::Hash::XS" in der FHEM-Befehlszeile gibt /usr/src/app/core/lib/perl5/x86_64-linux-gnu/XML/Hash/XS.pm zurück und
"perldoc -l XML::Simple" gibt /usr/src/app/core/lib/perl5/XML/Simple.pm zurück.

Mir scheint es ja so: Der per default eingestellte Parser, XML::Hash::XS funktioniert, wieso auch immer, bei mir bzw. bei meiner Box einfach nicht und XML::Simple eben schon.

Nachtrag: Vielleicht ist es auch ein Docker-Problem: https://forum.fhem.de/index.php?topic=144604.msg1366321#msg1366321

JoWiemann

Hallo passibe,

ich habe jetzt noch einen Test eingebaut, ob der Parser funktioniert. Entsprechend wird dann der Default-Parser gesetzt. Würdest Du das bitte einmal testen.

Grüße Jörg
Jörg Wiemann

RPi 4 B mit 4 GByte bookworm, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM; zigbee2mqtt

ioBroker als Datenlieferant für z.B. Anker, Samsung

Sidey

#272
Zitat von: JoWiemann am 05 Juli 2026, 21:51:15hast Du XML_Hash_XS installiert. Jedenfalls sieht das Ergebnis der Prüfung so aus. Dadurch wird XML_Hash_XS zum XML Parser. Wenn er jetzt doch nicht vorhanden ist, dann kommt es zu dem Fehler. Mir ist allerdings schleierhaft wieso die Prüfung dann ein anderes Ergebnis zeigt.

XML_HASH_XS ist in den Container Images jetzt vorinstalliert, da es ja vom Modul angefordert wird :)

Ich bin dem Fehler bereits auf der Spur. Es liegt daran, Patchvorschlag kommt gleich.

Edit:
Es liegt daran, dass XML::Simple im Standard den root Node entfernt, und XML:Hash dies nicht per standard macht.
Dabei ist mir auch aufgefallen, dass suppress_empty nicht gesetzt ist. Für diesen Fall scheint das irrelevant, aber es ist eine weitere Abweichung:

Index: 72_FritzSmart.pm
===================================================================
--- 72_FritzSmart.pm    (revision 31443)
+++ 72_FritzSmart.pm    (working copy)
@@ -16901,7 +16901,7 @@
              };
            } else {
              eval {
-               $outHash = xml2hash($decContent);
+               $outHash = xml2hash($decContent, keep_root => 0, suppress_empty => undef);
              };
            }

An dieser Stelle noch der Hinweis, dass die weiteren Aufrufe von xml2hash vermutlich ebenfalls betroffen sind.
Ich empfehle noch mal einen Blick in den Patch. Dort hatte ich eine "sub Fritz_XML_Parse" empfohlen um alle XML Verarbeitungen konsistent und wiederholungsfreier zu gestalten.



Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth, fhem-mcp