Erweiterung von 99_JsonList.pm

Begonnen von thoweiss, 16 Januar 2013, 09:44:17

Vorheriges Thema - Nächstes Thema

thoweiss

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

Martin Fischer

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
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

thoweiss

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

Martin Fischer

> 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
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

andre

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é

betateilchen

nimm die xmllist und mach daraus json :)

perl -MJSON::Any -MXML::Simple -le'print JSON::Any->new()->objToJson(XMLin("foo.xml"))'
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

andre

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é

betateilchen

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

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!