FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Johannes am 08 Dezember 2013, 15:46:05

Titel: Bug in JSONList - Ausgabe ungültig
Beitrag von: Johannes am 08 Dezember 2013, 15:46:05
Hallo,

Habe gestern ein Update auf FHEM gemacht, voriges war schon eine Weile her.
Seitdem generiert mir der Aufruf von
jsonlist
eine ungültige JSON Ausgabe (z.B. prüfbar über http://jsonlint.com )

Es wird ein Objekt am Ende nicht geschlossen, oder mal wird vergessen ein Array zu schließen.
Das ist natürlich fatal für alle, die mit dem Befehl arbeiten.

Kann es mit dem letzten Commit an dem Modul zusammenhängen? :

http://sourceforge.net/p/fhem/code/3271/

Ich bekomme nämlich im Log die Meldung:

2013.12.08 15:47:04 3: JsonList: device (room=all) without TYPE

Kann bei mir kein solches Device finden, wo auch immer das herkommt....

Falls meine fhem.cfg benötigt wird bitte Bescheid geben. Eigentlich sollte aber, egal was in der cfg steht, keine ungültige Ausgabe bei jsonlist herumkommen...


Grüße,
Johannes

Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: Johannes am 09 Dezember 2013, 18:35:23
Problem hat sich scheinbar seit heutigem Update wieder gelöst. Evtl. war FHEMWEB daran beteiligt, das lieferte mir gestern noch

Use of uninitialized value $type in hash element at ./FHEM/01_FHEMWEB.pm line 2097.

Ist jetzt aber verschwunden, JSON ist wieder valide, von daher alles gut :-)
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: Mitch am 14 August 2014, 17:02:10
Hallo,

habe gerade das Front installiert und bekomme eine Fehlermeldung:

ZitatJsonList did not respond correctly. This is a bug in FHEM. This Frontend cannot work without a valid JsonList response. See this link for details and complain there: http://forum.fhem.de/index.php/topic,17292.msg113132.html#msg113132

diese verweist hier her, allerdings steht hier keine Lösung?
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: Bkel am 14 August 2014, 22:29:56
Gleiches Problem hier.

shutdown restart hilft bei mir immer kurzzeitig.

Boris
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: Mitch am 14 August 2014, 22:41:51
Bei mir geht es jetzt, warum auch immer
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: Bkel am 14 August 2014, 22:51:14
Lass mal hören, ob das anhält.
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: seppy am 17 August 2014, 23:28:30
Hallo Zusammen,

