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
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
Hmm... Wäre eine Idee. Aber dann sollte ich vorher wissen um wieviele Schleifenwiederholungen es geht.
Bitte Doku lesen: http://fhem.de/commandref.html#devspec (http://fhem.de/commandref.html#devspec)
Sorry, sehe gerade das devspec in jsonlist nicht funktioniert.
Da ich das Modul leider geerbt habe, werde ich schauen, dass es gefixt wird.
:) Toll , dann wird der erzeugte Traffic doch eine ganze Ecke weniger und das Laden/Nachladen der Daten schneller.
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.
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??
Die Ausgabe habe ich gerade mal verglichen... >:( alles anders ???
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.
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 ?
for(var i1=0; i1<data.Results.length; i1++) {
console.log(data.Results[i1].Internals.STATE);
}
P.S.: alert() ist verpoent :)
:)
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.
Readings["R-backOnTime"].Value;
oder
Readings["R-backOnTime"]["Value"];
Fuer JavaScript-Syntax-Beibringen fuehle ich mich aber wirklich nicht zustaendig.
Danke.
Ist nur komisch. Warum geht das
Readings.PairedTo.Value;
und das
Readings.desired-temp.Value;
nicht?