FHEM Forum

FHEM => Mobile Devices => Thema gestartet von: kud am 08 März 2014, 10:41:49

Titel: Wildcard in JSON Abfrage
Beitrag von: kud am 08 März 2014, 10:41:49
Hallo,
frage mit einem Eigenprogramm mit folgenden Code Werte ab:
http://192.168.1.104:8083/fhem?cmd=jsonlist%20Heizung1

Das funktioniert auch gut. Jedoch muß ich für jedes Device einzeln abfragen also

http://192.168.1.104:8083/fhem?cmd=jsonlist%20Heizung2     / 3 / 4 etc.

etc.
Gibt es eine Möglichkeit hier auch Wildcards zu benutzen um zb. alle Heizungen mit einmal abzufragen?

Danke und Gruß

Kai-Uwe

Titel: Antw:Wildcard in JSON Abfrage
Beitrag von: marvin78 am 08 März 2014, 10:43:55
Mach in deinem Programm doch eine Schleife mit einer Zählvariablen (hier $i) und frage dann innerhalb der Schleife so ab:

http://192.168.1.104:8083/fhem?cmd=jsonlist%20Heizung$i
Titel: Antw:Wildcard in JSON Abfrage
Beitrag von: kud am 08 März 2014, 11:55:40
Hmm... Wäre eine Idee. Aber dann sollte ich vorher wissen um wieviele Schleifenwiederholungen es geht.
Titel: Antw:Wildcard in JSON Abfrage
Beitrag von: rudolfkoenig am 08 März 2014, 11:55:57
Bitte Doku lesen: http://fhem.de/commandref.html#devspec (http://fhem.de/commandref.html#devspec)
Titel: Antw:Wildcard in JSON Abfrage
Beitrag von: rudolfkoenig am 08 März 2014, 11:58:46
Sorry, sehe gerade das devspec in jsonlist nicht funktioniert.
Da ich das Modul leider geerbt habe, werde ich schauen, dass es gefixt wird.
Titel: Antw:Wildcard in JSON Abfrage
Beitrag von: kud am 08 März 2014, 17:42:15
 :) Toll , dann wird der erzeugte Traffic doch eine ganze Ecke weniger und das Laden/Nachladen der Daten schneller.
Titel: Antw:Wildcard in JSON Abfrage
Beitrag von: rudolfkoenig am 09 März 2014, 17:26:34
Ich habe es leider nicht geschafft, JsonList so anzupassen, dass alle meiner Ansicht nach noetigen Daten auch bei Angabe von devspec liefert. Deswegen gibt es ab sofort ein JsonList2. Das alte JsonList wird irgendwannmal nach contrib wandern, die Verwendung ist ab sofort unerwuenscht.

Bei Problemen mit JsonList2 bitte melden.
Titel: Antw:Wildcard in JSON Abfrage
Beitrag von: kud am 11 März 2014, 16:48:35
Habe das neue 98_JsonList2.pm eingebunden.

Die Abfrage in FHEM-Interface geht und liefert Werte.

http://192.168.1.104:8083/fhem?cmd=jsonlist2%20Heizung_.*


Im Eigenprogramm mittels Ajax kommt jedoch nichts an.
Code:
jQuery.ajax({
          type: "GET",
          dataType: 'json',
          async: false,
          cache: false,
          url: 'http://192.168.1.104:8083/fhem',
          data: {
           cmd : 'jsonlist2 '+attribut,
           XHR : 1
          },
          success: function (data) {
...usw.

Hier wurde nur "jsonlist" auf "jsonlist2" geändert.
Muss noch irgend was anderes angepasst werden??



Titel: Antw:Wildcard in JSON Abfrage
Beitrag von: kud am 11 März 2014, 18:21:58
Die Ausgabe habe ich gerade mal verglichen... >:( alles anders  ???
Titel: Antw:Wildcard in JSON Abfrage
Beitrag von: rudolfkoenig am 12 März 2014, 09:23:35
ZitatIm Eigenprogramm mittels Ajax kommt jedoch nichts an.
Ich vermute ein Escape-Problem bei einem speziellen Wert, mit meinem Setup funktioniert es.
Kannst du bitte die per Browser zurueckgelieferten Daten mit einem JSON Validator (gibts auch online) pruefen?
Wenndas nicht geht, dann braeuchte ich dein komplettes Konfig.

Zitat...alles anders
Klar ist es anders, sonst haette ich dafuer auch kein neues Modul geschrieben.
Titel: Antw:Wildcard in JSON Abfrage
Beitrag von: kud am 12 März 2014, 16:49:32
Sicherlich gehört das Folgende in die Anfängersparde aber wie bekomme ich nun die Werte ?
Ein http://192.168.1.104:8083/fhem?cmd=jsonlist2%20CUL_WS_2
liefert :
{
  "Arg":"CUL_WS_2",
  "Results": [
  {
    "Name":"CUL_WS_2",
    "PossibleSets":"",
    "PossibleAttrs":"verbose:0,1,2,3,4,5 room group comment alias eventMap userReadings IODev do_not_notify:0,1 showtime:0,1 model:S300TH,KS300,ASH2200 ignore:0,1 event-on-change-reading event-on-update-reading event-min-interval stateFormat devStateIcon devStateStyle fm_fav fm_groups fm_name fm_order fp_Grundriss fp_Kameras fp_image icon item.* sortby structexclude webCmd",
    "Internals": {
      "CFGFN": "FHEM/cfg.Temperatur.cfg",
      "CODE": "2",
      "CUL_0_MSGCNT": "260",
      "CUL_0_RAWMSG": "K1117824116",
      "CUL_0_RSSI": "-63",
      "CUL_0_TIME": "2014-03-12 16:28:33",
      "DEF": "2",
      "LASTInputDev": "CUL_0",
      "MSGCNT": "260",
      "NAME": "CUL_WS_2",
      "NR": "120",
      "STATE": "T: 21.7  H: 41.8",
      "TYPE": "CUL_WS",
      "corr1": "0",
      "corr2": "0",
      "corr3": "0",
      "corr4": "0"
    },
    "Readings": {
      "DEVFAMILY": { "Value":"WS300", "Time":"2014-03-12 16:28:33" },
      "DEVTYPE": { "Value":"S300TH", "Time":"2014-03-12 16:28:33" },
      "humidity": { "Value":"41.8", "Time":"2014-03-12 16:28:33" },
      "state": { "Value":"T: 21.7  H: 41.8", "Time":"2014-03-12 16:28:33" },
      "temperature": { "Value":"21.7", "Time":"2014-03-12 16:28:33" }
    },
    "Attributes": {
      "alias": "Temperatur_Arbeitszimmer",
      "room": "Temperaturen"
    }
  }
  ],
  "totalResultsReturned":1
}

Mein Ajax liefert :
success: function (data) { alert(data.Arg); ......

braf "CUL_WS_2"
Aber an die "Results" Felder komme ich nicht .
Wie rufe ich zB. Results.Internals.STATE ab ?

Titel: Antw:Wildcard in JSON Abfrage
Beitrag von: rudolfkoenig am 12 März 2014, 17:36:57

for(var i1=0; i1<data.Results.length; i1++) {
  console.log(data.Results[i1].Internals.STATE);
}

P.S.: alert() ist verpoent :)
Titel: Antw:Wildcard in JSON Abfrage
Beitrag von: kud am 12 März 2014, 17:52:15
 :)
Titel: Antw:Wildcard in JSON Abfrage
Beitrag von: kud am 14 März 2014, 19:21:43
Die Abfrage bei einem zB. HM-RT funktioniert nur wenn die Readings Attribute KEINEN Bindestrich im Namen haben.
Also zb. geht
Readings.PairedTo.Value;
es geht nicht
Readings.R-backOnTime.Value;
oder
Readings.desired-temp.Value;

Kann das bitte geändert werden.

Titel: Antw:Wildcard in JSON Abfrage
Beitrag von: rudolfkoenig am 15 März 2014, 08:12:58
Readings["R-backOnTime"].Value;
oder
Readings["R-backOnTime"]["Value"];

Fuer JavaScript-Syntax-Beibringen fuehle ich mich aber wirklich nicht zustaendig.
Titel: Antw:Wildcard in JSON Abfrage
Beitrag von: kud am 15 März 2014, 08:51:38
Danke.
Ist nur komisch. Warum geht das
Readings.PairedTo.Value;
und das
Readings.desired-temp.Value;
nicht?