ERROR: Unable to parse JSON string

Begonnen von Skell, 05 Dezember 2018, 11:52:46

Vorheriges Thema - Nächstes Thema

Skell

Moin,

seit ein paar Tagen zeigt mein TabletUI zwei Fehler an. Ich habe versucht eine Lösung zu finden, fand aber lediglich nur "ähnliche" Fehler und habe deren Lösung versucht bei mir anzuwenden.
Sprich, ich habe ein Update von FHEM und FTUI aufgespielt. (was an sich ja nicht viel ist)
Folge war, dass der Fehler scheinbar größer und schlimmer wurde. (denke ich)

Vorher hat an sich noch alles funktioniert, bis auf dass sich das TabletUI nicht mehr selbstständig aktualisiert hat. Erst nach 3-4 mal neu laden oder komplett schließen und Neuladen der Seite wurden die Informationen richtig angezeigt.

Jetzt wird gar nichts mehr angezeigt. Bis auf die Symbole, sind alle Informationen verschwunden. Und selbst die Symbole sind alle grau.

Ich habe zwei Bilder angehängt mit den Fehlern. Einmal vor den Updates und einmal danach.

Bevor ich jetzt weitere versuche starte mit Unwissenheit Dinge zu tun die irgendwo stehen weil es sich ähnlich anhört und doch mehr kaputt machen könnte, möchte ich hier lieber die erfahreneren um Hilfe bitten.

Da ich nicht weiß, welche Informationen noch benötigt werden belasse ich es erst mal hierbei. Bin natürlich bereit mehr zu liefern sobald ich weiß was Sinn macht. Dafür bin ich aber leider auf eure Hilfe angewiesen. 

EDIT1:
"JSON Lists" gibt aus:


{
  "Arg":"Lists",
  "Results": [
  ],
  "totalResultsReturned":0
}


Gruß

rudolfkoenig

Kannst du bitte dieses "Problem-JSON" hier anhaengen? Eine Moeglichkeit dafuer waere mit "attr global verbose 5" rauszufinden, welches Befehl mit welchen Parametern aufgerufen wurde, um danach das selbst im telnet oder FHEMWEB auszufuehren.

"JSON Lists" ruft JsonList2 mit dem Argument Lists auf, was ein leeres Ergebnis liefert, da kein FHEM Geraet mit dem Namen Lists existiert.

curt

Zitat von: rudolfkoenig am 06 Dezember 2018, 19:59:22
Kannst du bitte dieses "Problem-JSON" hier anhaengen? Eine Moeglichkeit dafuer waere mit "attr global verbose 5" rauszufinden, welches Befehl mit welchen Parametern aufgerufen wurde, um danach das selbst im telnet oder FHEMWEB auszufuehren.

Darf ich mich bitte mit der Frage anhängen, wie man das konkret macht? Also wie man "attr global verbose 5" setzt ist schon klar. Aber was wären konkret die nächsten Schritte, um das "Problem-JSON" erst einmal zu finden und dann noch näher einzugrenzen?

(Ja, ich habe das Problem ab und an auch, da liegt es vermutlich daran, dass das UWZ-Widget nicht mehr liefert.)
RPI 4 - Jeelink HomeMatic Z-Wave

rudolfkoenig

ZitatAber was wären konkret die nächsten Schritte, um das "Problem-JSON" erst einmal zu finden und dann noch näher einzugrenzen?
Z.Bsp. "Problem" im Browser erzeugen, parallel dazu das FHEM-Log beobachten, es nach einem FHEM-Befehl, was nach JSON riecht, durchsuchen, und dieses Befehl im telnet/FHEMWEB direkt ausfuehren.
Jungs (Maedels gibts hier kaum), ein bisschen Nachdenken und Ausprobieren (vulgo Mitarbeit) erwarte ich schon, sonst wirds langweilig, und ich gebe auf.

Skell

#4
Zitat von: rudolfkoenig am 06 Dezember 2018, 19:59:22
Kannst du bitte dieses "Problem-JSON" hier anhaengen? Eine Moeglichkeit dafuer waere mit "attr global verbose 5" rauszufinden, welches Befehl mit welchen Parametern aufgerufen wurde, um danach das selbst im telnet oder FHEMWEB auszufuehren.

