NEWS
Import von Daten in ioBroker
-
Hallo,
ich brauche mal eure Hilfe, da ich das nicht kapiere, wie es funktionieren kann.Folgendes:
Diese Tabelle soll Stündlich in ioBroker eingelesen werden und die Daten gespeichert werden.https://api.awattar.de/v1/marketdata
Daraus kommt:
Hier wird der Preis Stündlich angezeigt.
Am Ende soll in IoBroker eine Tabelle erscheinen,
Datum: 19.11.2019
Zeit: 18:00
Preis: 7,6 ctSo das ich den Stundenpreis am Tag x ermitteln kann.
Ich weis nicht wie ich das Anstelle.
Die Tabelle ändert sich Stündlich unter dem Link.Hier noch ein Hilfslink: https://www.awattar.de/services/api
Vielleicht kann jemand von euch Profis da was zusammen Stricken.
Wäre klasse.Danke schon mal
Deta
-
Hey @deta,
ich würde mir das mal anschauen, wenn du mir noch ein paar Informationen bereitstellst.
-
Möchtest du die Daten auch im VIS anzeigen?
-
Möchtest du die Daten in einzelnen Datenpunkten oder als ein Datenpunkt mit JSON?
-
Wie möchtest du den Stundenpreis an Tag X ermitteln? Per Skript? Beim Update der Daten oder im Nachhinein?
J.A.R.V.I.S.
-
-
@J-A-R-V-I-S sagte in Import von Daten in ioBroker:
Hey @deta,
ich würde mir das mal anschauen, wenn du mir noch ein paar Informationen bereitstellst.
Wäre klasse.
- Möchtest du die Daten auch im VIS anzeigen?
Wenn die Daten dann in den Objekten zu sehen ist, sollte es ja kein Problem sein.
- Möchtest du die Daten in einzelnen Datenpunkten oder als ein Datenpunkt mit JSON?
Am besten einzelne Datenpunkte.
- Wie möchtest du den Stundenpreis an Tag X ermitteln? Per Skript? Beim Update der Daten oder im Nachhinein?
Es ist so, das der Börsentarif ja jeden Tag gegen 14/15 Uhr für den nächsten Tag festgelegt wird, siehst du auch auf der Webseite dort. Um den Endgültigen Strompreis dann zu haben, muss der aktuelle Preis der Stunden plus dann die anderen Werte draufgerechnet werden.
Am besten wäre es, wenn in den Objekten den aktuellen Strompreis und dann mit dem History kann man es ja speichern in einer Tabelle / Grafik etc..
Danke schon mal.
- Möchtest du die Daten auch im VIS anzeigen?
-
Hey,
hier mein erster Ansatz. Ist noch nicht perfekt, fragt aber schon vernünftig die Daten ab.
const request = require("request"); const url = "https://api.awattar.de/v1/marketdata"; function requestData() { const options = { url: url, method: 'GET' }; request(options, (error, response, body) => { if(error) return console.log(error); if(response.statusCode == 200) { let array = JSON.parse(body).data; for(let i = 0; i < array.length; i++) { let stateBaseName = "electricity.prices." + i + "."; createState(stateBaseName + "start", "", { read: true, write: true, name: "Gultigkeitsbeginn (Uhrzeit)", type: "string", def: false }); createState(stateBaseName + "startDate", "", { read: true, write: true, name: "Gultigkeitsbeginn (Datum)", type: "string", def: false }); createState(stateBaseName + "end", "", { read: true, write: true, name: "Gultigkeitsende (Uhrzeit)", type: "string", def: false }); createState(stateBaseName + "endDate", "", { read: true, write: true, name: "Gultigkeitsende (Datum)", type: "string", def: false }); createState(stateBaseName + "price", 0, { read: true, write: true, name: "Preis", type: "number", def: 0 }); createState(stateBaseName + "unit", "", { read: true, write: true, name: "Einheit", type: "string", def: false }); let start = new Date(array[i].start_timestamp); let startTime = start.toLocaleTimeString('de-DE'); let startDate = start.toLocaleDateString('de-DE'); let end = new Date(array[i].end_timestamp); let endTime = end.toLocaleTimeString('de-DE'); let endDate = end.toLocaleDateString('de-DE'); let price = array[i].marketprice; let unit = array[i].unit; setState(stateBaseName + "start", startTime); setState(stateBaseName + "startDate", startDate); setState(stateBaseName + "end", endTime); setState(stateBaseName + "endDate", endDate); setState(stateBaseName + "price", price); setState(stateBaseName + "unit", unit); } } }); } schedule("30 15 * * *", function () { requestData(); });
Das Thema mit dem Stundenpreis (soll das der Durschnittspreis sein?) musst du mir noch ein bisschen erläutern, am besten an einem Beispiel, oder du probierst dich mit dem jetzigen selber ein bisschen aus.
J.A.R.V.I.S.
-
Mh ok danke schon mal.
Hab das Skript jetzt als JS eingebunden.
Start kein Fehler.
Wo schreibt er die Daten hin? In den Objekten?Also ich versuche es mal zu erklären.
bei dem Anbieter wird die KW / h Stündlich verändert.
d.h. je nach Börsenwert.
Der gesamte KW/h Preis ist dan jede Stunde anders.
Der Preis setzt sich dann so zusammen:
GesamtpreisArbeitspreis 19,91 + EPEX Spot DE + 0,250
19,91 = Netznutzung, Umlagen, Abgaben, Steuern1
EPEX = der aktuelle BörsenpreisPreis ist immer Cent/kWh
Wird genau hier beschrieben KLICK
Die kW bekommt man über den Discovergy Adapter.
Es langt erst mal das man den jewiligen Stunden Preis Cent/kWh hat.Dann kann man mal weiter sehen.
Das Ziel soll sein, das ich jederzeit genau sehen kann, was kommt auf die nächste Rechnung
Mfg
Deta -
@deta sagte in Import von Daten in ioBroker:
Wo schreibt er die Daten hin? In den Objekten?
Die Datenpunkte liegen, je nach Instanz, unter javascript.0.electricity ...
Das mit den Preisen schau ich mir bei Gelegenheit nochmal an. Wird aber vermutlich erst nächste Woche etwas.
J.A.R.V.I.S.
-
Leider nur das in den Objekten:
Sonst nix!
-
Hast du in der Javascript Instanz das "request" Modul hinzugefügt?
Falls nicht, einfach in der Instanz "request" bei den zusätzlichen NPM Modulen eintragen.
-
@J-A-R-V-I-S sagte in Import von Daten in ioBroker:
Hast du in der Javascript Instanz das "request" Modul hinzugefügt?
Falls nicht, einfach in der Instanz "request" bei den zusätzlichen NPM Modulen eintragen.
Mh denke nicht, weis auch jetzt nicht genau was du meinst.
Hab es als JS einfach angelegt. Wo genau muss ich da jetzt noch was machen?
Es ist ja nur das Javascipt welche Instanz ?
-
@deta die Javascript Instanz. Also die Einstellungen von Javascript. Dort musst du das einmal eintragen.
-
Sieht jetzt so aus...
Hab die Instanz neu gestartet. Aber in den Objekten tat sich nix neues. -
@deta mit dem Setup sollte es aber funktionieren.
So in der Art sollte es dann aussehen. Habe auch keine extra Einstellungen, außer dem NPM Modul.
-
@J-A-R-V-I-S hab jetzt sogar den iobroker komplett neu gestartet!
Die Datenpunkte werden nicht angelegt. -
@deta ... ich habe da etwas vergessen zu sagen
Das Skript wird nur täglich um 15:30 Uhr ausgeführt.
Du kannst es einmal triggern, indem du folgende Zeile außerhalb der Funktionen hinschreibst du einmal das Skript anstartest.
requestData();
-
Alles klar, Datenpunkte sind jetzt da!
Nur noch keine Werte. Ich lass es mal laufen und werde ja sehen was heute wenn ich nach Hause komme
nach 15:30 aussiehtSag dir bescheid dann ...
-
Jep Datenpunkte und Daten sind da....
So nun mal weiter denken...
Der Discovergy Adapter liefert nun immer den aktuellen Stromverbauch in Watt der jetzt gerade verbracht wird.
Dieser müste dann Stündlich zusammengefasst werden. Dann habe wir den Wattverbrauch der Stunde.
Das umgerechnet in kwh, das mit dem aktuellen Preis der Stunde ausgerechnet. Haben dann die Kosten für diese Stunde.
Und das für jede Stunde gerechnet am Ende nach 24 Stunden hab ich die genauen kosten für diesen Tag.Ähm ich hoffe ich hab da nix jetzt verdreht
Ich denke so muss die Berechnung erfolgen.
Bekommt man das irgendwie hin oder hab ich da einen Denkfehler..
-
Eventuell bekomme ich die Watt per Stunde über den Discovergy Adapter, da dieser per API wohl abfragbar ist.
Erst mal nix machen weiter... Das würde denke ich einiges vereinfachen...Melde mich wieder wenn ich weiteres weis.
-
Okay, dann warte ich auf deine Rückmeldung.
-
@J-A-R-V-I-S sagte in Import von Daten in ioBroker:
Hallo
Was gibt es Neues zu diesen Script.
Wollte eigentlich nur zum Testen die Preise in eine InfluxDB schreiben.
Gruß NetFritz -
@J-A-R-V-I-S
Dürfte ich Fragen wie es zwecks auslesen der API für ein Status gibt ?wenn ich die Daten der API Auslese, dann stimmen die Preise nicht mit den der auf der Website überein.
Selbst wenn man durch 10 dividiert was das beheben sollte.Kann man die API irgendwie importieren in iobroker sodass man so eine Tabelle erstellen kann wie bei Awattar.de ?
Also von 0 Uhr bis 0 Uhr Heute und dann ab 14 Uhr dann 0 Uhr bis 0 Uhr Morgen.
Hätte gerne die 2 Tabellen untereinander auf meinen Magic Mirror. Von 0 Uhr an wenn die untere nach oben geht, kann ja dann in der unteren Tabelle stehen das es erst ab 14 Uhr zur Verfügung steht.Bzw. wie kann man die Curl Werte von der API in IOBroker importieren ?
Gibt es dazu irgendwelche Youtube Videos ? Mir ist da lieder nichts bekannt.
AWattar ist eigentlich nicht unbekannt und mich wundert es schon irgendwie das man die Daten nicht per vorhandenes Awattar Modul einladen kann für IOBroker.
Selbst Magic Mirror was eine größere Community hat wie Mirr.OS kann es nicht.Ich weiß aber auch nicht ob Magic Mirror mit einer API umgehen kann.
Grüße.