98_jsonlist2.pm Immer wieder Fehler in der Ausgabe.

Begonnen von roman1528, 21 Januar 2017, 11:19:48

Vorheriges Thema - Nächstes Thema

roman1528

Moin.

Ich habe seit kurzem Probleme mit der jsonlist2.

FTUI holt sich die jsonlist2 für alle in FTUI angelegten Devices, liest diese aus und setzt darauf basierend die Stati der Widgets.

Seit ca. 3 Tagen sind in der jsonlist2 aber immer wieder Fehler enthalten:

  • Fehlende Zeichen wie Klammern, Doppelpunkte, Komma usw.
  • Unvollständigkeit der Datei. "offenes Ende"
  • Durcheinander gebrachte Readings
  • usw.

Auszüge:

    "Attributes": {
      "INTERVAL": "60",
      "event-on-change-reading": ".*",
itzBoxIP": "192.168.1.1",
      "group": "Hardware",
      "room": "Wohnzimmer"
    }
  },


      "R-sign": { "Value":"off", "Time":"2016-10-01 11:54:28" },
      "Re { "Value":"02:01 0A:F1 0B:00 0C:00 15:FF 18:00 00:00", "Time":"2016-10-01 11:54:28" },
      "RegL_01.": { "Value":"08:00 30:06 56:00 57:24 93:20 94:45 00:00", "Time":"2016-10-01 11:54:28" },


      "testresult": { "Value":"255", "Time":"2017-01-01 11:21:43" },
      "valveOffset": { "Value":"0", "Time":"2015-11-19 09:27:14" },
      "windowOpenDuration": { "Value":"15", "Time":"2015-11-19 owOpenTemperature": { "Value":"12.0", "Time":"2016-10-09 09:57:55" }
    },


      "userReadings": "a_count {ReadingsVal('gds','a_count',0)}"
    }
  }  ],
  "totalResultsRetu


Liegt es tatsächlich an FHEM bzw. der 98_jsonlist2.pm?

Woran kann das liegen, wenn es nicht an FHEM bzw. der 98_jsonlist2.pm liegt?
Schwaches System? Zu viele Anfragen? Zu strenge Auswertung?

Wäre super wenn jmd. helfen könnte. Weil so wie es aktuell läuft, kann ich FTUI vergessen.

Grüße^^
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

rudolfkoenig

Seit etwa drei Tagen setzt jsonlist2 Content-Type auf appication/json, was FHEMWEB mit XHR=1 auch zurueckliefert,
vorher war es text/plain. Ich kann beim Testen (auch mit Umlauten) keine Probleme feststellen. Allerdings verwende ich FTUI nicht, waere interessant zu wissen, ob andere mit FTUI Probleme haben.

roman1528

#2
Zitat von: rudolfkoenig am 21 Januar 2017, 12:58:31
waere interessant zu wissen, ob andere mit FTUI Probleme haben.

Habe dieses Thema auch ins FTUI Subforum "geteilt". Bin gespannt ob da was kommt.

Aber die Fehler bei der Ausgabe sind ja ersichtlich. Diese Ausgabe war im Browserfenster mit XHR=1