ich bekomme grundsätzlich unbrauchbaren JSON Response. Habe aber immer noch keine Ahnung warum.
Durch Anpassen der jsonlist.pm kann ich das zwar korrigieren, aber die Ursache muss wohl woanders liegen :-(
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: Johannes am 18 August 2014, 18:19:40
Ich habe auch keinen Auslöser geschweige denn eine Lösung dafür gefunden.
Ich habe aber das Frontend vor einer Weile komplett auf jsonlist2 umgestellt (neues Modul).
Damit habe ich bisher keine Probleme. Sobald ich Zeit finde werde ich den aktuellen Code bereitstellen und im zugehörigen Thread Bescheid geben.
Grüße
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: seppy am 20 August 2014, 23:23:07
Hallo Zusammen,

ich habe mir heute die jsonlist Ausgabe (bisher nur die Ausgabe) genauer angeschaut. Das erste Problem was mir aufgefallen ist liegt in jsonlist2. Ich wollte ursprünglich diese Funktion nutzen, da ich hier irgendwo gelesen habe, das die "alte" jsonlist sterben soll.

jsonlist2 liefert bei mir immer einen Fehler in der verarbeitenden Methode, da die eckigen Klammern fehlen:

jsonlist2:
{
Arg: "",
Results: [
  {
   Name: "WEB",
   PossibleSets: "clearSvgCache:noArg rereadicons:noArg",


jsonlist:
[
{
  ResultSet: "full",
  Results: [
   {
      list: "Global",


Das gleiche Problem habe ich bei jsonlist ROOMS:
{
ResultSet: "rooms",
Results: [
"Testraum",
"Testraum2",
"Testraum3",
"Testraum4",
"test"
],
totalResultsReturned: 5
}

Vielleicht bringt uns das weiter. In die Perlscripte schaue ich am Wochenende, aber perl ist nicht gerade meine Stärke  :P

Grüße,
Seppy
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: krikan am 21 August 2014, 07:06:56
Poste das doch mal im richtigen Bereich; laut http://fhem.de/MAINTAINER.txt:
FHEM/98_JsonList2.pm         rudolfkoenig         http://forum.fhem.de Automatisierung
Oder lasst es dorthin verschieben.  Dort gibt es dann auch eher Chancen auf qualifizierte Antworten.....
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: seppy am 21 August 2014, 07:54:18
Du hast recht. @Mod: bitte verschieben! Danke


Sent from my iPhone using Tapatalk
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: rudolfkoenig am 21 August 2014, 08:30:24
Verschobene Threads kriege ich normalerweise nicht mit, bitte in sochen Faellen zusaetzlich einen neuen Thread im richtigen Forums-Bereich aufmachen.

jsonlist werde ich nicht fixen, da ich selbst Schwierigkeiten mit dem geerbten Code habe, und die "gefixte" Version heisst jsonlist2. Und es soll ja auch eine Motivation zum Umstieg geben.

jsonlist2 Probleme werde ich beheben, dazu brauche ich aber unbedingt eine (abgespeckte) fhem.config, damit ich das Problem selbst reproduzieren kann. Ein Screenshot von der (angeblich) fehlerhaften Stelle im JSON hilft mir nicht.
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: seppy am 21 August 2014, 10:20:04
Werden auch die includes alle benötigt?
Anbei die fhem.cfg
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: rudolfkoenig am 21 August 2014, 11:06:19
ZitatWerden auch die includes alle benötigt?
Vermutlich ja. Ich habe mit diesem fhem.cfg und jsonlist2 eine Datei generiert, und sie http://jsonlint.com (http://jsonlint.com) gezeigt, und sie meint:
Zitat
Valid JSON


Vielleicht ist es einfacher, die "kaputte" JSON Datei hier anzuhaengen, auch wenn das fuer mich wiederum mehr Arbeit bedeutet.
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: seppy am 21 August 2014, 11:19:25
ok, hier noch die beiden include files.
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: rudolfkoenig am 21 August 2014, 11:33:08
Auch gueltig. Ich rufe zunaechst
  http://localhost:8083/fhem&cmd=jsonlist2&XHR=1
auf, und kopiere die Ausgabe nach jsonlint.com

Falls du mit dieser Methode Fehler produzieren kannst, dann liegt es entweder an der zwischenzeitlich geaenderten Readings (== fhem.state) oder an deiner Laufzeitumgebung (OS/etc).
Ist vermutlich zielfuehrender im Problemfall die json Datei hier direkt anzuhaengen.
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: seppy am 21 August 2014, 12:07:18
Ich rufe auf:
http://mediaserver:8083/fhem?cmd=jsonlist2&XHR=1

Das Ergebnis und ein Screenshot aus JSONLint habe ich beigefügt. Das Anonymisieren hat keinen Einfluss.
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: rudolfkoenig am 21 August 2014, 13:59:04
Es hat etwas gedauert, aber jetzt habe ich es endlich gesehen: in deiner Version erzeugt jsonlist2 die Variablennamen ohne "" (Arg vs. "Arg"). Ich weiss nicht wie Du das hingekriegt hast, und habe nicht mal eine gute Idee, mWn und auch laut SVN log hat jsonlist2 (und auch jsonlist, ohne die 2) die Variablennamen schon immer in "" gesteckt.

Der Anfang in meiner Version schaut so aus:
{ "Arg":"", "Results": [ { "Name":"WEB",
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: seppy am 21 August 2014, 14:04:00
Hmm das ist seltsam, ich habe kein perlscript angepasst. Letzes Update ist von 10.08.2014
version $Id: fhem.pl 6387 2014-08-10 11:55:40Z

Ich mache jetzt noch mal ein update force. Und schaue ob sich was verändert.
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: seppy am 21 August 2014, 14:10:54
Nach update force:
version $Id: fhem.pl 6425 2014-08-19 20:55:00Z

Problem besteht immer noch. Evtl. perl Json Modul die Ursache?
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: rudolfkoenig am 21 August 2014, 14:22:11
Sicher nicht, beide Module generieren die Zeilen selbst mit sprintf.

Ich vermute, dass dein Browser/etc die Konvertierung uebernimmt, und die verdaute Datenstruktur ausgibt. Bei mir schaut es aber in FireFox/Chrome/Safari richtig aus.
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: seppy am 21 August 2014, 15:19:58
Danke, ich checke das gleich zu Hause und gebe dann eine Rückmeldung.
Danke.
Titel: Bug in JSONList - Ausgabe ungültig
Beitrag von: seppy am 21 August 2014, 22:49:50
Also es liegt an einem Chromeplugin, welches - wie Du vermutet hast - die Antwort des Servers "aufbereitet"  :-[

Danke dafür, jetzt hätte ich noch eine Frage, da ich jsonlist2 etwas erweitern möchte, aber keine Antwort im Forum oder im Wiki finde, bräuchte ich nochmal Eure Unterstützung.
Wie kann ich in einem Modul auf die URI, bzw. die übergebenen GET Parameter zugreifen. Da ich von einem anderen Device (also domainübergreifend) auf FHEM zugreifen will, muss ich JSONP verwenden.
JsonP erwartet aber den Callback Parameter, der immer dynamisch generiert wird. Um in Jsonlist2 darauf reagiern zu können, müsste ich aber die URI zum zerlegen bekommen.
Ich werde es natürlich als eigenes Modul bauen.

Wer kann mir Rat geben.  ;D
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: rudolfkoenig am 22 August 2014, 07:22:34
ZitatAlso es liegt an einem Chromeplugin
http://www.tty1.net/smart-questions_de.html#dontclaimbug

ZitatWie kann ich in einem Modul auf die URI, bzw. die übergebenen GET Parameter zugreifen.
Man kann im JavaScript (oder was auch immer) cmd=set oder cmd=get mit beliebigen Parameter absetzen, das wird direkt an dem betroffenen Modul weitergeleitet. Wenn es sein soll (und ich sehe es noch nicht, wieso), dann kan das FHEM Modul via %FW_webArgs  auf alle Parameter im URL zugreifen. Alerdings ist das nur bei einem direkten Aufruf via FHEMWEB gesetzt.
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: seppy am 23 August 2014, 01:02:22
Zu dem ersten Zitat ... Asche über mein Haupt, und ist vollkommen richtig :-/
Was den zweiten Punkt angeht, vielen Dank, %FW_webArgs hatte ich gesucht. Ich hatte mich wahrscheinlich unklar ausgedrückt, mir geht es nicht um get und set im fhem Sinne, da nutze ich die bestehenden Möglichkeiten. Sondern um HTTP-GET, da der jsonp Request einen Parameter callback per url übergibt, in der Form callback=xyzCallbackfunktion. Die Antwort muss dann ja lauten xyzCallbackfunktion({JSONDATA});
Um diese Ausgabe zu erzeugen, habe ich mit meinen sehr begrenzten perl Fähigkeiten jsonlist2 erweitert, so dass die callbackfunktion berücksichtigt wird.

In diesem Zusammenhang habe ich mich gefragt, ob es möglich ist den Content-Type der Ausgabe aus einem Modul herraus zu beeinflussen?
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: seppy am 23 August 2014, 01:03:43
Die Anpassungen kann ich bei Bedarf natürlich gerne zu Verfügung stellen!
Titel: Antw:Bug in JSONList - Ausgabe ungültig
Beitrag von: rudolfkoenig am 23 August 2014, 12:16:54
Content-Type kann man nur beeinflussen, wenn man ein FHEMWEB-Extension baut, wie z.Bsp.
FLOORPLAN und SVG_showLog