NEWS
[gelöst] Simple API Abfrage
-
@mcu said in Simple API Abfrage:
@froggi1930 Dann müsstest du dir einen DP erstellen und in den die Daten von einer History-Abfrage reinstellen und dann das Ergebnis aus dem DP mit simpleApi auslesen.
Das versteh ich leider so nicht...
@froggi1930
Einen DP erstellen mit Blockly oder javascript.createState(ID_VOM_NEUEN_DP, {read: true, write: true, name: "SIMPLEAPI DP", type: "string", role: "", def: "" });Mit Blockly oder javascript die Abfrage an den History erstellen und das Ergebnis in den neuen DP schreiben.
sendTo('history.0', 'getHistory', { id: 'javascript.0.ShellyVerbrauch.SHPLG-S#1D3709#1.Relay0.gestern', options: { end: Date.now(), count: 50, aggregate: 'onchange', addId: true } }, function (result) { let arr = []; for (var i = 0; i < result.result.length; i++) { console.log(result.result[i].id + ' ' + new Date(result.result[i].ts).toISOString()); arr.push({'result':result.result[i].id,'time':new Date(result.result[i].ts).toISOString()}); } setState(ID_vom_NEUEN_DP,JSON.stringify(arr),false); });Dann mit simpleApi die neuen DP auslesen.
Das musst du Dir dann aber im Detail noch anschauen.
-
@froggi1930
Einen DP erstellen mit Blockly oder javascript.createState(ID_VOM_NEUEN_DP, {read: true, write: true, name: "SIMPLEAPI DP", type: "string", role: "", def: "" });Mit Blockly oder javascript die Abfrage an den History erstellen und das Ergebnis in den neuen DP schreiben.
sendTo('history.0', 'getHistory', { id: 'javascript.0.ShellyVerbrauch.SHPLG-S#1D3709#1.Relay0.gestern', options: { end: Date.now(), count: 50, aggregate: 'onchange', addId: true } }, function (result) { let arr = []; for (var i = 0; i < result.result.length; i++) { console.log(result.result[i].id + ' ' + new Date(result.result[i].ts).toISOString()); arr.push({'result':result.result[i].id,'time':new Date(result.result[i].ts).toISOString()}); } setState(ID_vom_NEUEN_DP,JSON.stringify(arr),false); });Dann mit simpleApi die neuen DP auslesen.
Das musst du Dir dann aber im Detail noch anschauen.
@mcu
super... danke Dir. Werde mich gleich damit einmal auseinandersetzten -
@mcu
super... danke Dir. Werde mich gleich damit einmal auseinandersetzten@froggi1930 said in Simple API Abfrage:
@mcu
super... danke Dir. Werde mich gleich damit einmal auseinandersetztenOK... das funktioniert soweit ganz OK. Es wäre natürlich viel einfacher direkt per API darauf zuzugreifen... habe mal ein Issue aufgemacht - vielleicht ist es ja wirklich ein Fehler.
Ansonsten schreibe ich die Daten jetzt auch auf ein NAS in eine Maria Datenbank. Mal sehen, was am Ende besser funktioniert.
-
Moin zusammen,
ich versuche gerade Testweise einmal eine API Abfrage zu bauen und nutze folgendes...
http://192.168.178.222:8087/query/javascript.0.ShellyVerbrauch.SHPLG-S%231D3709%231.Relay0.gestern?dateFrom=2022-04-01T12:00:00.000Z&dateTo=2022-04-08T01:00:10.000ZDabei erscheint nur der letzte Wert, obwohl in dem History Adapter Vorgänger existieren.
[ { "target": "javascript.0.ShellyVerbrauch.SHPLG-S#1D3709#1.Relay0.gestern", "datapoints": [ [ 409.55, 1649541600417 ] ] } ]Wo ist mein Fehler...?
@froggi1930 ist es besser wenn du start und endzeitpunkt als Zahl angibst (als Date.getTime() Unix epoch in ms)
Sonst muss ich mal reinschauen
-
@froggi1930 ist es besser wenn du start und endzeitpunkt als Zahl angibst (als Date.getTime() Unix epoch in ms)
Sonst muss ich mal reinschauen
@apollon77
Du meinst so...?http://192.168.178.222:8087/query/javascript.0.ShellyVerbrauch.SHPLG-S%231D3709%231.Relay0.gestern?dateFrom=1649368800402?dateTo=1649541600417... gibt trotzdem nur den letzten Wert aus
-
@apollon77
Du meinst so...?http://192.168.178.222:8087/query/javascript.0.ShellyVerbrauch.SHPLG-S%231D3709%231.Relay0.gestern?dateFrom=1649368800402?dateTo=1649541600417... gibt trotzdem nur den letzten Wert aus
@froggi1930 Naja wenn du hier bei dateTo noch ein & nutzt ... ;-)
Ansonsten: Welcher Adapter ist denn dein History Adapter? history oder sql oder influxdb? Bitte mal jeweiligen Adapter von GitHub nehmen und den (also history/sql/influxdb) auf Debug stellen. Dann die Debug AUsgabe posten ... das ist wenn etwas in dem Adapter und nicht in simple-api... weil der fragt ja nur den History Adapter
-
@froggi1930 Naja wenn du hier bei dateTo noch ein & nutzt ... ;-)
Ansonsten: Welcher Adapter ist denn dein History Adapter? history oder sql oder influxdb? Bitte mal jeweiligen Adapter von GitHub nehmen und den (also history/sql/influxdb) auf Debug stellen. Dann die Debug AUsgabe posten ... das ist wenn etwas in dem Adapter und nicht in simple-api... weil der fragt ja nur den History Adapter
@apollon77
Hätte mich jetzt echt happy gemacht, wenn es an dem fehlenden & gelegen hätte :face_with_rolling_eyes: leider bekomme ich immer noch das gleiche Ergebnis.Ich logge diesen Wert aktuell testweise auf dem History, influx und sql. Ist das unter Umständen das Problem?
Den history adapter habe ich auf debug gestellt.
Beim Start erhalte ich...
history.0 2022-04-10 21:27:54.150 info enabled logging of javascript.0.ShellyVerbrauch.SHPLG-S#1D3709#1.Relay0.gestern (Count=19), Alias=falseBeim Aufruf der Api loggt er nichts was diesen Shelly betrifft
Nachtrag...
Ich habe jetzt einmal den simple-api auf debug gestellt und bei dem Aufruf von
http://192.168.178.222:8087/query/javascript.0.ShellyVerbrauch.SHPLG-S%231D3709%231.Relay0.gestern?dateFrom=1649368800402&dateTo=1649541600417loggt er
["","query","javascript.0.ShellyVerbrauch.SHPLG-S%231D3709%231.Relay0.gestern"] {"dateFrom":"1649368800402","dateTo":"1649541600417","user":"system.user.admin"} Read last state [QUERY] response = [{"target":"javascript.0.ShellyVerbrauch.SHPLG-S#1D3709#1.Relay0.gestern","datapoints":[[409.55,1649541600417]]}] -
@froggi1930 Naja wenn du hier bei dateTo noch ein & nutzt ... ;-)
Ansonsten: Welcher Adapter ist denn dein History Adapter? history oder sql oder influxdb? Bitte mal jeweiligen Adapter von GitHub nehmen und den (also history/sql/influxdb) auf Debug stellen. Dann die Debug AUsgabe posten ... das ist wenn etwas in dem Adapter und nicht in simple-api... weil der fragt ja nur den History Adapter
-
Jetzt hast Du mich abgehängt.
1.) nirgends im simple-api code gibt es ein onChange (grosses c) ... das sendet "onchange" und das ist ein erlaubtes aggregate verfahren. ich denke zwar das es eher "none" sein sollte aber das ist erstmal ne andere Baustelle
2.) Als Datum (Code geschaut). wird alles akzeptiert was Date.parse() akzeptiert ... von daher sollte dein initial genutzter String korrekt sein. https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Date/parse#beschreibung
Zum Debug Log hatte ich gebeten den entsprechenden History-Adapter auf Debug zu stellen! Von dem kommen die Daten. Simple-API fordert die nur an
EDIT: Ok ich denke JETZT hab ichs!
Was hast Du denn in der simply-API Konfig als History-Quelle ("Datenquelle") angegeben? Wenn das nämlich leer ist dann gibt er nur den letzten Wert zurück! In deinem Log fehlen nämlich Ausgaben die zeigen das er überhaupt versucht den History Adapter zu fragen.
-
Jetzt hast Du mich abgehängt.
1.) nirgends im simple-api code gibt es ein onChange (grosses c) ... das sendet "onchange" und das ist ein erlaubtes aggregate verfahren. ich denke zwar das es eher "none" sein sollte aber das ist erstmal ne andere Baustelle
2.) Als Datum (Code geschaut). wird alles akzeptiert was Date.parse() akzeptiert ... von daher sollte dein initial genutzter String korrekt sein. https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Date/parse#beschreibung
Zum Debug Log hatte ich gebeten den entsprechenden History-Adapter auf Debug zu stellen! Von dem kommen die Daten. Simple-API fordert die nur an
EDIT: Ok ich denke JETZT hab ichs!
Was hast Du denn in der simply-API Konfig als History-Quelle ("Datenquelle") angegeben? Wenn das nämlich leer ist dann gibt er nur den letzten Wert zurück! In deinem Log fehlen nämlich Ausgaben die zeigen das er überhaupt versucht den History Adapter zu fragen.
@apollon77 :fearful: ...peinlich.... da stand natürlich nichts drin. War mir überhaupt nicht aufgefallen... jetzt geht es natürlich sofort.
Danke für die Hilfe!!!!!
-
@froggi1930 Wie hast du es gelöst? Ich bekomme nachwievor nur einen Wert.
http://192.168.178.89:8087/query/zigbee.0.00158xxxxx9517.temperature/?dateFrom=1649368800402&dateTo=1649541600417 [{"target":"zigbee.0.00158xxxxx9517.temperature","datapoints":[[18.31,1649649150312]]}]Gefunden:

-
@froggi1930 Wie hast du es gelöst? Ich bekomme nachwievor nur einen Wert.
http://192.168.178.89:8087/query/zigbee.0.00158xxxxx9517.temperature/?dateFrom=1649368800402&dateTo=1649541600417 [{"target":"zigbee.0.00158xxxxx9517.temperature","datapoints":[[18.31,1649649150312]]}]Gefunden:

-
@apollon77 Vielleicht als Bild, wenn möglich, dann sieht man direkt, dass man in der Instanz was einstellen muss?
-
@apollon77 Vielleicht als Bild, wenn möglich, dann sieht man direkt, dass man in der Instanz was einstellen muss?