Hallo,
bei mir läuft FHEM schon lange auf einem Cubietruck (ziemlich altes igor-Image, das aber immer mal wieder apt-get update und upgrade bekommt). Nun habe ich in einem Modul das Problem, dass Umlaute nicht richtig dargestellt werden (z.B. Müllkalender -> M?llkalender). Ein
dpkg-reconfigure locales
habe ich schon mehrfach auf utf-8 gesetzt. Rufe ich in der SHH-Konsole über putty
locale
auf, dann erhalte ich
LANG=de_DE.UTF-8
LANGUAGE=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES=POSIX
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
Gebe ich jedoch in der FHEM-Eingabezeile
{qx('locale')}
ein, so ist das Ergebnis
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
Wie kann ich nun mein FHEM dazu bewegen, ebenfalls utf-8 zu sprechen?
Vielen Dank
Ronny
Nachtrag: wenn ich FHEM mit
shutdown
beende und über putty neu starte passen die locales auch aus FHEM:
{qx('locale')}
liefert
LANG=de_DE.UTF-8
LANGUAGE=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES=POSIX
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
:-\
Kommt immer darauf an, wer mit "ich" gemeint ist. Du solltest bedenken, dass die FHEM Prozesse i.d.R. nicht mit dem gleichen user laufen, den Du in putty benutzt. Die locale können unter Linux benutzerbezogen angelegt werden.
Meines Wissens spricht FHEM von Haus aus utf8 und das schon ziemlich lange.
Bist Du sicher, dass Du nicht einfach ein Browserproblem bei den Darstellungen von Umlauten hast?
Zitat von: betateilchen am 04 April 2018, 15:56:25
Bist Du sicher, dass Du nicht einfach ein Browserproblem bei den Darstellungen von Umlauten hast?
Ziemlich: das Problem ist nicht die Darstellung, sondern das das Modul 57_GCALVIEW meinen Müllkalender M?llkalender nennt und ihn nur abruft, wenn die Konfiguration M?llkalender lautet. Da im Attribut jedoch Müllkalender steht, erfolgt keine Aktualisierung. Nach dem oben beschriebenen Neustart aus putty über
/etc/init.d/fhem start
stimmen wie gesagt die locales im FHEM und der Müllkalender wir auch mit Attribut Müllkalender korrekt aktualisiert...
;D ;D ganz schön viele Müllkalender im Text ;D ;D
EDIT: FHEM läuft in beiden Fällen als user fhem...
Das Problem ist hier, das FHEM nach einer gewissen Zeit oder bedingt durch irgendwelche internen Abläufe die locale Einstellungen vergisst. Direkt nach einem Neustart kann über die Kommandozeile
{qx('locale')}
aufgerufen werden und FHEM meldet völlig korrekt de_DE.UTF-8.
Wenn er jetzt FHEM anscheinend eine Weile laufen lässt, dann erzeugt das selbe Kommando nicht mehr de_DE.UTF-8, sondern steht plötzlich auf:
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
Kann irgendein Modul innerhalb von FHEM daran schuld sein? Zumindest bei mir bleibt die Ausgabe immer gleich, egal ob ich die Abfrage direkt nach dem Restart von FHEM mache oder Stunden bzw. Tage später.
Versuch mal:
apt-get --reinstall install locales
Vielleicht ist bei dir irgendwas durcheinander. Oder hast du mal was an den entsprechenden locale Dateien manuell geändert?
Wenn du irgendwas mit perl machst, kommt dann sowas in der Art?
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "de_DE.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Denn so ein fallback auf locale ("C") würde genau dein POSIX Zeugs erklären glaube ich. Vielleicht versucht auch eins deiner Module ein locale zu setzen, scheitert aber daran, da das nicht installiert ist und fällt dann auf das POSIX Zeug zurück. Vielleicht hilfts ja auch alle möglichen locales erzeugen zu lassen. Auf einem Raspberry kann man alle möglichen erzeugen lassen und dann nur eine bestimmte davon setzen.
Das Problem kommt nicht nach längerer Laufzeit, sondern nach einem reboot des Servers: nach einem automatischen Start von fhem stimmen die locales nicht, erst nach shutdown und /etc/init.d/fhem start stimmen die locales und GCALVIEW funktioniert...
Gesendet von meinem SM-G935F mit Tapatalk
Ah okay. Also führt der automatische Start zu der zerschossenen codepage. Wodurch wird fhem gestartet? Kannst du da mal einen Blick rein werfen? Vielleich ist am startup Skript was faul. Wie hast du fhem installiert? Kannst du ein komplettes Backup machen und mal neu installieren?
Zitat von: RoBra81 am 04 April 2018, 19:34:19
Das Problem kommt nicht nach längerer Laufzeit, sondern nach einem reboot des Servers
Hallo Ronny,
klappt denn der Wechsel vom Benutzer "root" zu "fhem"? Was zeigt ein {qx('id')} auf der fhem-Kommandozeile
nach einem reboot und nach einem Restart des Dienstes?
Gibt es eventuell im daemon-Log passende Fehlermeldungen im Umfeld von "Started LSB: FHEM server."?Gibt es eventuell in /var/log/syslog passende Fehlermeldungen im Umfeld von "Starting fhem..." und
"Started LSB: FHEM server."?
Gruss Helmut
Du kannst auch mal versuchen fhem später zu starten. Siehe hier:
https://wiki.fhem.de/wiki/Linux_Initskript (https://wiki.fhem.de/wiki/Linux_Initskript)
Zitat von: helmut am 04 April 2018, 20:20:36
Hallo Ronny,
klappt denn der Wechsel vom Benutzer "root" zu "fhem"? Was zeigt ein {qx('id')} auf der fhem-Kommandozeile
nach einem reboot und nach einem Restart des Dienstes?
Vorher wie nacher
uid=999(fhem) gid=20(dialout) groups=20(dialout)
Zitat von: helmut am 04 April 2018, 20:20:36
Gibt es eventuell in /var/log/syslog passende Fehlermeldungen im Umfeld von "Starting fhem..." und
"Started LSB: FHEM server."?
Nein, keine Meldungen zu FHEM
Ich vermute das FHEM vor den locales geladen wird. Dadurch stehen die dann nicht zur Verfügung. Wenn du es dann später manuell startest, dann sind sie da und du hast keine Probleme mehr.
Lösung wäre den Start zu verzögern. Entweder irgendwie die Reihenfolge ändern (Link siehe oben) oder im Startup Skript könnte man auch was verzögern.
sudo nano /etc/init.d/fhem
Dann danach suchen und dort wie bei mir 20s oder so eintragen: