FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: kjmEjfu am 10 Januar 2022, 14:35:25

Titel: (fixed) json2namevalue: Error parsing
Beitrag von: kjmEjfu am 10 Januar 2022, 14:35:25
Beim Hochfahren bekomme ich 72x die Zeile

json2namevalue: Error parsing ><Status.MISSING_SERVICE: 1008>< for prefix/name:1

im Logfile.
Leider habe ich Null Idee, wo ich mit der Suche nach der Ursache anfangen kann.
Was will mir die Fehlermeldung sagen und wie kann ich herausfinden, wodurch dies ausgelöst wird?
Titel: Antw:json2namevalue: Error parsing
Beitrag von: rudolfkoenig am 10 Januar 2022, 14:40:41
Vermutlich kriegt die Funktion was uebergeben, was kein JSON ist.

"attr global verbose 5" oder "perl fhem.pl -d fhem.cfg" sollte beim Lokalisieren helfen.
Titel: Antw:json2namevalue: Error parsing
Beitrag von: kjmEjfu am 10 Januar 2022, 14:48:42
verbose 5 ist die Hölle ;-) Da wühle ich mich schon eine halbe Stunde durch.

Kann ich daraus, dass es 72x erscheint, entnehmen, dass 72 verschiedene Topics betroffen sind oder kann das auch eine kleinere Menge sein?
Titel: Antw:json2namevalue: Error parsing
Beitrag von: rudolfkoenig am 10 Januar 2022, 14:59:44
Ja.
Diese Angabe ist ohne Gewaehr. :)
Titel: Antw:json2namevalue: Error parsing
Beitrag von: Beta-User am 10 Januar 2022, 15:03:42
...manche Gegenstellen nehmen es nicht so genau und wechseln schon mal zwischen JSON und Klartext - v.a. dann, wenn noch keine Daten bekannt sind.

ebus ist da so ein Kandidat, es gibt aber noch andere.

@Rudi: Vielleicht sollte man in diesem Fall einfach {decode_error => $input} zurückgeben und nichts ins Log schreiben ($input für den übergebenen String)?
Titel: Antw:json2namevalue: Error parsing
Beitrag von: kjmEjfu am 10 Januar 2022, 15:10:05
Naja, wenn im Fehler irgendwas drin stehen würde, was einem beim Identifizieren des entsprechenden Devices helfen würde ... ;-)
Titel: Antw:json2namevalue: Error parsing
Beitrag von: kjmEjfu am 10 Januar 2022, 15:29:08
Aaaaaaaaaaaaaaaaaah, jetzt macht es klick.

"Status.MISSING_SERVICE: 1008" war keine Meldung von Perl oder FHEM, sondern das ist der Wert der im MQTT-Topic steht.
Und plötzlich macht es Sinn.

Gefunden, danke.
Titel: Antw:(fixed) json2namevalue: Error parsing
Beitrag von: rudolfkoenig am 10 Januar 2022, 15:55:17
Habe mit Traurigkeit festgestellt, dass die json2nameValue Fehlermeldungen "nicht optimal"sind: diese Fehlermeldung wird auf attr global verbose 1 ausgegeben, der Rest auf verbose 4.

Ab sofort wird der Fehler (nur) als JSON zurueckgegeben, sowohl die Fehlermeldung, wie auch das Input.
fhem> { my $h = json2nameValue( '{"a":"b", "c":7, <Status.MISSING_SERVICE: 1008>}' );; join("\n", map { "$_=>$h->{$_}" } keys %{$h}) }
json2nameValueErrorText=>error parsing '<Status.MISSING_SERVICE: 1008>'
json2nameValueInput=>{"a":"b", "c":7, <Status.MISSING_SERVICE: 1008>}


Bin gespannt auf dem feedback in den naechsten Tagen.
Titel: Antw:(fixed) json2namevalue: Error parsing
Beitrag von: carlos am 22 Januar 2022, 10:59:48
Hallo,
Ich bekomme folgenden Fehler:

aktuell_json2nameValueErrorText error parsing 'e-05'     2022-01-22 09:58:32
aktuell_json2nameValueInput {"wallbox":{"wert":0.01,"einheit":"W"},"netzeinspeisung":{"wert":0.01,"einheit":"W"},"speicherbeladung":{"wert":0.01,"einheit":"W"},"autarkie":{"wert":13.68,"einheit":"%"},"speicherentnahme":{"einheit":"W","wert":7.3},"stromerzeugung":{"wert":52.559,"einheit":"W"},"stromverbrauch":{"einheit":"W","wert":464.273},"netzbezug":{"einheit":"W","wert":400.764},"speicherfuellstand":{"einheit":"%","wert":1e-05}}
2022-01-22 09:58:32

