[gelöst] expandJSON: Unicode-Zeichen für ß (\u00df) nicht korrekt verarbeitet

Begonnen von binford6000, 27 August 2022, 12:11:25

Vorheriges Thema - Nächstes Thema

rudolfkoenig

Zitat./bimmerconnected status -j 'user' 'pass' rest_of_world | xxd liefert \u00df fürs "ß"
Merkwuerdig, mein xxd zeigt nie \u00, sondern sowas:
% echo ß | recode utf-8..latin1 | xxd
00000000: df0a                                     ..
% echo ß | recode utf-8..latin1 | recode latin1..utf-8 | xxd
00000000: c39f 0a                                  ...


ZitatBtw: Anfängerfrage: wie bekomme ich die führende "1_" bei den Readings weg?
Mit jsonMap: https://fhem.de/commandref_modular.html#MQTT2_DEVICE-attr-jsonMap

Dr. Boris Neubert

Zitat von: rudolfkoenig am 01 September 2022, 12:37:09
Nach einem kurzen Test wuerde ich das Problem nicht auf mosquitto_pub schieben.
Folgendes laeuft bei mir ohne Fehler durch, und legt passende Readings an.
mosquitto_pub -i bmw -t bmw -m '[{"data": {"vin": "redactedVIN", "mappingInfo": {"isAssociated": true} } }]'


In deinem Beispiel wird redactedVIN nur an einer Seite von " begleitet.
mosquitto_pub hat damit auch kein Problem, nur json2nameValue.

Das fehlende Anführungszeichen kommt von meiner manuellen Nachbearbeitung der Fahrgestellnummer. Im Original ist da eines.

Dein Beispiel funktioniert aber das komplette JSON aus bimmerconnected nicht. Andererseits liefert

./bmw.sh | mosquitto_pub -h has -i bmw -t bmw -l

komischerweise keine Fehlermeldung. In keinem Fall aber kommt beim MQTT-Broker im FHEM was an. Aber das muss ich erst noch untersuchen.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

rudolfkoenig

Achtung bei -l: da wird jede Zeile als eine separate MQTT-Nachricht versendet, und das verursacht fuer FHEM Kopfschmerzen, falls im JSON ein Newline vorkommt.

Dr. Boris Neubert

Zitat von: rudolfkoenig am 01 September 2022, 15:26:24
Achtung bei -l: da wird jede Zeile als eine separate MQTT-Nachricht versendet, und das verursacht fuer FHEM Kopfschmerzen, falls im JSON ein Newline vorkommt.
Danke für den Tipp! Gerade überprüft. Das gelieferte JSON ist ein fetter Einzeiler. Gut.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

binford6000

Zitat von: rudolfkoenig am 01 September 2022, 13:41:43
Merkwuerdig, mein xxd zeigt nie \u00, sondern sowas:
% echo ß | recode utf-8..latin1 | xxd
00000000: df0a                                     ..
% echo ß | recode utf-8..latin1 | recode latin1..utf-8 | xxd
00000000: c39f 0a                                  ...


Im Terminal bekomme ich das auch genau so hin. Das \u00 kommt direkt aus dem bimmerconnected Skript.

ZitatMit jsonMap: https://fhem.de/commandref_modular.html#MQTT2_DEVICE-attr-jsonMap

Das wird bei 233 Readings aber mühselig  :o

Dr. Boris Neubert

Hallo,

so, ich hole mit bimmerconnected das JSON, pipe es nach

mosquitto_pub -h has -i bmw -t bmw -l

und sende es damit an den MQTT-Broker im FHEM und werte die Readings am entstandenen Device MQTT2_bmw per readingList

bmw:.* { json2nameValue($EVENT, '', $JSONMAP) }

aus. Im Reading 1_data_state_location_address_formatted erfreut sich in der ...straße das scharfe S bester Gesundheit.

Ich benutze keine Encodings und meine fhem.cfg ist UTF-8 Unicode text.

Kann ich was zur Lösung des Problems des OP beitragen?

Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Dr. Boris Neubert

Aaaah! Zwei Auffälligkeiten.

1. In der Raumliste, die im FHEMWEB aufpoppt, wenn ich das Attribut room ändern will, sind alle Umlaute kaputt. Und auch in der Navigationsleiste.
2. Ich habe den BMW ein stateformat 1_data_state_location_address_formatted verpasst. Das ß in ...straße ist in der Detailansicht des Device in Ordnung, in der Raumübersicht allerdings Tofu.

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

binford6000

Zitat von: Dr. Boris Neubert am 01 September 2022, 17:17:09
Hallo,

so, ich hole mit bimmerconnected das JSON, pipe es nach

mosquitto_pub -h has -i bmw -t bmw -l

und sende es damit an den MQTT-Broker im FHEM und werte die Readings am entstandenen Device MQTT2_bmw per readingList

bmw:.* { json2nameValue($EVENT, '', $JSONMAP) }

aus. Im Reading 1_data_state_location_address_formatted erfreut sich in der ...straße das scharfe S bester Gesundheit.

Ich benutze keine Encodings und meine fhem.cfg ist UTF-8 Unicode text.

Kann ich was zur Lösung des Problems des OP beitragen?

Grüße
Boris

Hallo Boris,
ich habs jetzt mal genauso nachgestellt. Bei mir nach wie vor auch in der Detailansicht das Placeholder "?"
1_data_state_location_address_formatted Muster Stra�e 20, 12345 Musterstadt 2022-09-01 17:28:25

fhem.cfg ist laut CotEditor + webmin ebenfalls utf8 codiert.

Dr. Boris Neubert

So, da ist was komisch.

War gerade mit dem BMW einkaufen und habe automatisiert alle 5 Minuten den Status abgefragt,

Nach einem Update der Readings stand auch in der Detailsicht statt des ß nur Tofu. Aktualisiere ich die Seite im Browser, steht da wieder ein ß.

Im Log wird mir im FHEMWEB im Browser auch Tofu angezeigt.

Das Log ist laut file MQTT2_bmw-2022.log wie folgt kodiert: Non-ISO extended-ASCII text

Darin ist ß hex df. Wenn ich den Output von bimmerconected in eine Datei pipe, ist das ß als \u00df JSON-kodiert. Das ist also zumindest konsistent.

Ich vermute, dass der Browser noch etwas mit Magie macht, um die Kodierung zu reparieren, wenn die Seite neu geladen wird. Das sehe ich daran, dass die Umlaute in der Navigationsleiste mit den Räumen genau dann kaputt sind, wenn das ß in der Detailsicht heil ist, und umgekehrt.

recode des Output von bimmerconnected hilft übrigens nicht, weil die Sonderzeichen im Output von bimmerconnected als \uxxxx kodiert sind. Das Problem tritt erst auf, wenn das JSON im MQTT-Broker verwurstet wird. Idealerweise schieben wir dort eine Umkodierung dazwischen.

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

rudolfkoenig

Kann bitte jemand die Ausgabe von  bimmerconnected mir zur Verfuegung stellen?

binford6000

Zitat von: rudolfkoenig am 01 September 2022, 19:33:30
Kann bitte jemand die Ausgabe von  bimmerconnected mir zur Verfuegung stellen?

[{
"data": {
...gaaaaanz viel JSON...
  "address": {
  "formatted": "Muster Stra\u00dfe 20, 12345 Musterstadt"
        },
....noch mehr JSON...
}]


Wie gesagt insgesamt 233 Readings aber nur um das EINE gehts ja hier...
Und wie Boris geschrieben hat als Einzeiler.

rudolfkoenig

Mit "Ausgabe" meinte ich unmodifizierte Daten, die keinen Editor gesehen haben, nicht per Copy&Paste sondern als Anhang, sonst geht das Wesentliche verloren. Ich brauche etwas, mit dem ich testen kann, und wo meine Verfollstaendigung der Daten das Ergebnis nicht verfaelschen.
Mit der "Wie gesagt..." Version sind wir ja nachweislich nicht weitergekommen.

binford6000

Zitat von: rudolfkoenig am 01 September 2022, 20:54:27
Mit "Ausgabe" meinte ich unmodifizierte Daten, die keinen Editor gesehen haben, nicht per Copy&Paste sondern als Anhang, sonst geht das Wesentliche verloren. Ich brauche etwas, mit dem ich testen kann, und wo meine Verfollstaendigung der Daten das Ergebnis nicht verfaelschen.
Mit der "Wie gesagt..." Version sind wir ja nachweislich nicht weitergekommen.

Ohne Geodaten und VIN (per Editor) zu entfernen hänge ich hier aber nix an.
Maximal auf vertrauensvoller Basis per PN  ;)

rudolfkoenig

ZitatOhne Geodaten und VIN (per Editor) zu entfernen hänge ich hier aber nix an.
Das wollte ich auch nicht vorschlagen.

binford6000

Zitat von: rudolfkoenig am 01 September 2022, 22:31:45
Das wollte ich auch nicht vorschlagen.

Und wie kommen wir nun zusammen? Ich würde dir ja einen Downloadlink schicken - aber PNs sind ja geblockt...