Unicode FritzBox

Aus FHEMWiki
Version vom 10. August 2013, 18:05 Uhr von TeeVau (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „==Problem== FHEM beendet sich bzw. Module funktionieren nicht richtig, wenn Daten verarbeitet werden die Umlaute verwenden. Dies ist in einigen FHEM Modulen de…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Problem

FHEM beendet sich bzw. Module funktionieren nicht richtig, wenn Daten verarbeitet werden die Umlaute verwenden. Dies ist in einigen FHEM Modulen der Fall. Aufgefallen bzw. beschrieben wurde der Fehler im Forum bezüglich HUEBridge[1] und GDS[2].

Dokumentierte Fehlermeldungen über die Linux console (Meldung war nicht im FHEM Log zu sehen):

 Can't locate unicore/Heavy.pl in @INC (@INC contains: /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/mips-linux
  /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2
  /var/InternerSpeicher/fhem/lib/perl5/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/5.12.2/mips-linux
  /var/InternerSpeicher/fhem/lib/perl5/5.12.2 /opt/lib/perl5/site_perl/5.12.2/mips-linux /opt/lib/perl5/site_perl/5.12.2
  /opt/lib/perl5/5.12.2/mips-linux /opt/lib/perl5/5.12.2 . ./FHEM) at /var/InternerSpeicher/fhem/lib/perl5/5.12.2/utf8_heavy.pl line 96.

Vermutung

Es scheint so zu sein, dass die Perl Version auf den fritzboxen unvollständig ist, das aber nur auffällt sobald Encode oder Decode auf Daten trifft die wirklich unicode bzw utf8 sind. Das schlägt natürlich auch dann zu wenn ein modul das Encode/Decode nicht direkt verwendet sondern nur indirekt wie z.b. bei hue über JSON, beim itunes modul über DAAP::DMAP und bei dem swap modul und scheinbar bei gds über XML::Simple. Eine Funktion in utf8_heavy.pl versucht auf .\unicore\Heavy.pl zuzugreifen. Diese Datei ist auf der FBF nicht vorhanden und das führt zu dem Abstürzen von FHEM.

Lösung

  1. Datei heavy.pl runterladen [3]
  2. Verzeichnis "unicore" erstellen unter /var/InternerSpeicher/fhem/lib/perl5/5.12.2/
  3. Datei heavy.pl erstellen in /var/InternerSpeicher/fhem/lib/perl5/5.12.2/unicore/
  4. ggf. Dateirechte ändern
  5. fhem restart