NEWS
[gelöst] Simple API Abfrage
-
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 dann ust du aber auch den history adapter abfragen und nicht den javascript
-
@froggi1930 dann ust du aber auch den history adapter abfragen und nicht den javascript
@arteck
Wie frage ich den denn ab... in den Objekten unter History finde ich nur admin und sonst nichts
-
@arteck
Wie frage ich den denn ab... in den Objekten unter History finde ich nur admin und sonst nichts
@froggi1930 ok ..
ich frag mal so : was soll das Endergebniss werden ?? -
@arteck
Wie frage ich den denn ab... in den Objekten unter History finde ich nur admin und sonst nichts
@froggi1930 was willst du eigentlich erreichen?
Mit der Abfrage erhältst du den aktuellen Wert eines Datenpunkts -
@froggi1930 was willst du eigentlich erreichen?
Mit der Abfrage erhältst du den aktuellen Wert eines Datenpunkts -
@froggi1930 sagte in Simple API Abfrage:
Ich möchte gerne von einem externen Rechner die Verbrauchshistorie abrufen
dann musst du entweder die History Daten aufarbeiten, oder gar mit SQL arbeiten und da auf die Datenbank zugreifen.
-
@froggi1930 sagte in Simple API Abfrage:
Ich möchte gerne von einem externen Rechner die Verbrauchshistorie abrufen
dann musst du entweder die History Daten aufarbeiten, oder gar mit SQL arbeiten und da auf die Datenbank zugreifen.
@homoran
Dann kann ich mit dem API Aufruf die History Daten gar nicht abrufen?Wie greife ich denn dann von extern auf die Datenbank zu?
-
@homoran
Dann kann ich mit dem API Aufruf die History Daten gar nicht abrufen?Wie greife ich denn dann von extern auf die Datenbank zu?
@froggi1930 sagte in Simple API Abfrage:
Wie greife ich denn dann von extern auf die Datenbank zu?
welche Datenbank nutzst du denn?
für History liegen die Daten in /opt/iobroker/iobroker-data/history nach Datum sortiert und darin nach Datenpunkt und darin als JSON
-
@froggi1930 sagte in Simple API Abfrage:
Wie greife ich denn dann von extern auf die Datenbank zu?
welche Datenbank nutzst du denn?
für History liegen die Daten in /opt/iobroker/iobroker-data/history nach Datum sortiert und darin nach Datenpunkt und darin als JSON
@homoran
Ich nutze den History Adapter... die Daten aus dem Ordner kann ich aber nicht per API zur Verfügung stellen - richtig? -
@froggi1930
https://github.com/ioBroker/ioBroker.simple-api#query-1
Scheint ein Fehler im simpleApi zu sein?http://192.168.178.89:8087/query/zigbee.0.00517.temperature/?prettyPrint&dateFrom=2022-04-01T00:00:00.000Z&dateTo=2022-04-10T00:00:00.000Z -> [ { "target": "zigbee.0.00158d00025e9517.temperature", "datapoints": [ [ 18.6, 1649591510116 ] ] } ] -
@froggi1930
https://github.com/ioBroker/ioBroker.simple-api#query-1
Scheint ein Fehler im simpleApi zu sein?http://192.168.178.89:8087/query/zigbee.0.00517.temperature/?prettyPrint&dateFrom=2022-04-01T00:00:00.000Z&dateTo=2022-04-10T00:00:00.000Z -> [ { "target": "zigbee.0.00158d00025e9517.temperature", "datapoints": [ [ 18.6, 1649591510116 ] ] } ]@mcu @apollon77
ich habe zumindest gedacht, dass ich so an die Daten herankomme... oder es ist ein Denkfehler und gar nicht so dafür gedacht -
@mcu @apollon77
ich habe zumindest gedacht, dass ich so an die Daten herankomme... oder es ist ein Denkfehler und gar nicht so dafür gedacht@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.
-
@mcu @apollon77
ich habe zumindest gedacht, dass ich so an die Daten herankomme... oder es ist ein Denkfehler und gar nicht so dafür gedacht@froggi1930 sagte in Simple API Abfrage:
und gar nicht so dafür gedacht
Laut Beschreibung sollte es so funktionieren. Wie gesagt: Fehler im simpleApi.
-
@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.
@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...
-
@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
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden