[gelöst] Cubietruck + FHEM + utf8

Begonnen von RoBra81, 04 April 2018, 14:33:18

Vorheriges Thema - Nächstes Thema

RoBra81

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

RoBra81

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=


:-\

betateilchen

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?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

RoBra81

#3
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...

mumpitzstuff

#4
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.

RoBra81

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


mumpitzstuff

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?

helmut

#7
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
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

mumpitzstuff

Du kannst auch mal versuchen fhem später zu starten. Siehe hier:

https://wiki.fhem.de/wiki/Linux_Initskript

RoBra81

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

mumpitzstuff

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:

echo "Starting fhem..."
sleep 20s

RoBra81

Selbst eine Verzögerung von 20 Sekunden hatte keinen Erfolg - erst nach manuellem Neustart stimmen die locales...

mumpitzstuff

Das mit der Reihenfolge hast du auch versucht?

cd /etc/rc3.d
ls -l
sudo mv K01fhem K99fhem

K01 kann bei dir anders sein...

RoBra81

Mein Server startet im RunLevel 2 und da (in /etc/rc2.d/) war das fhem-Script (wegen # Required-Start: $all) schon ganz am Ende (S20fhem) (K ist das zum killen). Habe es trotzdem mal auf S99 geändert - ohne Erfolg...

mumpitzstuff

Stimmt. S natürlich.

Hmm dann habe ich keine Ahnung mehr. Tut mir leid.