Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Import von Daten in ioBroker

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Import von Daten in ioBroker

    This topic has been deleted. Only users with topic management privileges can see it.
    • J.A.R.V.I.S.
      J.A.R.V.I.S. Developer last edited by

      Hey @deta,

      ich würde mir das mal anschauen, wenn du mir noch ein paar Informationen bereitstellst.

      1. Möchtest du die Daten auch im VIS anzeigen?

      2. Möchtest du die Daten in einzelnen Datenpunkten oder als ein Datenpunkt mit JSON?

      3. 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.

      D H 2 Replies Last reply Reply Quote 0
      • D
        deta Most Active @J.A.R.V.I.S. last edited by

        @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.

        1. 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.
        1. Möchtest du die Daten in einzelnen Datenpunkten oder als ein Datenpunkt mit JSON?
          Am besten einzelne Datenpunkte.
        1. 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.

        1 Reply Last reply Reply Quote 0
        • J.A.R.V.I.S.
          J.A.R.V.I.S. Developer last edited by J.A.R.V.I.S.

          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.

          1 Reply Last reply Reply Quote 0
          • D
            deta Most Active last edited by

            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:
            Gesamtpreis

            Arbeitspreis 19,91 + EPEX Spot DE + 0,250
            19,91 = Netznutzung, Umlagen, Abgaben, Steuern1
            EPEX = der aktuelle Börsenpreis

            Preis 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

            J.A.R.V.I.S. 1 Reply Last reply Reply Quote 0
            • J.A.R.V.I.S.
              J.A.R.V.I.S. Developer @deta last edited by

              @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.

              1 Reply Last reply Reply Quote 0
              • D
                deta Most Active last edited by

                Leider nur das in den Objekten:
                Screenshot_20191121_155939.png

                Sonst nix!

                1 Reply Last reply Reply Quote 0
                • J.A.R.V.I.S.
                  J.A.R.V.I.S. Developer last edited by J.A.R.V.I.S.

                  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.

                  D 1 Reply Last reply Reply Quote 0
                  • D
                    deta Most Active @J.A.R.V.I.S. last edited by

                    @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 ?
                    🤔

                    J.A.R.V.I.S. 1 Reply Last reply Reply Quote 0
                    • J.A.R.V.I.S.
                      J.A.R.V.I.S. Developer @deta last edited by J.A.R.V.I.S.

                      @deta die Javascript Instanz. Also die Einstellungen von Javascript. Dort musst du das einmal eintragen.

                      1 Reply Last reply Reply Quote 0
                      • D
                        deta Most Active last edited by

                        Sieht jetzt so aus...
                        Screenshot_20191121_195028.png
                        Hab die Instanz neu gestartet. Aber in den Objekten tat sich nix neues.

                        J.A.R.V.I.S. 1 Reply Last reply Reply Quote 0
                        • J.A.R.V.I.S.
                          J.A.R.V.I.S. Developer @deta last edited by

                          @deta mit dem Setup sollte es aber funktionieren.

                          181192e4-5013-461a-ae0f-4567ed7e0865-grafik.png

                          So in der Art sollte es dann aussehen. Habe auch keine extra Einstellungen, außer dem NPM Modul.

                          D 1 Reply Last reply Reply Quote 0
                          • D
                            deta Most Active @J.A.R.V.I.S. last edited by

                            @J-A-R-V-I-S hab jetzt sogar den iobroker komplett neu gestartet!
                            Die Datenpunkte werden nicht angelegt.

                            1 Reply Last reply Reply Quote 0
                            • J.A.R.V.I.S.
                              J.A.R.V.I.S. Developer last edited by J.A.R.V.I.S.

                              @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();
                              
                              1 Reply Last reply Reply Quote 0
                              • D
                                deta Most Active last edited by

                                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 aussieht 🙂

                                Sag dir bescheid dann ...

                                1 Reply Last reply Reply Quote 0
                                • D
                                  deta Most Active last edited by

                                  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..

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    deta Most Active last edited by

                                    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.

                                    1 Reply Last reply Reply Quote 0
                                    • J.A.R.V.I.S.
                                      J.A.R.V.I.S. Developer last edited by

                                      Okay, dann warte ich auf deine Rückmeldung.

                                      1 Reply Last reply Reply Quote 0
                                      • N
                                        NetFritz last edited by

                                        @J-A-R-V-I-S sagte in Import von Daten in ioBroker:

                                        https://api.awattar.de/v1/marketdata

                                        Hallo
                                        Was gibt es Neues zu diesen Script.
                                        Wollte eigentlich nur zum Testen die Preise in eine InfluxDB schreiben.
                                        Gruß NetFritz

                                        1 Reply Last reply Reply Quote 0
                                        • H
                                          Holyasgard @J.A.R.V.I.S. last edited by

                                          @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.

                                          J.A.R.V.I.S. 1 Reply Last reply Reply Quote 0
                                          • J.A.R.V.I.S.
                                            J.A.R.V.I.S. Developer @Holyasgard last edited by J.A.R.V.I.S.

                                            @Holyasgard die Daten die du bekommst sind richtig. Die API liefert den Preis als Eur/mWh zurück, auf der Seite stehen sie als Cent/kWh. Die Preise der API sind die Netto-Preise, also ohne MWSt. Die müsstest du dann selber noch oben drauf rechnen.

                                            Auf der Seite selber kannst du auch zwischen Brutto- und Netto-Preisen wechseln.

                                            H 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            410
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly javascript
                                            5
                                            24
                                            2924
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo