jens-maus / RaspberryMatic

:house: A feature-rich but lightweight, buildroot-based Linux operating system alternative for your CloudFree CCU3/ELV-Charly 'homematicIP CCU' IoT smarthome central. Running as a pure virtual appliance (ProxmoxVE, Home Assistant, LXC, Docker/OCI, Kubernetes/K8s, etc.) on a dedicated embedded device (RaspberryPi, etc.) or generic x86/ARM hardware.
https://raspberrymatic.de
Apache License 2.0
1.55k stars 192 forks source link

Falsche Anzeige der Umlaute, Eszett und Sonderzeichen in der Diagrammkonfiguration #2139

Closed GHJester closed 1 year ago

GHJester commented 1 year ago

Describe the issue you are experiencing

Umlaute, Eszett und Sonderzeichen werden in Einstellungen/Diagramme nicht korrekt gespeichert und somit auch nicht unter Status/Diagramme korrekt angezeigt

Describe the behavior you expected

Umlaute, Eszett und Sonderzeichen sollten korrekt dargestellt werden

Steps to reproduce the issue

  1. Mouse over Einstellungen
  2. Diagramme auswählen
  3. Neues Diagramm "Temperaturmessung" anlegen
  4. Im Feld Name und Beschreibung "Ä ä Ö ö Ü ü ß °" eintragen
  5. Speichern
  6. Auf "Bearbeiten" des neu erstellten Diagramms klicken
  7. "Name", "Beschreibung" und "Angezeigte Einheit" °C werden nicht korrekt dargestellt

grafik

grafik

What is the version this bug report is based on?

3.65.11.20221218

Which base platform are you running?

ha-addon (HomeAssistant Add-on)

Which HomeMatic/homematicIP radio module are you using?

HmIP-RFUSB

Anything in the logs that might be useful for us?

nope

Additional information

No response

jp112sdl commented 1 year ago

Hat wohl was mit Homeassistant zu tun.

Auf meiner RaspberryPi 3B+ Installation ist alles i.O.

GHJester commented 1 year ago

Hmmm... das läuft doch einfach "nur" in einem Docker Container, Da hat Home Assistant normalerweise keinen Einfluss drauf? Alles andere sieht korrekt aus, nur die Diagramme zicken rum.

Ich habe mir jetzt mal die Konfigurationsdatei angeschaut. Dort steht das drin:

Description=Temperatur K\u00FCche
Type=1
TemplateId=1
YScalingMaxValue=0.0
Id=3
DisplayedUnit=\u00B0C
Active=true
YScalingMinValue=0.0
Name=Temperatur K\u00FCche

Ist das denn korrekt?

jp112sdl commented 1 year ago

Ich hab es gerade noch einmal versucht, dieses Mal mit der 3.65.11.20221218 OVA Version:

Description=\u00C4 \u00E4 \u00D6 \u00F6 \u00DC \u00FC \u00DF \u00B0
Type=1
TemplateId=1
YScalingMaxValue=0.0
Id=1
DisplayedUnit=\u00C4 \u00E4 \u00D6 \u00F6 \u00DC \u00FC \u00DF \u00B0C
Active=true
YScalingMinValue=0.0
Name=\u00C4 \u00E4 \u00D6 \u00F6 \u00DC \u00FC \u00DF \u00B0
DataSources=JPRCDISTH1\:5_5,JPRCDISTH1,TEMPERATURE,0,0
YScalingModeMin=false
DefaultPeriod=1
Operable=true
Visible=true
DefaultConsolidationFunction=3
YScalingModeMax=false

grafik

Baxxy13 commented 1 year ago

Wie wird denn hier die WebUI aufgerufen? Über Ingress (Seitenleiste in HA) oder über "extern" mit angehängtem Port (z.B. 8088)?

Tritt das Problem bei beiden Varianten auf?

GHJester commented 1 year ago

Ich werd' verrückt. Tatsächlich scheint das ein Problem der Integration in den Home Assistant zu sein. Wenn ich die UI direkt aufrufe wird alles korrekt dargestellt. Ich hatte bis jetzt den Port einfach noch nicht aktiviert. Somit konnte ich die UI auch noch nicht direkt aufrufen. Somit hat sich das erledigt. Aber komisch ist das schon, dass alles andere korrekt dargestellt wird, nur in den Diagrammen nicht

