(fixed) json2namevalue: Error parsing

Begonnen von kjmEjfu, 10 Januar 2022, 14:35:25

Vorheriges Thema - Nächstes Thema

kjmEjfu

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?
Migriere derzeit zu Home Assistant

rudolfkoenig

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.

kjmEjfu

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?
Migriere derzeit zu Home Assistant

rudolfkoenig

Ja.
Diese Angabe ist ohne Gewaehr. :)

Beta-User

...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)?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

kjmEjfu

Naja, wenn im Fehler irgendwas drin stehen würde, was einem beim Identifizieren des entsprechenden Devices helfen würde ... ;-)
Migriere derzeit zu Home Assistant

kjmEjfu

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.
Migriere derzeit zu Home Assistant

rudolfkoenig

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.

carlos

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?
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

TomLee

#9
Ich meine bisher mitgenommen zu haben das 1e-05 in einem JSON nicht gültig ist.

Man könnte den JSON vor der Übergabe an j2nv "manipulieren" ->1e-05 umrechnen in 0.00001.

rudolfkoenig

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?

carlos

Mein Senec Speicher, liefert das app API so.
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly