Fehlerhaftes JSONLIST2

Begonnen von Det20, 31 Januar 2017, 14:23:36

Vorheriges Thema - Nächstes Thema

Det20

Hallo,

ich habe ein seltsames Problem und weiß leider nicht so recht, wo ich mit der Suche anfangen soll. Vielleicht ist hier das falsche Forum oder die Frage wurde schon beantwortet ... Man möge mir bitte verzeihen. Also, das FTUI ruft ja die Daten vom FHEM über "?cmd=jsonlist2+&XHR=1&timeout=60000" ab. Das Problem ist, dass hier sehr häufig ein fehlerhaftes JSON Result ankommt. Aktualisiere ich die Seite oder rufe sie einfach nur auf, dann kommt es in rund 80% aller Fälle. In der Praxis fehlt dann in unterschiedlichen Zeilen mal ein :, mal ein ", mal ist der Parametername falsch. Mal fehlt der String-Abschluß oder gleich mehrere Buchstaben. Ich sehe da leider keine Logik.

Die CFG habe ich inzwischen schon gefühlte 1000 mal hoch unter runter geprüft. Devices oder Gruppen entfernt und so versucht, dem Problem auf die Schliche zu kommen. Leider ohne Ergebnis. Hat noch jemand eine Idee? Oder ist es ein bekanntes Problem? Die Updates sind alle installiert (Stand heute, 31.1.2017).

Beispielfehler:

Syntax Error: JSON.parse: expected ',' or '}' after property value in object at line ... column ... of the JSON Data

    "Readings": {
      "control": { "Value":"on fn=1 > 0.00 delay:0sec do:state off", "Time":"2017-01-25 15:16:04" },
      "current": { "Value":"0.5481 A", "Time":"2017-01-31 14:48:29" },
      "energy": { "Value":"995911 Wh", "Time":"2017-01-31 14:48:29" },
      "options": { "Value":"powerOnState:last,lock:none", "Time":"2017-01-25 15:16:02" },
=>  "power": { "Value":"99.49 W", "Time":"2017-01-31 14:48:29     "powerFactor": { "Value":"794.000", "Time":"2017-01-31 14:48:29" },
      "relayTimes": { "Value":"00000001000100020007350500074424", "Time":"2017-01-31 04:12:03" },
      "state": { "Value":"on", "Time":"2017-01-31 14:48:29" },
      "tempadjust": { "Value":"0.5 C", "Time":"2017-01-25 15:15:58" },
      "temperature": { "Value":"20.0 C (measured)", "Time":"2017-01-31 14:48:29" },
      "voltage": { "Value":"228.456 V", "Time":"2017-01-31 14:48:29" }
    },

Es betrifft nicht dieses Device im speziellen, die fehlerhafte Zeile variiert.

rudolfkoenig

ZitatEs betrifft nicht dieses Device im speziellen, die fehlerhafte Zeile variiert.
Ich meine, damit ist FHEM aus dem Spiel. Muss dazu sagen, dass ich sowas auch noch nie gesehen habe. Was mir einfaellt:
- Hardware kaputt
- Viruspruefer
- Proxy
Passiert das auch, wenn man die Daten auf dem FHEM-Server mit wget/curl abruft?
Ist HTTPS/basicAuth aktiv?

P.S.: wozu ist "timeout=60000" gut?

Det20

Ich habe es auch auf einem Rechner, der am selben Switch wie der Raspberry hängt, versucht. Kaspersky aus, kein Proxy, selbes Problem.
Aber ... Der Hinweis auf HTTPS war goldrichtig: Deaktiviere ich "attr WEB HTTPS 1", dann wird kein Fehler verursacht, selbst wenn basicAuth an ist.

timeout=60000 kommt vom Link aus FHEM => FTUI.

Real-TTX

Stimmt so nicht, hatte das gleiche Problem.

Bei mir lag es an einem Device "HM Display Fernbedienung" - es war nicht das Device, das Fehlerhafte im JSON war!

Wieso Hardware kaputt? Der Fehler ist doch hier genau beschrieben, das JSON ist kaputt. Es fehlt ja eine "}".

Ich habe noch NIE gesehen, dass ein Proxy / Virenscanner EIN Zeichen mitten im Datenstrom weglässt! Und schon garnicht wiederholt, das gleiche Zeichen....


Ich hatte durch Ausschluss, rausbekommen welches Device das Verursacht hat.  50% Der Config raus (Alle HM Geräte). Gehts Noch? Wenn Ja, von der bestehende Hälfte wieder 50%... usw...

Server: 3x Supermicro A1SAi-2750F, FHEM @ Debian-VM
Bandwidth: 800 Mbit / 100 Mbit, Failover LTE
Homematic: 2x HM-MOD-RPI-PCB (via Pi3 socat)
Z-Wave: Z-Wave.Me USB Stick (via Pi3 socat)
RFXTrx: RFXCom (via Pi3 socat)

Det20

Auf die Idee bin ich auch gekommen, also solange alles rauswerfen, bis es funktioniert. Hat leider nicht geklappt.

rudolfkoenig

ZitatWieso Hardware kaputt? Der Fehler ist doch hier genau beschrieben, das JSON ist kaputt. Es fehlt ja eine "}".
Ja, aber nur bei einem Element, was in einer Schleife erzeugt wird. Die Zeile drunter und drueber ist ok. "In der Praxis fehlt dann in unterschiedlichen Zeilen mal ein :, mal ein ", mal ist der Parametername falsch". Das kann ich mit einem Programmierfehler in JsonList2.pm nicht erklaeren, lerne aber gerne dazu.

ZitatIch habe noch NIE gesehen, dass ein Proxy / Virenscanner EIN Zeichen mitten im Datenstrom weglässt! Und schon garnicht wiederholt, das gleiche Zeichen....
Und warum genau ist das ein Beweis?
Eigentlich sollten Virenscanner HTTPS nicht mitlesen, tun sie es aber per MITM trotzdem.

Det20

#6
Ich konnte es reproduzieren, in meinem Fall ist das JSON Dingsbumbs (Object? Ergebnis? Element?) in Ordnung, wenn ich HTTPS deaktiviere.
Ist HTTPS aktiviert, dann wird größtenteils Schrott produziert.

@rudolfkoenig: Schicke Dir gerne meine Config zum debuggen.

Real-TTX

Sieht dann aber nach einem anderen Fehler aus, mit gleichem Verhalten aus. Zwischen HTTPS und HTTP wechseln hatte keine Veränderung gezeigt...

@rudolfkoenig:

ZitatUnd warum genau ist das ein Beweis?
Habe ich nicht geschrieben. Nur aufgrund der Funktionsweise eines Viren/Netzwerk-Scanners sehr sehr unwahrscheinlich. Mehr wollte ich damit nicht sagen  ;)


Server: 3x Supermicro A1SAi-2750F, FHEM @ Debian-VM
Bandwidth: 800 Mbit / 100 Mbit, Failover LTE
Homematic: 2x HM-MOD-RPI-PCB (via Pi3 socat)
Z-Wave: Z-Wave.Me USB Stick (via Pi3 socat)
RFXTrx: RFXCom (via Pi3 socat)

Det20

#8
Letztendlich lässt sich der Fehler wahrscheinlich nur mit einem Debugger finden.
Es wäre aber wirklich mal interessant woran es liegt/lag. HTTPS ist mir irgendwie lieber  :)

Skell

Moin, hast du herausfinden können woran es lag? Ich habe derzeit auch einen JSON Fehler und komme zu keiner Lösung. HTTPS deaktivieren bringt nichts.

Siehe in diesem Beitrag

Gruß