bzw.

json2nameValueErrorText error parsing '"":null,"speicherbeladung":null,"netzbezug":null,"speicherentnahme":null,"wallbox":null,"stromverbrauch":null,"einheit":"Wh","speicherfuellstand":null'
2022-01-16 17:47:07
json2nameValueInput
{"stromerzeugung":null,"autarkie":null,"netzeinspeisung":null,"":null,"speicherbeladung":null,"netzbezug":null,"speicherentnahme":null,"wallbox":null,"stromverbrauch":null,"einheit":"Wh","speicherfuellstand":null}
2022-01-16 17:47:07

beim parsen.
Was kann man da machen?
Titel: Antw:(fixed) json2namevalue: Error parsing
Beitrag von: TomLee am 22 Januar 2022, 11:28:51
Ich meine bisher mitgenommen zu haben das 1e-05 in einem JSON nicht gültig (https://www.json.org/json-de.html) ist.

Man könnte den JSON vor der Übergabe an j2nv "manipulieren" ->1e-05 umrechnen in 0.00001.
Titel: Antw:(fixed) json2namevalue: Error parsing
Beitrag von: rudolfkoenig am 22 Januar 2022, 16:49:59
ZitatWas kann man da machen?
Hier melden.

Zitataktuell_json2nameValueErrorText error parsing 'e-05'     2022-01-22 09:58:32
Habs gefixt.

Zitatjson2nameValueErrorText error parsing '"":null,...
Da das laut https://www.json.org/json-en.html gueltig ist, wird ab sofort kein Fehler mehr gemeldet.
ABER: falls man keinen prefix spezifiziert, und der Wert ungleich null ist, dann wird ein Schluessel mit dem leeren String erzeugt, was spaeter vmtl. zu Problemen fuehrt.

Aus Interesse: Was erzeugt sowas?
Titel: Antw:(fixed) json2namevalue: Error parsing
Beitrag von: carlos am 22 Januar 2022, 17:03:11
Mein Senec Speicher, liefert das app API so.
Titel: Aw: (fixed) json2namevalue: Error parsing
Beitrag von: Manfi am 26 Januar 2026, 12:38:18
Habe ein ähnliches Problem beim Auslesen meines Wechselrichters über Solar Assistant:

defmod Deye12k MQTT2_DEVICE SA
attr Deye12k IODev myBroker130
attr Deye12k autocreate 1
attr Deye12k disable 0
attr Deye12k readingList SA/inverter_1/.* { json2nameValue($EVENT,'',$JSONMAP,'','device_mode') }
attr Deye12k room MQTT2_DEVICE,PV

setstate Deye12k 2026-01-26 11:48:14  293
setstate Deye12k 2026-01-24 15:52:05 33
setstate Deye12k 2026-01-25 18:00:56 IODev myBroker130
setstate Deye12k 2026-01-26 11:48:14 json2nameValueErrorText error parsing (#2) 'Discharge above 40%'
setstate Deye12k 2026-01-26 11:48:14 json2nameValueInput Discharge above 40%

Offensichtlich stört das %-Zeichen.

Wäre für Lösungsvorschläge dankbar.

Titel: Aw: (fixed) json2namevalue: Error parsing
Beitrag von: rudolfkoenig am 26 Januar 2026, 13:17:47
ZitatOffensichtlich stört das %-Zeichen.
Ich tippe eher auf das ' (Single-Quote)
Strings und Schluessel werden in JSON in " (Double Quote) eingepackt.
In JavaScript ist das egal, in JSON nicht.
Titel: Aw: (fixed) json2namevalue: Error parsing
Beitrag von: Manfi am 26 Januar 2026, 13:51:05
wenn ich die readinglist manuell erstelle..
 
attr Sun12K readingList SA/inverter_1/device_mode/state:.* device_mode\
..funktioniert es: setstate Sun12K 2026-01-26 13:44:29 device_mode Discharge above 40%
aber über j2nv geht's nicht
Titel: Aw: (fixed) json2namevalue: Error parsing
Beitrag von: Beta-User am 26 Januar 2026, 14:34:38
....da kommt anscheinend auch kein json...
Titel: Aw: (fixed) json2namevalue: Error parsing
Beitrag von: rudolfkoenig am 26 Januar 2026, 15:13:34
Ich ziehe meine vorherige Bemerkung zurueck: die ' (Single Quotes) werden von der Fehlermeldung dazugeschrieben.

Zitatwenn ich die readinglist manuell erstelle..
Das impliziert, dass die erste Variante automatisch erstellt wurde.
Das waere merkwuerdig, weil da wird kein .* im Topic generiert.