DbLog: Celsius falsch in Datenbank

Begonnen von vbs, 09 Juni 2014, 13:35:29

Vorheriges Thema - Nächstes Thema

vbs

Ich hab mir jetzt für einige Devices das DBLog eingerichtet, um in eine MySQL-Datenbank zu loggen. Klappt auch alles soweit, nur ist mir aufgefallen, dass bei "UNIT" vom Wetter-Kanal bei Temperatur ein falsche Zeichen drin steht. Zumindest laut HeidiSQL aber ich vertrau der mal :) Vielleicht irgendein Unicode-Problem?
(https://dl.dropboxusercontent.com/u/24641738/fhemunit.png)

betateilchen

ja und? Das kannst Du doch beim Auslesen (falls Du Unit wirklich aus DbLog verwendest) entsprechend umwandeln. Der Eintrag in der Datenbank ist jedenfalls nicht falsch, nur Deine Anzeige.

Ausserdem ist nicht das Celsius falsch dargestellt (wie der Threadtitel behauptet) sondern das Grad-Zeichen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

vbs

Zitat von: betateilchen am 09 Juni 2014, 13:41:52
ja und? Das kannst Du doch beim Auslesen (falls Du Unit wirklich aus DbLog verwendest) entsprechend umwandeln. Der Eintrag in der Datenbank ist jedenfalls nicht falsch, nur Deine Anzeige.
Also du sagst, dass es sich um ein Darstellungsproblem (vermutlich im Zusammenhang mit Unicode) von HeidiSQL handelt? Kann ja sein... umso besser...
Dafür spricht, dass es in fhem korrekt aussieht, wenn ich ein get mache:
Timestamp: Device, Type, Event, Reading, Value, Unit
=====================================================
2014-06-09 14:02:07: wz_hmTcWeather, CUL_HM, temperature: 25.5, temperature, 25.5, °C
#%:temperature:::


Zitat von: betateilchen am 09 Juni 2014, 13:41:52
Ausserdem ist nicht das Celsius falsch dargestellt (wie der Threadtitel behauptet) sondern das Grad-Zeichen.
Also wenn mans genau nimmt, dann wird auch das Grad-Zeichen völlig korrekt dargestellt (siehe Screenshot).

ChrisD

Hallo,

Das '°' ist in 93_dblog.pm in UTF8 (c2 b0) kodiert. Dies führt dazu dass das Zeichen je nach Datenbankkonfiguration falsch angezeigt wird. Da ich meine Daten mit einem externen Tool auswerte habe ich schon vor langer Zeit dblog so modifiziert dass es '°' als ASCII und nicht UTF8 schreibt.

Das '°' wird übrigens in den verschiedenen FHEM-Modulen nicht einheitlich verwendet, in einigen Modulen wird UTF8 genutzt, in anderen ASCII.

Grüße,

ChrisD

vbs

Hm, also laut HeidiSQL sind das hier die Hex-Data aus dem Feld:
C382C2B043
Also laut UTF-8:
C3 82 -> A mit Circumflex
C2 B0 -> Grad-Zeichen
43      -> C

Und genau so zeigt Heidi das auch an. Sieht für mich aus, als ob das "C3 82" da nicht hingehört. Oder wo kommt das her?

ChrisD

Hallo,

'°' ist in UTF8 C2 B0, in ASCII entspricht C2 B0 '°'. Diese beiden Zeichen werden als ASCII-Werte an die Datenbank übergeben (die intern UTF8 verwendet) und als C3 82 (für 'Â') und C2 B0 (für '°') abgespeichert. Beim Aufbau der Verbindung müsste dblog angeben dass es UTF8-codierte Daten anliefert (z.B. bei mysql über {mysql_enable_utf8=>1}), was es aber nicht tut.

Grüße,

ChrisD

vbs

Danke dir! Verstehe. Aber das Problem scheint ja bereits bekannt zu sein :)