"JSON Lists" ruft JsonList2 mit dem Argument Lists auf, was ein leeres Ergebnis liefert, da kein FHEM Geraet mit dem Namen Lists existiert.

Moin,

erst mal danke für die Antwort. Dann das gleiche wie bei Curt. Da ich sehr unerfahren bin was das ganze angeht, weiß ich nicht genau wie es weiter geht bzw was du meinst.

Hab es erst mal auf 5 geändert (war vorher auf 3). Dann hab ich gleich mal einen blick ins Logfile geworfen und eines ist direkt aufgefallen: Abgesehen von meinen 1201 Zeilen mit "error" im Dezember log, sind sehr viele einträge mit "

FHEMWEB WEBtablet CSRF error: csrf_229... ne csrf_752... for client WEBtablet_192.168.... / command jsonlist2 WEB, ... dann werden diverse devices aufgelistet und am ende For details see the csrfToken FHEMWEB attribute.

EDIT:

Außerdem gefühlt hunderte Einträge von:


2018.12.03 05:10:21 1: devspec2array WEBtablet,Weather_xxx,KU_Fussboden_Thermostat_Clima,WZ_Wand_Thermostat_Climate,HomeStatus,DR_Markise,["KU_Decke_Licht": Unmatched [ in regex; marked by <-- HERE in m/^([ <-- HERE "KU_Decke_Licht")$/ at fhem.pl line 1251.

2018.12.03 05:10:21 1: stacktrace:
2018.12.03 05:10:21 1:     main::devspec2array                 called by ./FHEM/98_JsonList2.pm (78)
2018.12.03 05:10:21 1:     main::CommandJsonList2              called by fhem.pl (1172)
2018.12.03 05:10:21 1:     main::AnalyzeCommand                called by fhem.pl (1025)
2018.12.03 05:10:21 1:     main::AnalyzeCommandChain           called by ./FHEM/01_FHEMWEB.pm (2517)
2018.12.03 05:10:21 1:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (850)
2018.12.03 05:10:21 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (537)
2018.12.03 05:10:21 1:     main::FW_Read                       called by fhem.pl (3512)
2018.12.03 05:10:21 1:     main::CallFn

Skell

#5
So, hab jetzt noch mal reingeschaut. Ich bekomme im 5 Minuten Takt und teilweise doppelt und dreifach innerhalb von 2 Sekunden alle 5 Minuten folgende Meldungen:


2018.12.06 23:50:36 4: WEBtablet_192.168.XXX GET /fhem/?cmd=jsonlist2+WEBtablet%2CWeather_xxx%2CKU_Fussboden_Thermostat_Clima%2CWZ_Wand_Thermostat_Climate%2CHomeStatus%2CWZ_Lichter%2CDR_Markise%2C%5B%22KU_Decke_Licht%22%3B%22KU_Decke_Licht_1%22%3B%22KU_Decke_Licht_2%22%3B%22KU_Decke_Licht_3%22%5D%2CWZ_Decke_TV_Licht%2CWZ_Decke_C_Licht%2CKU_Leiste_Licht%2CWZ_TV_Deko_Licht%2CHR_Warmwasser%2CTrash%2CGas_Wiking%2CGas_Star%2CGas_Team%2CTraffic_Work%2CTraffic_xxx%2CLight_Status+STATE+longpoll+wind_direction+wind_speed+desired-temp+measured-temp+ValvePosition+pct+state+Biotonne14tgl_days+GelberSack14tgl_days+Papiertonne4woe_days+Restabfalltonne60-240l14tgl_days+humidity+statTemperatureTendency+condition+fc2_condition+fc3_condition+fc4_condition+fc5_condition+fc6_condition+next_weekday+duration_in_traffic+delay+fc2_low_c+fc2_high_c+fc3_low_c+fc3_high_c+fc4_day_of_week+fc4_low_c+fc4_high_c+fc5_day_of_week+fc5_low_c+fc5_high_c+fc6_day_of_week+fc6_low_c+fc6_high_c+fc1_low_c+temp_c+fc1_high_c+sr+ss&fwcsrf=[...token hier...]&XHR=1&_=[...paar zahlen...]; BUFLEN:0

2018.12.06 23:50:36 5: Cmd: >jsonlist2 WEBtablet,Weather_xxx,KU_Fussboden_Thermostat_Clima,WZ_Wand_Thermostat_Climate,HomeStatus,WZ_Lichter,DR_Markise,["KU_Decke_Licht"<

2018.12.06 23:50:36 1: devspec2array WEBtablet,Weather_xxx,KU_Fussboden_Thermostat_Clima,WZ_Wand_Thermostat_Climate,HomeStatus,WZ_Lichter,DR_Markise,["KU_Decke_Licht": Unmatched [ in regex; marked by <-- HERE in m/^([ <-- HERE "KU_Decke_Licht")$/ at fhem.pl line 1296.

2018.12.06 23:50:36 1: stacktrace:
2018.12.06 23:50:36 1:     main::devspec2array                 called by ./FHEM/98_JsonList2.pm (80)
2018.12.06 23:50:36 1:     main::CommandJsonList2              called by fhem.pl (1217)
2018.12.06 23:50:36 1:     main::AnalyzeCommand                called by fhem.pl (1063)
2018.12.06 23:50:36 1:     main::AnalyzeCommandChain           called by ./FHEM/01_FHEMWEB.pm (2588)
2018.12.06 23:50:36 1:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (863)
2018.12.06 23:50:36 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (535)
2018.12.06 23:50:36 1:     main::FW_Read                       called by fhem.pl (3603)
2018.12.06 23:50:36 1:     main::CallFn                        called by fhem.pl (726)
2018.12.06 23:50:36 5: Cmd: >"KU_Decke_Licht_1"<
sh: 1: KU_Decke_Licht_1: not found
2018.12.06 23:50:37 5: Cmd: >"KU_Decke_Licht_2"<
sh: 1: KU_Decke_Licht_2: not found
2018.12.06 23:50:37 5: Cmd: >"KU_Decke_Licht_3"],WZ_Decke_TV_Licht,WZ_Decke_C_Licht,KU_Leiste_Licht,WZ_TV_Deko_Licht,HR_Warmwasser,Trash,Gas_Wiking,Gas_Star,Gas_Team,Traffic_Work,Traffic_xxx,Light_Status STATE longpoll wind_direction wind_speed desired-temp measured-temp ValvePosition pct state Biotonne14tgl_days GelberSack14tgl_days Papiertonne4woe_days Restabfalltonne60-240l14tgl_days humidity statTemperatureTendency condition fc2_condition fc3_condition fc4_condition fc5_condition fc6_condition next_weekday duration_in_traffic delay fc2_low_c fc2_high_c fc3_low_c fc3_high_c fc4_day_of_week fc4_low_c fc4_high_c fc5_day_of_week fc5_low_c fc5_high_c fc6_day_of_week fc6_low_c fc6_high_c fc1_low_c temp_c fc1_high_c sr ss<

2018.12.06 23:50:37 4: WEBtablet: /fhem/?cmd=jsonlist2+WEBtablet%2CWeather_xxx%2CKU_Fussboden_Thermostat_Clima%2CWZ_Wand_Thermostat_Climate%2CHomeStatus%2CWZ_Lichter%2CDR_Markise%2C%5B%22KU_Decke_Licht%22%3B%22KU_Decke_Licht_1%22%3B%22KU_Decke_Licht_2%22%3B%22KU_Decke_Licht_3%22%5D%2CWZ_Decke_TV_Licht%2CWZ_Decke_C_Licht%2CKU_Leiste_Licht%2CWZ_TV_Deko_Licht%2CHR_Warmwasser%2CTrash%2CGas_Wiking%2CGas_Star%2CGas_Team%2CTraffic_Work%2CTraffic_xxx%2CLight_Status+STATE+longpoll+wind_direction+wind_speed+desired-temp+measured-temp+ValvePosition+pct+state+Biotonne14tgl_days+GelberSack14tgl_days+Papiertonne4woe_days+Restabfalltonne60-240l14tgl_days+humidity+statTemperatureTendency+condition+fc2_condition+fc3_condition+fc4_condition+fc5_condition+fc6_condition+next_weekday+duration_in_traffic+delay+fc2_low_c+fc2_high_c+fc3_low_c+fc3_high_c+fc4_day_of_week+fc4_low_c+fc4_high_c+fc5_day_of_week+fc5_low_c+fc5_high_c+fc6_day_of_week+fc6_low_c+fc6_high_c+fc1_low_c+temp_c+fc1_high_c+sr+ss&fwcsrf=[...token hier...]&XHR=1&_=[...paar zahlen...] / RL:278 / application/json; charset=utf-8 / Content-Encoding: gzip
/


Ist es das was du wissen wolltest?

Außerdem:


2018.12.07 01:25:22 4: WEB_192.168.xxx GET /fhem/?cmd=%7Blocaltime%7D&XHR=1&_=[zahlen]; BUFLEN:0
2018.12.07 01:25:22 3: FHEMWEB WEB CSRF error:  ne [...token...] for client WEB_192.168.xxx / command {localtime}. For details see the csrfToken FHEMWEB attribute.
2018.12.07 01:25:22 4: WEB: /fhem/?cmd=%7Blocaltime%7D&XHR=1&_=[zahlen] / RL:20 / text/html; charset=UTF-8 / Content-Encoding: gzip
/


Ich habe heute das erste mal was von diesem csrfToken gehört. Kann es was damit zu tun haben? Habe bisher nur ein festes token im WEB.* verteilt, sonst noch nichts damit angestellt weil ich denke das ich derzeit das ständig ändernde noch nicht brauche. Abgesehen davon das ich eh noch nicht ganz verstanden habe wie ich das einbinde bzw. nutzen kann/muss. (wofür es da ist, ist mir jedoch klar).

setstate

#6
Ein Problem sehe ich mit

...arkise,["KU_Decke_Licht" <

Kommentiere das Widget, was ["KU_Decke_Licht" in der Definition hat, mal aus.

Das zweite Problem ist der crsf Error. Dafür könntest du testweise mal das Clock Widget rausnehmen oder ein class="localonly" hinzufügen

rudolfkoenig

ZitatIst es das was du wissen wolltest?
Ja, der zweite Schritt (den Befehl ausfuehren) ist nicht mehr notwendig, da das Problem auch so sichtbar ist.

Irgendwer (TabletUI?) ruftjsonlist2 ...["KU_Decke_Licht";"KU_Decke_Licht_1";"KU_Decke_Licht_2";"KU_Decke_Licht_3"]...auf.

Damit gibt es gleich drei Probleme:
- FHEM trennt Befehle an Strichpunkt (;), damit wird aus diesem "einem" Befehl gleich vier oder mehr, die anderen Teile erzeugen Fehler.
- jsonlist erwartet devSpec als Argument, und laut Definition hier evaluiert devSpec die einzelnen Bestandteile als regexp. [] hat eine besondere Bedeutung in Regexp, hier ist sicher was anderes gemeint.
- Anfuehrungszeichen ("") hat fuer devspec keine besondere Bedeutung, Daten fuer "KU_Decke_Licht" wird jsonlist2 nie zurueckliefern, da " im Geraetenamen unzulaessig ist.

Das meldet FHEM zurueck, aber nicht als JSON, und das Programm (TabletUI?) erwartet die Antwort  _immer_ als JSON, deswegen die am Anfang gemeldeten Probleme.

Ob das jetzt ein TabletUI-Bug oder Bedienfehler ist, kann ich nicht beurteilen.

Skell

#8
Daran lag es, am Küchenlicht  ::)

Am liebsten würde ich sagen, frag nicht......

Es lag zwischen den Ohren. Definitiv Bedienfehler. Ich habe von einer Lampe auf drei Hue Lampen gewechselt. Aufgrund vor Ort herrschender Gegebenheiten (Können die Lampen nur mit einem Philips Taster und TabletUI aus und an machen) habe ich in aller eile versucht die HTML umzuschreiben.


<div data-type="switch"
      data-device="KU_Decke_Licht"
      data-get="state"
      data-states='["on","off"]'
      data-set-states='["off","on"]'
      [...]
</div>


Das war der alte Code und ich habe versucht data-device="KU_Decke_Licht" in data-device='["KU_Decke_Licht","KU_Decke_Licht_1","KU_Decke_Licht_2","KU_Decke_Licht_3"]' nach dem Lampenwechsel umzuändern, um einfach mal eben zu gucken ob es geht oder nicht.
Das ich zumindest schonmal einen Schalter habe. Hab auch direkt gemerkt das es nicht geht, musste meine versuche aber sofort abbrechen weil etwas dazwischen kam und dringlicheres meine Aufmerksamkeit in Anspruch nahm.

So was passiert wenn man mal zwischen Tür und Angel versucht aber eigentlich keine Ahnung hat.
Peinlich ...

Aber zumindest draus gelernt wie man das log (in Verbindung mit verbose und was es macht) nutzen kann.

Hatte das clock widget vorerst auch mal mit raus genommen. 2 Stunden lang keine Fehlermeldungen mehr. Jetzt ist es wieder drin und das einzige was noch da ist, ist der Bad request mit dem cmd localtime.

Finde es sehr interessant wie so ein kleiner Fehler das ganze System zusammenbrechen lässt (Was das TabletUI angeht).

Jedenfalls schonmal vielen herzlichen Dank für die Hilfe. Bis auf das ein Symbol von vier gleichen derzeit nicht angezeigt wird und dem localtime Problem funktioniert schonmal das ganze UI wieder.

Skell

#9
Die letzten Error waren um 11:56...

2018.12.07 11:56:13 1: FHEMWEB SSL/HTTPS error:  SSL accept attempt failed (peer: 192.168.xxx)
2018.12.07 11:56:14 3: FHEMWEB WEB CSRF error:  ne [gesetzter csrfToken] for client WEB_192.168.xxx / command {localtime}. For details see the csrfToken FHEMWEB attribute.
2018.12.07 11:56:14 3: FHEMWEB WEB CSRF error:  ne [gesetzter csrfToken] for client WEB_192.168.xxx / command {localtime}. For details see the csrfToken FHEMWEB attribute.
2018.12.07 11:56:14 3: FHEMWEB WEB CSRF error:  ne [gesetzter csrfToken] for client WEB_192.168.xxx / command {localtime}. For details see the csrfToken FHEMWEB attribute.



und was ich mit allen Thermostaten hatte, aber eher sporadisch alles 1 bis 5 tage mal auftritt im log: (weiß nicht ob es jetzt gelöst ist mit der Licht Korrektur)


2018.12.06 21:31:15 3: FHEMWEB WEBtablet CSRF error: csrf_198498xxxxxxxxxxxx ne [gesetzter csrfToken] for client WEBtablet_192.168.xxx / command jsonlist2 WEBtablet,KU_Fussboden_Thermostat_Clima,WZ_Wand_Thermostat_Climate,BU_Thermostat_Clima,FL_Thermostat_Clima,AZ_Thermostat_Clima,SZ_Thermostat_Clima,KZ_Thermostat_Clima,KU_Fussboden_Thermostat,WZ_Wand_Thermostat,BU_Thermostat,FL_Thermostat,AZ_Thermostat,SZ_Thermostat,KZ_Thermostat,KU_Kontakt_Fenster,WZ_Kontakt_Fenster,BU_Kontakt_Fenster,FL_Kontakt_Tuer,AZ_Kontakt_Fenster,SZ_Kontakt_Fenster,KZ_Kontakt_Fenster,WZ_Links_Thermostat,Weather_Schleswig,WZ_Links_Thermostat_Clima,WZ_Rechts_Thermostat_Clima STATE longpoll desired-temp measured-temp controlMode R-btnLock Activity batteryLevel state statTemperatureTendency statHumidityTendency statWind_speedTendency statVisibilityTendency statPressureTendency statMeasured-tempTendency condition temperature humidity wind wind_direction visibility pressure ValvePosition. For details see the csrfToken FHEMWEB attribute.


EDIT:

/
2018.12.07 14:09:19 4: WEB_192.168.xxx GET /fhem/?cmd=%7Blocaltime%7D&XHR=1&_=154xxxxxxxxxx; BUFLEN:0
2018.12.07 14:09:19 3: FHEMWEB WEB CSRF error:  ne [gesetzter csrfToken] for client WEB_192.168.xxx / command {localtime}. For details see the csrfToken FHEMWEB attribute.
2018.12.07 14:09:19 4: WEB: /fhem/?cmd=%7Blocaltime%7D&XHR=1&_=154xxxxxxxxxx / RL:20 / text/html; charset=UTF-8 / Content-Encoding: gzip
/