Autor Thema: Fehlerhaftes JSONLIST2  (Gelesen 632 mal)

Offline Det20

  • Full Member
  • ***
  • Beiträge: 165
Fehlerhaftes JSONLIST2
« am: 31 Januar 2017, 14:23:36 »
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.
« Letzte Änderung: 31 Januar 2017, 14:55:27 von Det20 »

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 16721
Antw:Fehlerhaftes JSONLIST2
« Antwort #1 am: 31 Januar 2017, 15:04:12 »
Zitat
Es 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?

Offline Det20

  • Full Member
  • ***
  • Beiträge: 165
Antw:Fehlerhaftes JSONLIST2
« Antwort #2 am: 31 Januar 2017, 15:33:05 »
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.

Offline Real-TTX

  • Full Member
  • ***
  • Beiträge: 141
Antw:Fehlerhaftes JSONLIST2
« Antwort #3 am: 31 Januar 2017, 15:34:44 »
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)

Offline Det20

  • Full Member
  • ***
  • Beiträge: 165
Antw:Fehlerhaftes JSONLIST2
« Antwort #4 am: 31 Januar 2017, 15:43:11 »
Auf die Idee bin ich auch gekommen, also solange alles rauswerfen, bis es funktioniert. Hat leider nicht geklappt.

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 16721
Antw:Fehlerhaftes JSONLIST2
« Antwort #5 am: 31 Januar 2017, 15:45:21 »
Zitat
Wieso 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.

Zitat
Ich 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.

Offline Det20

  • Full Member
  • ***
  • Beiträge: 165
Antw:Fehlerhaftes JSONLIST2
« Antwort #6 am: 31 Januar 2017, 16:00:33 »
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.
« Letzte Änderung: 31 Januar 2017, 16:04:22 von Det20 »

Offline Real-TTX

  • Full Member
  • ***
  • Beiträge: 141
Antw:Fehlerhaftes JSONLIST2
« Antwort #7 am: 31 Januar 2017, 16:56:24 »
Sieht dann aber nach einem anderen Fehler aus, mit gleichem Verhalten aus. Zwischen HTTPS und HTTP wechseln hatte keine Veränderung gezeigt...

@rudolfkoenig:

Zitat
Und 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)

Offline Det20

  • Full Member
  • ***
  • Beiträge: 165
Antw:Fehlerhaftes JSONLIST2
« Antwort #8 am: 31 Januar 2017, 17:06:04 »
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  :)
« Letzte Änderung: 31 Januar 2017, 17:09:46 von Det20 »

 

decade-submarginal