Baxxy13 commented 1 year ago

Der Weg über Ingress ist natürlich komfortabler wenn man schon auf der Homeassistant UI ist. Der hat aber in der Vergangenheit immer mal wieder an diversen Stellen Probleme bereitet. Daher empfehle ich nur noch den "Direktaufruf".

Das eigentliche Problem müsste sich dann Jens mal angucken, daher hätte ich das Ticket noch nicht zu gemacht.

GHJester commented 1 year ago

OK, dann öffne ich den noch mal. Jens kann ja dann schließen wenn er sich das nicht mehr anschauen möchte.

jens-maus commented 1 year ago

Um dieses Problem mit der Benennung der Diagramme über den Ingresszugang zur WebUI näher zu analysieren bräuchte ich aber am besten mal einen konkreten testcase. Dazu wäre es gut hier ggf ein Backup der Diagrammdaten oder ein komplettes sbk backup zur hand zu haben das nach dem restore auf einer frischen RaspberryMatic das Problem unmittelbar zeigt.

GHJester commented 1 year ago

Das Backup als sbk habe ich dir per E-Mail geschickt. Ich habe eine virtuellen Umgebung aufgesetzt und mein reguläres Backup eingespielt. Ich habe alles bereinigt was du nicht benötigst. Leider lassen sich aus irgendeinem Grund die Geräte nicht löschen (Löschen/in den Werkszustand/Löschen/Aus Homematic Zentrale löschen), sonst hätte ich die Geräte bis auf eins auch noch entfernt. Jedenfalls benötigst du Home Assistant auch noch, denn nur darüber kannst du das Problem beobachten.

grafik

In der Diagrammansicht besteht das Problem auch:

grafik

Ich habe überhaupt beobachtet, dass RaspberryMatic über den Home Assistant sehr träge reagiert.

jens-maus commented 1 year ago

Ich konnte/kann das problem jetzt hier mit der entsprechenden .dic Datei aus /etc/config/measurement reproduzieren. Das selbe bzw. etwas ähnliches passiert übrigens auch bei den Gruppen wenn man diese innerhalb der Ingress umgeleiteten WebUI editiert, anpasst. Siehe:

Bildschirm­foto 2023-01-04 um 11 52 07

Wenn man allerdings die RaspberryMatic WebUI direkt via Port 8080 (wenn man den so in der Add-on konfig eingestellt hat) editiert/anschaut, passt alles, wohl auch bei den Diagrammen.

jens-maus commented 1 year ago

So, ich denke ich hab nun eine möglichkeit gefunden das die WebUI seiten die der HMIPServer ausliefert nicht falsch umkodiert werden. Problem scheint zu sein, das der HMIPServer wohl immer utf-8 kodierte Seiten zurückliefert, dies aber nicht explizit beim ausliefern charset=utf-8 im content-type so definiert. Das führte wohl dazu, das dann die Charset Konvertierungsroutinen in ha-proxy.js fälschlicherweise das ganze in latin1 konvertiert hatte was genau zu den oben gezeigten Problemen geführt hat. Das sollte nun korrigiert sein und mit der nächsten nightly snapshot bzw. dem nächsten Release sollten die WebUI Seiten von HMIPServer auch über den Ingress Proxy korrekt funktionieren. Bitte entsprechend durchtesten natürlich!

jp112sdl commented 1 year ago

Ohne https://github.com/jens-maus/RaspberryMatic/commit/e4418b685b87070194c902f9a31f73cc3553a0fe , dafür aber mit dem gestern ausgelieferten HMIPServer im OCCU https://github.com/eq-3/occu/commit/8bd52d59758e284e554d45e29b04f8bdcf0dd5e1 ging es auch nicht?

jens-maus commented 1 year ago

Ohne e4418b6 , dafür aber mit dem gestern ausgelieferten HMIPServer im OCCU eq-3/occu@8bd52d5 ging es auch nicht?

Nein, definitiv nicht. Das ist in der Tat ein shortcoming vom HMIPServer das er seine Seiten zwar mit content-type: text/html ausliefert, es aber unterlässt da das genutzt charset via charset=utf-8 parameter explizit zu benennen...