Allerdings habe ich noch ganz andere Probleme seit einigen Tagen... (CUL_HM sporadisch mehrfache Event's bei z.B. 6-fach-Taster)
2017-01-21 13:30:32 CUL_HM wz_taster_a battery: ok
2017-01-21 13:30:32 CUL_HM wz_taster_a CMDs_done
2017-01-21 13:30:32 CUL_HM wz_taster_a wz_taster_a_Btn_01 Short
2017-01-21 13:30:32 CUL_HM wz_taster_a_Btn_01 Short (to VCCU)
2017-01-21 13:30:32 CUL_HM wz_taster_a_Btn_01 trigger: Short_33
2017-01-21 13:30:32 CUL_HM wz_taster_a_Btn_01 trigger_cnt: 33
2017-01-21 13:30:32 CUL_HM wz_taster_a battery: ok
2017-01-21 13:30:32 CUL_HM wz_taster_a CMDs_done
2017-01-21 13:30:32 CUL_HM wz_taster_a wz_taster_a_Btn_01 Short
2017-01-21 13:30:32 CUL_HM wz_taster_a_Btn_01 Short (to VCCU)
2017-01-21 13:30:32 CUL_HM wz_taster_a_Btn_01 trigger: Short_33
2017-01-21 13:30:32 CUL_HM wz_taster_a_Btn_01 trigger_cnt: 33

gehört hier aber nicht dazu.

Grüße^^
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

Mario67

FHEM auf Raspberry Pi 4 mit CUL868, WMBUS,
FS20 ST, FS20 AS4-3, FS20 SU-2, FS20 DF, 1-Wire + RS-232: AB Electronics Com Pi RS232, Brandmelder + Fenster: AB Electronics IO Pi 32
BUDERUS GB142 über EMS/AVR-NET-IO, WESTAFLEX WAC250 über RS232, MySensors
mit fhem.cfg & includes glücklich

rudolfkoenig

Der erste Beitrag im verlinkten Thread zeigt, dass der Autor jsonlint3 nicht installiert hat.
Der Zweite laesst vermuten, dass irgendwer mit Content-Type:application/json was kapuutmacht, wogegen text/plain keine Probleme macht. Das ist noch zuwenig, um mein Patch zurueckzunehmen, andere waren froh ueber die Aenderung.

ZitatAber die Fehler bei der Ausgabe sind ja ersichtlich.
Mag sein, aber um sie zu reproduzieren braeuchte ich eine vollstaendige Defintion des betroffenen Geraetes, mit Attribut+Readings.
Wie es in FHEMWEB-DetailAnsicht/"Raw definition" zu sehen ist.

roman1528

Zitat von: rudolfkoenig am 23 Januar 2017, 10:13:14
... aber um sie zu reproduzieren braeuchte ich eine vollstaendige Defintion des betroffenen Geraetes, mit Attribut+Readings.
Wie es in FHEMWEB-DetailAnsicht/"Raw definition" zu sehen ist.

Es ist ja leider nicht ein bestimmtes Device. Die Fehler treten willkürlich auf... Irgendwann fehlt irgendwo irgendwas...
Wie im Eröffnungsbeitrag von mir... Mal mittendrin... Mal selbst am Ende, welches mit keinem Device zu tun hat.

Grüße^^
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

ws

Genau die von roman1528 beschriebenen Probleme habe ich auch.
Da ich nicht wusste, wo ich mit der Fehlersuche beginnen soll, habe ich die 01_FHEMWEB.pm vom 16.01. eingespielt und das hat geholfen. Komisch nur, das es bei allen anderen zu funktionieren scheint.... 

rudolfkoenig

Nein, komisch ist, dass eine korrekte Kennzeichnung des Inhalts zu Problemen fuehrt.

roman1528

Zitat von: rudolfkoenig am 23 Januar 2017, 20:28:38
Nein, komisch ist, dass eine korrekte Kennzeichnung des Inhalts zu Problemen fuehrt.

Da muss ich dir natürlich recht geben.

Ich habe die alte 98_JsonList.pm genommen damit es wieder läuft.
Fehlt bei uns vielleicht ein Perl-Modul?
Die Ausgabe wird ja Serverseitig erstellt... Der Browser zeigt das nur an. Und bei Erstellung passieren Fehler...

Mal sehen ob wir weiter eingrenzen können.

RaspberryPi 3 mit Raspbian Jessy. Immer auf dem aktuellsten Stand. Perl Version 5.20.2

Wie sieht's bei ws aus?

Grüße^^
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

ws

#9
Dann wird wohl der Fehler bei mir liegen ;)
Wo könnte ich mit der Suche beginnen?

Edit: Jessy auf Pi2 mit 5.20.2 Perl

Johannes_B

Hallo,

ich habe gerade bei meiner eigenen FHEM Instanz ein Update gemacht und die selbe Problematik wie ein Benutzer meiner App (FHEM Control) beobachten können.
Nach einer kurzen Recherche bin ich auf diesen Thread gestoßen.
Es scheint allerdings nur in Verbindung mit einer SSL verschlüsselten Verbindung zu passieren.

Scheinbar ist der Fehler mit diesem Commit rein gekommen:
https://svn.fhem.de/trac/changeset/13128/trunk/fhem/FHEM/01_FHEMWEB.pm

Nachdem ich den betroffenen Teil rückgängig gemacht habe, geht es wieder.

Ich habe das Gefühl, dass gelegentlich bei den Paketen ein paar Byte am Ende verschluckt werden.

Beispiel 1:
    "Name":"BedroomAlarmClockSundayNossibleSets":"active:noArg addRegexpPart inactive:noArg removeRegexpPart",
müsste sein
    "Name":"BedroomAlarmClockSunday",
    "PossibleSets":"active:noArg addRegexpPart inactive:noArg removeRegexpPart",


Beispiel 2:
      "room"errasse",
müsste sein
      "room": "Terrasse",


Viele Grüße

Johannes
FHEM Control - an iOS app - available on the App Store:
https://itunes.apple.com/app/id936674170

rudolfkoenig

ZitatScheinbar ist der Fehler mit diesem Commit rein gekommen:
https://svn.fhem.de/trac/changeset/13128/trunk/fhem/FHEM/01_FHEMWEB.pm
Diese Aenderung setzt nur(!) den mimetype auf "application/json; charset=utf-8", davor war es "text/plain; charset=UTF-8". Das mag zwar indirekt etwas ausloesen, ich wuerde es aber gerne behalten, weil es a) richtig ist, und b) konkrete Probleme loest.


Ich habe jetzt eine Weile mit sowas wie
  wget -q --no-check-certificate -O - 'https://localhost:8443/fhem?cmd=jsonlist2&XHR=1' > j.https2 ; diff j.https j.https2
herumgespielt, und sehe keine Probleme.

Ich vermute eher etwas (Viruspruefer) zwischen FHEM und JsonList2-Abnehmer: seitdem dieser Entitaet bekannt ist, dass es JSON ist, versucht sie die Daten zu verstehen.

Wenn mir jemand was Nachstellbares meldet, bin ich bereit es zu fixen.

Johannes_B

Zitat von: rudolfkoenig am 15 Februar 2017, 14:29:47
Diese Aenderung setzt nur(!) den mimetype auf "application/json; charset=utf-8", davor war es "text/plain; charset=UTF-8". Das mag zwar indirekt etwas ausloesen, ich wuerde es aber gerne behalten, weil es a) richtig ist, und b) konkrete Probleme loest.

Selbstverständlich liegt das nicht am Content-Type selbst, sondern an irgendetwas, das implizit daraus resultiert.

Nach einer kurzen Suche konnte ich es auf die Kompression zurückführen.
Dadurch, dass der Content-Type kein "text" mehr enthält, wird nicht mehr mittels gzip komprimiert.
Warum dadurch dann die SSL Pakete teilweise abgeschnitten werden weiß ich nicht.

Als "Fix" dafür habe ich jetzt bei mir "json" zur Abfrage hinzugefügt, sodass die Komprimierung wieder funktioniert:
  if(($FW_RETTYPE =~ m/text/i ||
      $FW_RETTYPE =~ m/json/i ||
      $FW_RETTYPE =~ m/svg/i ||
      $FW_RETTYPE =~ m/script/i) &&
     ($FW_httpheader{"Accept-Encoding"} &&
      $FW_httpheader{"Accept-Encoding"} =~ m/gzip/) &&
     $FW_use_zlib) {
    utf8::encode($FW_RET)
        if(utf8::is_utf8($FW_RET) && $FW_RET =~ m/[^\x00-\xFF]/ );
    eval { $FW_RET = Compress::Zlib::memGzip($FW_RET); };
    if($@) {
      Log 1, "memGzip: $@"; $FW_RET=""; #Forum #29939
    } else {
      $compressed = "Content-Encoding: gzip\r\n";
    }
  }



Viele Grüße

Johannes
FHEM Control - an iOS app - available on the App Store:
https://itunes.apple.com/app/id936674170

rudolfkoenig

Danke, habe json und xml hinzugefuegt und eingecheckt.
Warum jemand Text im HTTPS mitten drin kaupttmacht, gzip aber nicht, ist mir auch ein Raetsel.