FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: thoweiss am 16 Januar 2013, 09:44:17

Titel: Erweiterung von 99_JsonList.pm
Beitrag von: thoweiss am 16 Januar 2013, 09:44:17
Hallo zusammen.

Ich hoffe ich poste im richtigen Bereich.

ich bastel gerade an einem Web-Interface auf Jquery-Mobile Basis.

Für meine Misterhouse-Installation habe ich sowas schon einmal gemacht.
Jetzt möchte ich das Interface gerne auf FHEM portieren.

Die Abfrage der Stati passiert über Json - FHEM hat ja die Funktion JsonList.

Leider kann ich dabei nicht angeben, für welchen Raum ich die Ausgabe gerne hätte.
Bei Xmllist geht das ja...

Wäre es möglich diese Funktionalität bei JsonList einzubauen?

Gruß,
Thorsten
Titel: Aw: Erweiterung von 99_JsonList.pm
Beitrag von: Martin Fischer am 16 Januar 2013, 19:43:03
hallo thorsten,

> Leider kann ich dabei nicht angeben, für welchen Raum ich die Ausgabe gerne hätte.
> Bei Xmllist geht das ja...
>
> Wäre es möglich diese Funktionalität bei JsonList einzubauen?

theoretisch ja, praktisch (im moment zeitlich) nicht. du kannst gerne ein anpassung machen, diese ausreichend testen und mir als modulautor einen patch senden. ich checke es dann ein.

im moment habe ich zu viele baustellen offen um mir diese auch noch aufzumachen. ich hoffe auf dein verständnis.

gruss martin
Titel: Aw: Erweiterung von 99_JsonList.pm
Beitrag von: thoweiss am 25 Januar 2013, 09:51:33
Kein Problem - ich wusste nicht das Du auch das Jsonlist erstellt hast.

Ich will mal versuchen mich da einzufuchsen...

(glaube zwar nicht das ich das schaffe - aber mal sehen)

Gruß,
Thorsten
Titel: Aw: Erweiterung von 99_JsonList.pm
Beitrag von: Martin Fischer am 25 Januar 2013, 17:53:20
> Kein Problem - ich wusste nicht das Du auch das Jsonlist erstellt hast.

nunja.. seit 2008 habe ich dann doch an der einen oder anderen stelle meine "marken" gesetzt ;-)

gruss martin
Titel: Aw: Erweiterung von 99_JsonList.pm
Beitrag von: andre am 26 August 2013, 22:33:20
Hallo zusammen,

ich nutze für eine App auch jsonlist, sowohl für ein einzelnes Gerät und für alle Infos zu Anfang (also "jsonlist" bzw. "jsonlist geraet").

Dabei habe ich jedoch festgestellt, dass das Format beider Ausgaben unterschiedlich sind.

Dies ist z.B. bei den Readings der Fall. Hier die Ausgabe "jsonlist":

"READINGS": [
            {
              "CommandAccepted": "yes",
              "measured": "2013-08-26 21:42:33"
            },
            {
              "deviceMsg": "on (to LCARS_Kommunikationsphalanx)",
              "measured": "2013-08-26 21:42:33"
            },
            {
              "level": "100 %",
              "measured": "2013-08-26 21:42:33"
            },
            {
              "state": "on",
              "measured": "2013-08-26 21:42:33"
            }
          ],

Und hier die Ausgabe bei "jsonlist geraet":

      "READINGS": {
        "CommandAccepted": {
          "TIME": "2013-08-26 21:33:37",
          "VAL": "yes"
        },
        "deviceMsg": {
          "TIME": "2013-08-26 21:33:37",
          "VAL": "off (to LCARS_Kommunikationsphalanx)"
        },
        "level": {
          "TIME": "2013-08-26 21:33:37",
          "VAL": "0 %"
        },
        "state": {
          "TIME": "2013-08-26 21:33:37",
          "VAL": "off"
        }
      },


Wie man sehen kann, wird bei der oberen Ausgabe bei den Readings ein Array genutzt, während bei der unteren Ausgabe ein Key:Value Satz genutzt wird.
Dies ist natürlich beim Parsen der Ergebnisse etwas unglücklich, da so ein unterschiedlicher Parser für beide Ergebnisse genutzt werden muss.

Gibt es dafür evtl. eine Lösung? :-(

Viele Grüße
André
Titel: Aw: Erweiterung von 99_JsonList.pm
Beitrag von: betateilchen am 27 August 2013, 10:52:52
nimm die xmllist und mach daraus json :)

perl -MJSON::Any -MXML::Simple -le'print JSON::Any->new()->objToJson(XMLin("foo.xml"))'
Titel: Aw: Erweiterung von 99_JsonList.pm
Beitrag von: andre am 27 August 2013, 13:19:51
Zitat von: betateilchen schrieb am Di, 27 August 2013 10:52nimm die xmllist und mach daraus json :)

perl -MJSON::Any -MXML::Simple -le'print JSON::Any->new()->objToJson(XMLin("foo.xml"))'

Danke für den Tipp.

Leider hilft mir das aber nicht wirklich weiter, da ich eine App für das iPhone programmiere und daher keinen Zugriff auf perl habe ;-)

Nichtsdestotrotz wäre es aber sinnvoll, wenn man diese Inkonsistenz beheben könnte, da man so JSON nur sehr schwer nutzen kann. Leider habe ich aber keine Ahnung von Perl und kann daher das Problem nicht selber beheben. Ich biete mich aber gerne als Tester oder für sonstige unterstützende Aktivitäten an :-)

Viele Grüße
André
Titel: Aw: Erweiterung von 99_JsonList.pm
Beitrag von: betateilchen am 27 August 2013, 15:00:09
Zitat von: andre schrieb am Di, 27 August 2013 13:19Leider hilft mir das aber nicht wirklich weiter, da ich eine App für das iPhone programmiere und daher keinen Zugriff auf perl habe

Aber Du liest doch die Daten aus fhem, oder? Da kannst Du Dir doch in der 99_myUtils eine Funktion bauen, die genau das oben beschriebene Konvertieren durchführt. Anstatt jsonlist rufst Du dann eben Deine eigene Funktion auf. Und innerhalb von fhem sollte perl zur Verfügung stehen, habe ich gerüchteweise gehört...