Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. Geräte zu Stundenpreisen (EPEX) oder PV-Überschuss betreiben

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.4k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.5k

Geräte zu Stundenpreisen (EPEX) oder PV-Überschuss betreiben

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
awattarbilligbörseepexgünstigstrompreisstündlichtibber
156 Beiträge 24 Kommentatoren 38.2k Aufrufe 33 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • T ThomKast

    @nkoebe Hi. Aus den beiden TIBBER-EPEX-JSONs für "today" und "tomorrow" habe ich die Preise einzeln extrahiert und in separate iob-Datenpunkte geschrieben. Also ... "EPEX-Preis-today-Stunde-0" bis "EPEX-Preis-today-Stunde-23" und diese dann in Grafana eingebunden.
    Das Auslesen der JSON-Daten geht aus in dem Thread hervor: https://forum.iobroker.net/topic/60938/geräte-zu-stundenpreisen-epex-oder-pv-überschuss-betreiben/71
    Hoffe, das passt als Antwort ;-). Gruß, Thomas

    N Online
    N Online
    nkoebe
    schrieb am zuletzt editiert von
    #115

    @thomkast OK, hab ich verstanden, werd ich dann auch so machen, danke!

    1 Antwort Letzte Antwort
    0
    • T ThomKast

      Die nachfolgende Beschreibung führt die bisherige Lösung im alten Artikel fort und ermöglicht das automatische Einschalten der Waschmaschine (WM), Spülmaschine (SM) oder Geschirrspüler (GS) nicht nur bei PV-Überschuss sondern nun auch bei günstigen stündlichen Strompreisen.

      Soll heißen: Die bisherige Lösung wird nicht weiter beschrieben/aktualisiert.

      Das bisherige Konzept / die bisherigen Funktionen können im alten Beitrag eingesehen werden. Dafür fallen die nachfolgenden Ausführungen etwas :stuck_out_tongue_closed_eyes: kürzer aus. Neue Leser sollten also zuerst den alten Artikel lesen.

      Euer Feedback/Vorschläge/Verbesserungen sind wie immer gerne gesehen :+1:.


      V0.93 vom 30.01.2023

      • Wenn die Betriebsart "epex" lautet und man sich zeitlich in den "günstigen Stunden" bewegte, erfolgt nun der direkte Start der Maschine.
        Vor dieser Änderung wurde die TSD erst freigeschaltet "bst", wenn die nächste "günstige Stunde" erreicht wurde.
        @theGrinch - vielen Dank für Deine Anregung.
        Geräte-Script zum Download wurde erneuert. Die Screenshots wurden nicht aktualisiert.

      V0.92 vom 29.12.2022 mit allen Änderungen des Postverlaufs bis zum 29.12.2022

      • Erneuerung des Screenshots zu den Tibber-Datenpunkten und der Download-Datei.
      • Erneuerung der Download-Datei des TIBBER-Scripts.
      • Erneuerung des Screenshots zu den Waschmaschine-Datenpunkten. Die Download-Datei vom 10.12.2022 kann unverändert verwendet werden.
      • Erneuerung der Download-Datei des Geräte-Scripts.

      V0.91 vom 13.12.2022

      • Änderung unter 3.5 "Steckdose einschalten". Es wird der "waschvorgang" nach Änderung neu geladen. Dies war nötig, weil eine händische Freigabe, also eintragen von "fgg" in den Datenpunkt "waschvorgang" nicht berücksichtigt wurde.
      • Die Erstelle-Text-Bausteine wurden gestrafft.
      • Aktualisiertes Geräte-Script wurde eingefügt.

      V0.9 vom 10.12.2022

      • Erste Version der EPEX-Steuerung, die bereits mehrere Tage erfolgreich läuft.
      • Mit dem TIBBER-DEMO-Token "5K4MVS-OjfWhK_4yrjOlFe1F6kJXPVf7eQYggo8ebAE" (ohne " ") können die NOK-Preise abgeholt werden, ohne dass ein persönlicher Vertrag vorliegen muss. Es existiert leider kein DEMO-Token mit dem Preise des deutschen Marktes abgeholt werden können.

      Vorbereitung / Voraussetzung
      Da wir zum 31.01.23 zu TIBBER wechseln und dann anhand stündlicher Strompreise abgerechnet werden, war es nötig Verbraucher möglichst automatisch zu den Stunden mit den günstigsten Preisen zu starten. In der Umsetzung bedeutet dies, dass die Freigabe "fgg" nicht nur im Fall von PV-Überschuss, sondern auch zu günstigen Stunden erteilt werden soll.
      Die Stundenpreise stehen bereits am Vortag ab 14:00 Uhr für den Folgetage zur Verfügung und können über die TIBBER-API abgeholt werden.


      Anforderung
      Um nicht nur auf "die eine" günstigste Stunde festgelegt zu sein, sollen die Stunden ermittelt werden, in denen der Preis noch einigermaßen günstig ist. Dazu soll es möglich sein einen prozentualen Aufschlag (Hysterese) auf den günstigsten Preis zu definieren.
      Die Stunden, an denen der Strompreis unterhalb des "geringster Preis" + "Hysterese" liegt, sollen ermittelt werden.
      Die Befüllung / Der Start der Verbraucher WM/SM/GS soll zu jeder Zeit erfolgen können. Allerdings soll der Waschvorgang erst zu den günstigen Stunden gestartet werden.
      Eine neue/weitere Betriebsart "EPEX" soll zur Auswahl zur Verfügung stehen.


      Umsetzung
      Die Umsetzung erfolgt in 2 getrennten Scripten.

      1. Das TIBBER-Script sorgt für das tägliche Abholen der Stundenpreise und Ermittlung des günstigsten Preises, sowie der Stunden, zu denen die Tasmota-Steckdosen (TSD) eingeschaltet werden sollen.
      2. Über das Geräte-Script werden die verschiedenen Betriebsarten abgedeckt und die TSD geschaltet.

      1. Umsetzung: TIBBERpreise abholen und günstige Stunden ermitteln

      Folgende Datenpunkte werden benötigt: (Download der JSON-Datei unterhalb des Bildes)
      0719fe0f-59a8-4abb-b0a8-1d40a2cc7257-image.png
      JSON Datei zum runterladen: 2022-12-29_0_userdata.0.Tibber.json

      • Abholzeit = Uhrzeit, zu der die Stundenpreise bei TIBBER heruntergeladen werden sollen
      • Geringster_Preis = der kleinste Stundenpreis des Tages
      • Geringster_Preis_Stunde = die Stunde zu der der Strompreis am geringsten ist
      • Preis_Hysterese = um wieviel % soll aufgeschlagen werden, um weiterhin als "günstig" zu gelten
      • Preis_Hysterese_Stunden = Stunden, zu denen der Strompreis noch "günstig" ist. Oder Stunden, zu denen die TSD eingeschaltet wird.
      • Stundenpreise_heute = JSON Daten aus der Tibber-API für den aktuellen Tag
      • Stundenpreise_morgen = JSON Daten aus der Tibber-API für den kommenden Tag

      Zugehöriges BLOCKLY-Script: (Download der JSON-Datei unterhalb des Bildes)

      020a59cb-646a-41dd-ae59-da7f228a0865-image.pngd1753b55-1f9b-4aec-a821-84e0596ae9e7-image.png43e01cca-8ec0-40d4-a4c8-5d497fd3bcef-image.png

      Script zum runterladen: 2022-12-29_TIBBER_script_BLOCKLY.json


      2. Umsetzung: Verbraucher bei günstigen Stunden einschalten

      Das Geräte-Script, in dem die TSD abhängig der Freigabe gesteuert wird, basiert grundlegend auf der vorherigen Lösung und wurde um die EPEX-Freigabe ergänzt. Zusätzlich wurde das Script der vorherigen Lösung ein wenig gestrafft. Nachfolgend wird nur auf die EPEX-Ergänzungen eingegangen.

      Die nötigen Datenpunkte wurden wie folgt überarbeitet: (download der JSON-Datei unterhalb des Bildes)
      6b6ca2b2-50a5-4fa7-9eca-38560b8cb036-image.png JSON-Datei zum runterladen: 2022-12-10_0_userdata.0.Waschmaschine.json


      Erweitert wurde die "Betriebsart". Es kann nun zwischen "Start sofort", "EPEX" und "PV-Überschuss" gewählt werden.

      Im Geräte-Script erfolgten diese Anpassungen: (Download unterhalb der Bilder)

      Angepasste Variablen und grundlegende Beschreibung:
      de19e584-2b36-4120-901a-8961821afb8f-image.png
      Die neue Betriebsart wird abgefragt und der Anfangsstatus gesetzt:
      Der Ablauf der EPEX-Freigabe ist beschrieben worden:
      aca27e6a-52d3-472c-90e3-1ba3f1d9dc1d-image.png

      Die EPEX-Prüfung und Freigabe wurde ergänzt:
      82bb9a95-6acc-41ee-b397-b94ed7e8a5d3-image.png
      f34755b0-4f77-4e18-a917-1e31fd6c2f29-image.png

      Geräte-Script zum Download: 2023-01-30_TIBBER_script_BLOCKLY.json


      Erfahrungen / Anpassungen / Ausblick

      • Wartende Maschine öffnen:
        Aktuell ist es nicht möglich eine auf Freigabe wartende Maschine zu öffnen, um z.B. weitere Wäsche oder Geschirr einzulegen. Da die TSD ausgeschaltet ist, kann auch die Maschine nicht geöffnet werden. Hierzu bedarf es einer Funktion, die die TSD kurzzeitig einschaltet und dann wieder abschaltet, um weiterhin auf die Freigabe zu warten.

      • Kombination EPEX mit PV-Überschuss
        Über eine weitere kombinierte Betriebsart sollte es möglich sein, den ioBroker entscheiden zu lassen, ob die Geräte mit PV-Überstrom oder nach EPEX in günstigen Stunden, gestartet werden sollen.

      E Offline
      E Offline
      Einstein 0
      schrieb am zuletzt editiert von Einstein 0
      #116

      @thomkast Hallo Thomas, wir wechseln zum 01.01.24 zu Tibber und ich versuche gerade eine Lösung für mich zu erstellen, indem ich dein Script verwenden möchte, damit ich zu günstigen Zeiten unseren Akku laden kann.
      Erstmal danke für deine tolle Arbeit. Als ioBroker Neuling ist das schon nicht ohne...

      Was mir aufgefallen ist, dass dein Script eine günstige Stunde am Tag ermittelt.

      Hast du vielleicht eine Idee, wie ich sagen wir mal die 4 günstigsten Stunden innerhalb 22Uhr bis 6Uhr ermitteln kann?
      Das müsste dann reichen um den Akku zu laden.
      Vielleicht stufe ich das dann noch ab, je nachdem wie voll der Akkus ist.

      Gruß
      Einstein

      S 1 Antwort Letzte Antwort
      0
      • E Einstein 0

        @thomkast Hallo Thomas, wir wechseln zum 01.01.24 zu Tibber und ich versuche gerade eine Lösung für mich zu erstellen, indem ich dein Script verwenden möchte, damit ich zu günstigen Zeiten unseren Akku laden kann.
        Erstmal danke für deine tolle Arbeit. Als ioBroker Neuling ist das schon nicht ohne...

        Was mir aufgefallen ist, dass dein Script eine günstige Stunde am Tag ermittelt.

        Hast du vielleicht eine Idee, wie ich sagen wir mal die 4 günstigsten Stunden innerhalb 22Uhr bis 6Uhr ermitteln kann?
        Das müsste dann reichen um den Akku zu laden.
        Vielleicht stufe ich das dann noch ab, je nachdem wie voll der Akkus ist.

        Gruß
        Einstein

        S Offline
        S Offline
        Schimi
        schrieb am zuletzt editiert von
        #117

        @einstein-0

        schaue dir mal den Tibberlink adapter an... der hat so ne funktion integriert...

        Ich benutze das Script (abgeändert( und die funktionen des Adapters.... ergänzen sich super.... :-)

        E 1 Antwort Letzte Antwort
        0
        • S Schimi

          @einstein-0

          schaue dir mal den Tibberlink adapter an... der hat so ne funktion integriert...

          Ich benutze das Script (abgeändert( und die funktionen des Adapters.... ergänzen sich super.... :-)

          E Offline
          E Offline
          Einstein 0
          schrieb am zuletzt editiert von Einstein 0
          #118

          @schimi cool, danke. Da wäre ich ja mein Lebtag nicht drauf gekommen. Schau ich mir jetzt an...

          Meinst du das hier?

          fcc7f05b-702a-45bb-bebe-b209492c7fd1-grafik.png

          Verstehe nur nicht wie die LTF-Kanäle angelegt werden müssen.
          Hast du evtl. einen Screenshot von deinen, die funktionieren?
          Dank dir.

          Gruß
          Einstein

          S 1 Antwort Letzte Antwort
          0
          • E Einstein 0

            @schimi cool, danke. Da wäre ich ja mein Lebtag nicht drauf gekommen. Schau ich mir jetzt an...

            Meinst du das hier?

            fcc7f05b-702a-45bb-bebe-b209492c7fd1-grafik.png

            Verstehe nur nicht wie die LTF-Kanäle angelegt werden müssen.
            Hast du evtl. einen Screenshot von deinen, die funktionieren?
            Dank dir.

            Gruß
            Einstein

            S Offline
            S Offline
            Schimi
            schrieb am zuletzt editiert von
            #119

            @einstein-0

            tatsächlich benutze ich die LFT Kanäle gar nicht....

            wenn ich das richtig sehe kann man nicht wie du möchtest jeweils die besten stunden zwischen (z.B.) 6 und 18Uhr raussuchen lassen....

            Vielleicht mal dem entwickler schreiben.... ich benutze hauptsächlich den "Stundenblock" und da brauche ich keine genauere eingrenzung....

            Habe mich da wohl zuweit aus dem Fenster gelehnt.....

            97573aa2-7fb2-48bd-a428-6c83f5e73dfc-image.png

            0cdfefdf-d1cd-44a4-b1c7-26ea4e6be309-image.png

            1 Antwort Letzte Antwort
            0
            • E Offline
              E Offline
              Einstein 0
              schrieb am zuletzt editiert von
              #120

              Hallo zusammen,
              habe mir inzwischen eine Lösung ausgedacht und bin fast fertig.
              Frage: wie kann ich im Script nur den ersten Wert des ersten Elements ausgeben? Hier im Beispiel die Stunde 4.

              9b8ad851-f5c2-4670-9f6b-2339520ed99e-grafik.png

              Mein Script:
              071c504f-8dea-4220-a205-9b746173dfd8-grafik.png

              Danke schon mal.

              tugsiT 1 Antwort Letzte Antwort
              0
              • E Einstein 0

                Hallo zusammen,
                habe mir inzwischen eine Lösung ausgedacht und bin fast fertig.
                Frage: wie kann ich im Script nur den ersten Wert des ersten Elements ausgeben? Hier im Beispiel die Stunde 4.

                9b8ad851-f5c2-4670-9f6b-2339520ed99e-grafik.png

                Mein Script:
                071c504f-8dea-4220-a205-9b746173dfd8-grafik.png

                Danke schon mal.

                tugsiT Offline
                tugsiT Offline
                tugsi
                schrieb am zuletzt editiert von
                #121

                @einstein-0
                Moin,
                irgendwie verstehe ich gerade Dein Ansatz nicht. Vielleicht liegt es auch daran, dass es früh am Morgen ist.
                Der Adapter Tibberlink, sortiert den Preis Total in Stunden (allerdings Ordnern) für today und tommorow.
                Und Du schreibst es jetzt untereinander in einer Liste und sortierst den Preisen nach, sehe ich das richtig?
                Damit hast Du doch auch nicht gerade mehrere Stunden hintereinander mit den günstigsten Preisen, sondern nur den günstigstens Preis.

                Ich bin auch am überlegen, ob ich sowas mache, allerdings halte ich die verschiedenen Faktoren die eine Rolle spielen, für nicht gerade wenig und von daher könnte man es auch fast manuell einstellen.

                Denn wenn ich zB den günstigsten Strompreis zum laden des Akkus nehme, wann darf er denn entladen werden?
                Beispiel, der günstigste Preis wäre wie bei Dir 25,31 Cent.
                Dann macht es wenig Sinn, den bei einem Strompreis von 26 Cent wieder zu entladen.
                Du musst immer berücksichtigen, dass Du beim laden und entladen Verluste hast, manche schreiben von 20-25% sogar, dies hätte zur Folge, dass ein mit 25,31 Cent geladener Akku, sich erst lohnt, wenn er bei Größer 31,63 Cent entladen wird.

                Wenn man dies berücksichtigen will, muss man eben nicht nur den günstigsten Zeitraum zum laden suchen, sondern auch den teuersten zum entladen und dazwischen sollte er nix tun.

                Dies hätte aber zur Folge, dass man ebenso den Zeitraum der teuersten Zeit betrachten müsste, wieviel wird da in der Regel entnommen, weil was nützt mir dass, wenn ich meinen Akku schaffe voll zu laden im günstigsten Zeitraum und ich brauche davon nur ein Drittel.
                Dann ärgert man sich, wenn am übernächsten Tag der Strompreis noch günstiger wird, aber man de nAkku noch zu 2/3 voll hat ;-)

                Wie Du merkst, wenn man sich ernsthaft Gedanken macht, was möchte ich wann und wie am effektivsten, dann könnte man es bis auf die Spitze treiben.
                Deswegen bin ich da für mich noch nicht so ganz auf einen Nenner gekommen, was sinnvoll ist.

                Ich denke ein Ansatz wäre, sich sein Tagesprofil anzuschauen, wann verbrauche ich wieviel.
                Die günstigsten Strompreise entstehen in der Regel nachts, da wird auch im Hause am wenigsten verbraucht.
                Dann zu schauen, wie hoch ist die Differenz zwischen günstigsten und teuersten Tarif.
                Dieser sollte schon mindestens mehr als 25% sein, damit sich der Aufwand lohnt und man etwas gewinnt.
                Dann natürlich auch, wann ist der teuerste Preis, wird da überhaupt großartig was verbraucht ...
                Und wie oben schon beschrieben, theoretisch müsste ich den Akku blocken, dass er nicht vorzeitig schon abgibt und ich durch meine Verluste ein Minusgeschäft mache.

                Dies sind nur ein paar Überlegungen von mir, mein Nachteil ist, ich arbeite beruflich in einer Mess- und Regelabteilung, da ist es quasi mein tägliches Brot, "perfekt" zu regeln und zu optimieren, manchmal wäre es besser, man würde nicht soviel nachdenken *lach.

                Master ioBroker in Proxmox als LXC auf 1. Tiny-Lenovo, Proxmox-VM als Slave auf 2. Tinyi-Lenovo mit Zigbee und Monitor zur Visualisierung, Hauptautomatisierung über S7 auf Beckhoff CX, dazu noch Shelly, Homematic...

                E 1 Antwort Letzte Antwort
                0
                • tugsiT tugsi

                  @einstein-0
                  Moin,
                  irgendwie verstehe ich gerade Dein Ansatz nicht. Vielleicht liegt es auch daran, dass es früh am Morgen ist.
                  Der Adapter Tibberlink, sortiert den Preis Total in Stunden (allerdings Ordnern) für today und tommorow.
                  Und Du schreibst es jetzt untereinander in einer Liste und sortierst den Preisen nach, sehe ich das richtig?
                  Damit hast Du doch auch nicht gerade mehrere Stunden hintereinander mit den günstigsten Preisen, sondern nur den günstigstens Preis.

                  Ich bin auch am überlegen, ob ich sowas mache, allerdings halte ich die verschiedenen Faktoren die eine Rolle spielen, für nicht gerade wenig und von daher könnte man es auch fast manuell einstellen.

                  Denn wenn ich zB den günstigsten Strompreis zum laden des Akkus nehme, wann darf er denn entladen werden?
                  Beispiel, der günstigste Preis wäre wie bei Dir 25,31 Cent.
                  Dann macht es wenig Sinn, den bei einem Strompreis von 26 Cent wieder zu entladen.
                  Du musst immer berücksichtigen, dass Du beim laden und entladen Verluste hast, manche schreiben von 20-25% sogar, dies hätte zur Folge, dass ein mit 25,31 Cent geladener Akku, sich erst lohnt, wenn er bei Größer 31,63 Cent entladen wird.

                  Wenn man dies berücksichtigen will, muss man eben nicht nur den günstigsten Zeitraum zum laden suchen, sondern auch den teuersten zum entladen und dazwischen sollte er nix tun.

                  Dies hätte aber zur Folge, dass man ebenso den Zeitraum der teuersten Zeit betrachten müsste, wieviel wird da in der Regel entnommen, weil was nützt mir dass, wenn ich meinen Akku schaffe voll zu laden im günstigsten Zeitraum und ich brauche davon nur ein Drittel.
                  Dann ärgert man sich, wenn am übernächsten Tag der Strompreis noch günstiger wird, aber man de nAkku noch zu 2/3 voll hat ;-)

                  Wie Du merkst, wenn man sich ernsthaft Gedanken macht, was möchte ich wann und wie am effektivsten, dann könnte man es bis auf die Spitze treiben.
                  Deswegen bin ich da für mich noch nicht so ganz auf einen Nenner gekommen, was sinnvoll ist.

                  Ich denke ein Ansatz wäre, sich sein Tagesprofil anzuschauen, wann verbrauche ich wieviel.
                  Die günstigsten Strompreise entstehen in der Regel nachts, da wird auch im Hause am wenigsten verbraucht.
                  Dann zu schauen, wie hoch ist die Differenz zwischen günstigsten und teuersten Tarif.
                  Dieser sollte schon mindestens mehr als 25% sein, damit sich der Aufwand lohnt und man etwas gewinnt.
                  Dann natürlich auch, wann ist der teuerste Preis, wird da überhaupt großartig was verbraucht ...
                  Und wie oben schon beschrieben, theoretisch müsste ich den Akku blocken, dass er nicht vorzeitig schon abgibt und ich durch meine Verluste ein Minusgeschäft mache.

                  Dies sind nur ein paar Überlegungen von mir, mein Nachteil ist, ich arbeite beruflich in einer Mess- und Regelabteilung, da ist es quasi mein tägliches Brot, "perfekt" zu regeln und zu optimieren, manchmal wäre es besser, man würde nicht soviel nachdenken *lach.

                  E Offline
                  E Offline
                  Einstein 0
                  schrieb am zuletzt editiert von
                  #122

                  @tugsi danke für deinen ausführlichen Beitrag. Was ich möchte ist eigentlich ganz einfach. Es sollen die 4 günstigsten Stunden zwischen 22 und 6 Uhr ermittelt werden in denen ich meinen Akku laden kann.
                  Dazu habe ich die Werte aus TibberLink ausgelesen und sortiert. Funktioniert auch soweit.
                  Jetzt muss ich die besagten 4 Stunden verteilt auf die Objekte schreiben. Also beste Stunde 1 bis 4.
                  Danach kann ich die 4 Werte in mein Ladescript einbinden.
                  4h deswegen, da ich mit 4kw laden möchte und meine Akku 16kwh hat.
                  Hast du eine Idee wie ich nur den Stundenwert in das Objekte schreiben kann?
                  Gruß Einstein

                  tugsiT 1 Antwort Letzte Antwort
                  0
                  • E Einstein 0

                    @tugsi danke für deinen ausführlichen Beitrag. Was ich möchte ist eigentlich ganz einfach. Es sollen die 4 günstigsten Stunden zwischen 22 und 6 Uhr ermittelt werden in denen ich meinen Akku laden kann.
                    Dazu habe ich die Werte aus TibberLink ausgelesen und sortiert. Funktioniert auch soweit.
                    Jetzt muss ich die besagten 4 Stunden verteilt auf die Objekte schreiben. Also beste Stunde 1 bis 4.
                    Danach kann ich die 4 Werte in mein Ladescript einbinden.
                    4h deswegen, da ich mit 4kw laden möchte und meine Akku 16kwh hat.
                    Hast du eine Idee wie ich nur den Stundenwert in das Objekte schreiben kann?
                    Gruß Einstein

                    tugsiT Offline
                    tugsiT Offline
                    tugsi
                    schrieb am zuletzt editiert von
                    #123

                    @einstein-0 sagte in Geräte zu Stundenpreisen (EPEX) oder PV-Überschuss betreiben:

                    Hast du eine Idee wie ich nur den Stundenwert in das Objekte schreiben kann?

                    Ich bin leider nicht ganz so fit im Scripting.
                    Es gibt im JavaScript aber der Befehl

                    .charAt(1)
                    

                    Damit nimmt er den zweiten "Wert" in Deiner Zeichenfolge (Zeichenfolge fängt immer mit 0 an, also 0,1,2,3,4...
                    Du hast ja

                    ´4´,0.2531
                    

                    da stehen somit wäre das erste Hochzeichen charAt(0), Dein Stundenwert eben charAt(1) usw.

                    Vor dem Punkt steht Dein Objekt.
                    Also irgendwas mit

                    ´GünstigsteStunde1´.charAt(1)
                    

                    Damit hast dann nur den Stundenwert (Ich weiß jetzt nur nicht, ob der Datenpunkt richtig angegeben wurde).

                    Irgendwie so, schon mal in die Richtung geschubst.

                    Master ioBroker in Proxmox als LXC auf 1. Tiny-Lenovo, Proxmox-VM als Slave auf 2. Tinyi-Lenovo mit Zigbee und Monitor zur Visualisierung, Hauptautomatisierung über S7 auf Beckhoff CX, dazu noch Shelly, Homematic...

                    T 1 Antwort Letzte Antwort
                    0
                    • tugsiT tugsi

                      @einstein-0 sagte in Geräte zu Stundenpreisen (EPEX) oder PV-Überschuss betreiben:

                      Hast du eine Idee wie ich nur den Stundenwert in das Objekte schreiben kann?

                      Ich bin leider nicht ganz so fit im Scripting.
                      Es gibt im JavaScript aber der Befehl

                      .charAt(1)
                      

                      Damit nimmt er den zweiten "Wert" in Deiner Zeichenfolge (Zeichenfolge fängt immer mit 0 an, also 0,1,2,3,4...
                      Du hast ja

                      ´4´,0.2531
                      

                      da stehen somit wäre das erste Hochzeichen charAt(0), Dein Stundenwert eben charAt(1) usw.

                      Vor dem Punkt steht Dein Objekt.
                      Also irgendwas mit

                      ´GünstigsteStunde1´.charAt(1)
                      

                      Damit hast dann nur den Stundenwert (Ich weiß jetzt nur nicht, ob der Datenpunkt richtig angegeben wurde).

                      Irgendwie so, schon mal in die Richtung geschubst.

                      T Offline
                      T Offline
                      ThomKast
                      schrieb am zuletzt editiert von
                      #124

                      @tugsi
                      @Einstein-0
                      Hallo zusammen und sorry, dass ich mich zwischenzeitlich nicht habe melden können. Vielleicht kann meine Info Euch ja dennoch unterstützen...

                      Dem gesamten Ansatz möchte ich voranstellen, dass das Laden einer PV-Batterie mit Netzstrom NICHT ZULÄSSIG IST, wenn die Batterie Teil einer PV-Anlage mit EEG-Förderung ist.
                      ... nur zur Sicherheit... Ich gehe davon aus, dass dies in diesem Fall nicht zutrifft.

                      Die Gedanke und Ansätze von @tugsi teile ich. An der Stelle breche ich mir auch gerade die Finger - aua :grinning: . Mal schauen was uns dazu noch einfällt. Im Moment ist dieser Teil zurückgestellt.

                      Für das Laden meines BEVs hatte ich die Notwendigkeit die günstigen Stunden über einen Zeitraum von bis zu 48h aus den Tibberdaten zu ermitteln. Da ich nicht mit den Werten in den einzelnen Datenpunktordnern arbeite, habe ich dies über eine Liste realisiert. Alle Werte (Preis, Stunde, Reihenfolge) werden in eine Liste geschrieben. Diese Liste wird dann sortiert, umgestellt, gekürzt bis es passt.

                      2023-12-07_EPEX_TIBBER_günstige Stunden zum Laden.json

                      Sofern es Euch hilft und Ihr die Zeit investieren möchtet... Die relevanten Abschnitte finden sich in "FKT_4_..." und "FKT_5_...". Leider schaffe ich es nicht, das Skript umfangreicher zu erläutern... Vielleicht findet sich für Euch aber noch ein Ansatz.

                      In einem anderen Thread beschrieb ich mal den Vorgänger des eingefügten Scripts.
                      https://forum.iobroker.net/topic/68266/bev-mit-epex-börsen-strom-laden?_=1701958474745
                      Die Beschreibung passt also nicht mehr komplett, aber die Ausführungen zu den beiden Funktionen passen noch.

                      Beste Grüße, Thomas

                      tugsiT 2 Antworten Letzte Antwort
                      0
                      • T ThomKast

                        @tugsi
                        @Einstein-0
                        Hallo zusammen und sorry, dass ich mich zwischenzeitlich nicht habe melden können. Vielleicht kann meine Info Euch ja dennoch unterstützen...

                        Dem gesamten Ansatz möchte ich voranstellen, dass das Laden einer PV-Batterie mit Netzstrom NICHT ZULÄSSIG IST, wenn die Batterie Teil einer PV-Anlage mit EEG-Förderung ist.
                        ... nur zur Sicherheit... Ich gehe davon aus, dass dies in diesem Fall nicht zutrifft.

                        Die Gedanke und Ansätze von @tugsi teile ich. An der Stelle breche ich mir auch gerade die Finger - aua :grinning: . Mal schauen was uns dazu noch einfällt. Im Moment ist dieser Teil zurückgestellt.

                        Für das Laden meines BEVs hatte ich die Notwendigkeit die günstigen Stunden über einen Zeitraum von bis zu 48h aus den Tibberdaten zu ermitteln. Da ich nicht mit den Werten in den einzelnen Datenpunktordnern arbeite, habe ich dies über eine Liste realisiert. Alle Werte (Preis, Stunde, Reihenfolge) werden in eine Liste geschrieben. Diese Liste wird dann sortiert, umgestellt, gekürzt bis es passt.

                        2023-12-07_EPEX_TIBBER_günstige Stunden zum Laden.json

                        Sofern es Euch hilft und Ihr die Zeit investieren möchtet... Die relevanten Abschnitte finden sich in "FKT_4_..." und "FKT_5_...". Leider schaffe ich es nicht, das Skript umfangreicher zu erläutern... Vielleicht findet sich für Euch aber noch ein Ansatz.

                        In einem anderen Thread beschrieb ich mal den Vorgänger des eingefügten Scripts.
                        https://forum.iobroker.net/topic/68266/bev-mit-epex-börsen-strom-laden?_=1701958474745
                        Die Beschreibung passt also nicht mehr komplett, aber die Ausführungen zu den beiden Funktionen passen noch.

                        Beste Grüße, Thomas

                        tugsiT Offline
                        tugsiT Offline
                        tugsi
                        schrieb am zuletzt editiert von
                        #125

                        @thomkast sagte in Geräte zu Stundenpreisen (EPEX) oder PV-Überschuss betreiben:

                        Dem gesamten Ansatz möchte ich voranstellen, dass das Laden einer PV-Batterie mit Netzstrom NICHT ZULÄSSIG IST, wenn die Batterie Teil einer PV-Anlage mit EEG-Förderung ist.

                        Der Passus ist mir bekannt und im Grunde gibt es dazu ausreichend kontroverse Diskussionen und Argumente im Netz ;-)
                        Es gibt sogar Aussagen die sagen, es wäre doch durchaus möglich.
                        Was allerdings zwingend nicht erlaubt ist, dass einspeisen ins Netz durch die Batterie.

                        Ich möchte das hier jetzt auch nicht aufdröseln, soll jeder selber sich ein Bild im Netz machen.
                        Ich lade mein gefördertes Elektroauto mit Netzstrom, dies ist erlaubt.
                        Mein um einiges kleinerer Speicher, für Eigenbedarf (ich rede nicht von Zurückspeisen ins Netz), darf ich nicht benutzen, weil ich eine 20 Jahresförderung für eingespeisten Strom bekomme ...
                        Und dies obwohl ich zweckdienlich einen Überstrom im deutschen Netz nutze und somit für Netzstabilität sorge ...
                        Ich sage nur, finde den Fehler.

                        Aber korrekt wäre es anders . Gut, dass Du nochmal darauf hingewiesen hast (das meine ich ehrlich und nicht ironisch!).

                        Das Laden meines Autos mache ich semiautomatisch, ich habe eine selbstgebaute openWB, noch mit der 1.9er Software. Die holt sich von Tibber die Daten und zeigt mir den Strompreis an.
                        Da kann ich dann einstellen, bei welchem Strompreis ich laden möchte, wenn der unterschritten wird.
                        Bildschirmfoto 2023-12-07 um 16.27.47.png
                        Ja, dies passiert händisch, weil es ja auch davon abhängt, wie brauche ich das Auto und wie ist der Preis.

                        Beispiel, ich weiß, morgen fahre ich mindestens 150km, brauche also dementsprechende Ladung, dann gibt es für mich folgende Szenarien:

                        1. Akku ist ausreichend voll, Strompreis mir persönlich zu hoch = nix tun
                        2. Akku ausreichend voll, Strompreis aber günstig = lade in der Zeit den Akku nach
                        3. Akku zu leer, Strompreis hoch = günstigste Zeit wählen und nur das "Minimum" nachladen plus Reserve
                        4. Akku zu leer, Strompreis günstig = wie Punkt 2

                        Dein Script schaue ich mir mal in Ruhe an, wenn ich mehr Muse habe, wie gesagt, ich bin mir da unsicher, ob ich das automatisieren sollte.

                        Gruß Thomas :-)

                        Master ioBroker in Proxmox als LXC auf 1. Tiny-Lenovo, Proxmox-VM als Slave auf 2. Tinyi-Lenovo mit Zigbee und Monitor zur Visualisierung, Hauptautomatisierung über S7 auf Beckhoff CX, dazu noch Shelly, Homematic...

                        1 Antwort Letzte Antwort
                        0
                        • T ThomKast

                          @tugsi
                          @Einstein-0
                          Hallo zusammen und sorry, dass ich mich zwischenzeitlich nicht habe melden können. Vielleicht kann meine Info Euch ja dennoch unterstützen...

                          Dem gesamten Ansatz möchte ich voranstellen, dass das Laden einer PV-Batterie mit Netzstrom NICHT ZULÄSSIG IST, wenn die Batterie Teil einer PV-Anlage mit EEG-Förderung ist.
                          ... nur zur Sicherheit... Ich gehe davon aus, dass dies in diesem Fall nicht zutrifft.

                          Die Gedanke und Ansätze von @tugsi teile ich. An der Stelle breche ich mir auch gerade die Finger - aua :grinning: . Mal schauen was uns dazu noch einfällt. Im Moment ist dieser Teil zurückgestellt.

                          Für das Laden meines BEVs hatte ich die Notwendigkeit die günstigen Stunden über einen Zeitraum von bis zu 48h aus den Tibberdaten zu ermitteln. Da ich nicht mit den Werten in den einzelnen Datenpunktordnern arbeite, habe ich dies über eine Liste realisiert. Alle Werte (Preis, Stunde, Reihenfolge) werden in eine Liste geschrieben. Diese Liste wird dann sortiert, umgestellt, gekürzt bis es passt.

                          2023-12-07_EPEX_TIBBER_günstige Stunden zum Laden.json

                          Sofern es Euch hilft und Ihr die Zeit investieren möchtet... Die relevanten Abschnitte finden sich in "FKT_4_..." und "FKT_5_...". Leider schaffe ich es nicht, das Skript umfangreicher zu erläutern... Vielleicht findet sich für Euch aber noch ein Ansatz.

                          In einem anderen Thread beschrieb ich mal den Vorgänger des eingefügten Scripts.
                          https://forum.iobroker.net/topic/68266/bev-mit-epex-börsen-strom-laden?_=1701958474745
                          Die Beschreibung passt also nicht mehr komplett, aber die Ausführungen zu den beiden Funktionen passen noch.

                          Beste Grüße, Thomas

                          tugsiT Offline
                          tugsiT Offline
                          tugsi
                          schrieb am zuletzt editiert von
                          #126

                          @thomkast sagte in Geräte zu Stundenpreisen (EPEX) oder PV-Überschuss betreiben:

                          Sofern es Euch hilft und Ihr die Zeit investieren möchtet... Die relevanten Abschnitte finden sich in "FKT_4_..." und "FKT_5_...". Leider schaffe ich es nicht, das Skript umfangreicher zu erläutern... Vielleicht findet sich für Euch aber noch ein Ansatz.

                          Habe doch mal kurz Dein Script importiert (wobei Du hier im Thread nur Fkt1 hast, daher aus Deinem Urpsrungsthread genommen)

                          Dort ist ja schon sowas, was @Einstein-0 sucht:
                          Bildschirmfoto 2023-12-07 um 16.43.34.png

                          Aus Deiner Liste nimmst Du doch die entsprechende Stelle dann raus.
                          Hast Du mal kurzen Ausschnitt aus der Liste, dann kann @Einstein-0 den Aufbau genau sehen.
                          Ich denke das hilft ihm weiter.

                          Master ioBroker in Proxmox als LXC auf 1. Tiny-Lenovo, Proxmox-VM als Slave auf 2. Tinyi-Lenovo mit Zigbee und Monitor zur Visualisierung, Hauptautomatisierung über S7 auf Beckhoff CX, dazu noch Shelly, Homematic...

                          T 1 Antwort Letzte Antwort
                          0
                          • tugsiT tugsi

                            @thomkast sagte in Geräte zu Stundenpreisen (EPEX) oder PV-Überschuss betreiben:

                            Sofern es Euch hilft und Ihr die Zeit investieren möchtet... Die relevanten Abschnitte finden sich in "FKT_4_..." und "FKT_5_...". Leider schaffe ich es nicht, das Skript umfangreicher zu erläutern... Vielleicht findet sich für Euch aber noch ein Ansatz.

                            Habe doch mal kurz Dein Script importiert (wobei Du hier im Thread nur Fkt1 hast, daher aus Deinem Urpsrungsthread genommen)

                            Dort ist ja schon sowas, was @Einstein-0 sucht:
                            Bildschirmfoto 2023-12-07 um 16.43.34.png

                            Aus Deiner Liste nimmst Du doch die entsprechende Stelle dann raus.
                            Hast Du mal kurzen Ausschnitt aus der Liste, dann kann @Einstein-0 den Aufbau genau sehen.
                            Ich denke das hilft ihm weiter.

                            T Offline
                            T Offline
                            ThomKast
                            schrieb am zuletzt editiert von
                            #127

                            @tugsi
                            Das sieht am aktuellen Beispiel dann so aus:

                            09f2dcde-6c7d-4307-8d15-35f4b16eb12e-image.png

                            1 Antwort Letzte Antwort
                            0
                            • Q Offline
                              Q Offline
                              Qlink
                              schrieb am zuletzt editiert von
                              #128

                              @ThomKast

                              Ist es möglich deine tolle Arbeit auch für den österreichischen Anbieter SmartEnergy zu nutzen ?

                              Hier ist der Link zu deren API: https://www.smartenergy.at/api-schnittstellen

                              Lässt sich das mit deinen Scripten machen und falls ja was müsste ich da genau tun ?

                              Beste Grüße

                              S T 2 Antworten Letzte Antwort
                              0
                              • Q Qlink

                                @ThomKast

                                Ist es möglich deine tolle Arbeit auch für den österreichischen Anbieter SmartEnergy zu nutzen ?

                                Hier ist der Link zu deren API: https://www.smartenergy.at/api-schnittstellen

                                Lässt sich das mit deinen Scripten machen und falls ja was müsste ich da genau tun ?

                                Beste Grüße

                                S Offline
                                S Offline
                                Schimi
                                schrieb am zuletzt editiert von Schimi
                                #129

                                @qlink der Börsenstrompreis, sollte überall gleich sein.... das was der Anbieter noch aufschlägt sollte ja auch immer "gleich" sein....

                                Somit íst das hier immer zu gebrauchen... :-)

                                edit
                                ah mist... es muss ja einTiber token benutzt werden... dann ist das natürlich nicht mal eben für was anderes zu benutzen.....

                                Bringt dich der Awattar-Adapter nicht auch zum Ziel?

                                Q 1 Antwort Letzte Antwort
                                0
                                • S Schimi

                                  @qlink der Börsenstrompreis, sollte überall gleich sein.... das was der Anbieter noch aufschlägt sollte ja auch immer "gleich" sein....

                                  Somit íst das hier immer zu gebrauchen... :-)

                                  edit
                                  ah mist... es muss ja einTiber token benutzt werden... dann ist das natürlich nicht mal eben für was anderes zu benutzen.....

                                  Bringt dich der Awattar-Adapter nicht auch zum Ziel?

                                  Q Offline
                                  Q Offline
                                  Qlink
                                  schrieb am zuletzt editiert von
                                  #130

                                  @schimi

                                  Leider nein, nur einfach austauschen der API URL im awattar Adapter funktioniert nicht.
                                  Hab dazu auch schon einen Github Request aufgemacht, aber bei dem awattar Adapter hat sich lt. Github scheinbar seit 3 Jahren nichts mehr getan, daher hab ich da auch eher wenig Hoffnung auf Lösung meiner Anfrage.

                                  1 Antwort Letzte Antwort
                                  0
                                  • Q Qlink

                                    @ThomKast

                                    Ist es möglich deine tolle Arbeit auch für den österreichischen Anbieter SmartEnergy zu nutzen ?

                                    Hier ist der Link zu deren API: https://www.smartenergy.at/api-schnittstellen

                                    Lässt sich das mit deinen Scripten machen und falls ja was müsste ich da genau tun ?

                                    Beste Grüße

                                    T Offline
                                    T Offline
                                    ThomKast
                                    schrieb am zuletzt editiert von
                                    #131

                                    @qlink Moin aus dem verregneten Norddeutschland nach Österreich und alles Gute im neuen Jahr 🍀.
                                    Ich schaue mir die API mal an und melde mich dann. Wenn es nicht zu umfangreich wird, helfe ich gerne.

                                    Q 1 Antwort Letzte Antwort
                                    0
                                    • T ThomKast

                                      @qlink Moin aus dem verregneten Norddeutschland nach Österreich und alles Gute im neuen Jahr 🍀.
                                      Ich schaue mir die API mal an und melde mich dann. Wenn es nicht zu umfangreich wird, helfe ich gerne.

                                      Q Offline
                                      Q Offline
                                      Qlink
                                      schrieb am zuletzt editiert von
                                      #132

                                      @thomkast

                                      Das wäre DER HAMMER !
                                      Auch dir ein gutes neues Jahr !

                                      Beste Grüße

                                      T 1 Antwort Letzte Antwort
                                      0
                                      • Q Qlink

                                        @thomkast

                                        Das wäre DER HAMMER !
                                        Auch dir ein gutes neues Jahr !

                                        Beste Grüße

                                        T Offline
                                        T Offline
                                        ThomKast
                                        schrieb am zuletzt editiert von
                                        #133

                                        @qlink Hi, wenn Du mal schauen möchtest...

                                        Dieses Blockly-Script holt die Daten von APIS ab (1.Teil) und mit dem 2.Teil hast Du Zugriff auf die Stundenpreise.

                                        1. Teil speichert die Daten im Datenpunkt unter 0_userdata.0.APIS_AT.Preise_heute

                                        <xml xmlns="https://developers.google.com/blockly/xml">
                                         <variables>
                                           <variable id="gUH_-h{VuFlarEGO(jBD">result</variable>
                                           <variable type="timeout" id="kurz_warten">kurz_warten</variable>
                                           <variable id="4iEXXd([z~lkR3U/0,vs">zähler_stunden</variable>
                                         </variables>
                                         <block type="comment" id="_;v%2-xxS|AS3,466+8e" x="13" y="13">
                                           <field name="COMMENT">1. Preise abholen</field>
                                           <next>
                                             <block type="request" id="ZpUc_wE.U1@u^#sKoT=t">
                                               <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                                               <field name="WITH_STATEMENT">TRUE</field>
                                               <field name="LOG">log</field>
                                               <value name="URL">
                                                 <shadow type="text" id="_`*W@P_.+k[;p8,etm*S">
                                                   <field name="TEXT">https://apis.smartenergy.at/market/v1/price</field>
                                                 </shadow>
                                               </value>
                                               <statement name="STATEMENT">
                                                 <block type="debug" id="Q44.(O-?m-Z?Q[g0tR_C">
                                                   <field name="Severity">log</field>
                                                   <value name="TEXT">
                                                     <shadow type="text" id=";C%sI/nx{60_[qXp10^;">
                                                       <field name="TEXT">test</field>
                                                     </shadow>
                                                     <block type="variables_get" id="K2;*[c{,SLK-y.*B*|:E">
                                                       <field name="VAR" id="gUH_-h{VuFlarEGO(jBD">result</field>
                                                     </block>
                                                   </value>
                                                   <next>
                                                     <block type="control" id="ZzLf[fCAJXUH+-iW_D%3">
                                                       <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                       <field name="OID">0_userdata.0.APIS_AT.Preise_heute</field>
                                                       <field name="WITH_DELAY">FALSE</field>
                                                       <value name="VALUE">
                                                         <block type="variables_get" id="U3M+]nG9JL1(fPS+G#Fr">
                                                           <field name="VAR" id="gUH_-h{VuFlarEGO(jBD">result</field>
                                                         </block>
                                                       </value>
                                                     </block>
                                                   </next>
                                                 </block>
                                               </statement>
                                               <next>
                                                 <block type="comment" id="3xuM.Wzif;RXBnNB]`M*">
                                                   <field name="COMMENT">2. Preise separieren</field>
                                                   <next>
                                                     <block type="timeouts_settimeout" id="c1jQJ!`kb@?rD-u**IL,">
                                                       <field name="NAME">kurz_warten</field>
                                                       <field name="DELAY">2</field>
                                                       <field name="UNIT">sec</field>
                                                       <statement name="STATEMENT">
                                                         <block type="controls_for" id="pDcae/K]ayczT1WCcArx">
                                                           <field name="VAR" id="4iEXXd([z~lkR3U/0,vs">zähler_stunden</field>
                                                           <value name="FROM">
                                                             <shadow type="math_number" id="kpTYNb=0QBoukzQwe*5H">
                                                               <field name="NUM">0</field>
                                                             </shadow>
                                                           </value>
                                                           <value name="TO">
                                                             <shadow type="math_number" id="n0HqGUypSH26UtE]0=UZ">
                                                               <field name="NUM">92</field>
                                                             </shadow>
                                                           </value>
                                                           <value name="BY">
                                                             <shadow type="math_number" id="b^9vnyQ!yvtMA)gnf+A!">
                                                               <field name="NUM">4</field>
                                                             </shadow>
                                                           </value>
                                                           <statement name="DO">
                                                             <block type="debug" id="^fD%j$(xfFa*e|`yK7yQ">
                                                               <field name="Severity">log</field>
                                                               <value name="TEXT">
                                                                 <shadow type="text" id=";C%sI/nx{60_[qXp10^;">
                                                                   <field name="TEXT">test</field>
                                                                 </shadow>
                                                                 <block type="text_join" id="d?4Fl/b2j%-C[=ajfoc2">
                                                                   <mutation items="2"></mutation>
                                                                   <value name="ADD0">
                                                                     <block type="text" id="!7$r7QV.5Pkc.z;owvJm">
                                                                       <field name="TEXT">Zähler_Stunden: </field>
                                                                     </block>
                                                                   </value>
                                                                   <value name="ADD1">
                                                                     <block type="math_arithmetic" id="`9LV8j=#a+V,.tZzuQnW">
                                                                       <field name="OP">DIVIDE</field>
                                                                       <value name="A">
                                                                         <shadow type="math_number" id="xV,9:o+r[gJHWuD`jq7D">
                                                                           <field name="NUM">1</field>
                                                                         </shadow>
                                                                         <block type="variables_get" id="06O5|4FBfZ`d=hMBW`_6">
                                                                           <field name="VAR" id="4iEXXd([z~lkR3U/0,vs">zähler_stunden</field>
                                                                         </block>
                                                                       </value>
                                                                       <value name="B">
                                                                         <shadow type="math_number" id="{zc1AG`9MM#l96A45j@2">
                                                                           <field name="NUM">4</field>
                                                                         </shadow>
                                                                       </value>
                                                                     </block>
                                                                   </value>
                                                                 </block>
                                                               </value>
                                                               <next>
                                                                 <block type="debug" id="``Rrs]=`2q^gj@zZl]sM">
                                                                   <field name="Severity">log</field>
                                                                   <value name="TEXT">
                                                                     <shadow type="text" id="zuWT(%4c9/P7BgYRq4cV">
                                                                       <field name="TEXT">test</field>
                                                                     </shadow>
                                                                     <block type="convert_jsonata" id="y5A3]+sG/6s[O-O,uIlx">
                                                                       <value name="EXPRESSION">
                                                                         <shadow type="text" id="I3vtHrq/NASp|=M@^~@}">
                                                                           <field name="TEXT">data[0].value</field>
                                                                         </shadow>
                                                                         <block type="text_join" id=".b5/:!9ZRP$R3*rbeWQD">
                                                                           <mutation items="3"></mutation>
                                                                           <value name="ADD0">
                                                                             <block type="text" id="YO1R-XmpUMj!er{AoI4t">
                                                                               <field name="TEXT">data[</field>
                                                                             </block>
                                                                           </value>
                                                                           <value name="ADD1">
                                                                             <block type="variables_get" id="QJNBPG1pWaH3n]NgDT=I">
                                                                               <field name="VAR" id="4iEXXd([z~lkR3U/0,vs">zähler_stunden</field>
                                                                             </block>
                                                                           </value>
                                                                           <value name="ADD2">
                                                                             <block type="text" id="J0V-^y*cQ9Tn^q.AG[@0">
                                                                               <field name="TEXT">].value</field>
                                                                             </block>
                                                                           </value>
                                                                         </block>
                                                                       </value>
                                                                       <value name="TARGET">
                                                                         <block type="convert_json2object" id="{CLuG@^ZuCHrS|LGM2g@">
                                                                           <value name="VALUE">
                                                                             <block type="get_value" id="6l%jt_PKmB~74v[7,d^a">
                                                                               <field name="ATTR">val</field>
                                                                               <field name="OID">0_userdata.0.APIS_AT.Preise_heute</field>
                                                                             </block>
                                                                           </value>
                                                                         </block>
                                                                       </value>
                                                                     </block>
                                                                   </value>
                                                                 </block>
                                                               </next>
                                                             </block>
                                                           </statement>
                                                         </block>
                                                       </statement>
                                                     </block>
                                                   </next>
                                                 </block>
                                               </next>
                                             </block>
                                           </next>
                                         </block>
                                        </xml>
                                        

                                        APIS beschreibt ja, dass die Daten um 1700 für den Folgetag "mit enthalten" sind. Wie das dann aussieht müssen wir noch schauen.
                                        Lässt Du das Blockly-Script vor 1700 laufen, erhälst Du schon mal die Daten des aktuellen Tages.

                                        Den 1.Teil würde ich nur 1mal aufrufen und dann mit dem Datenpunkt (2. Teil) arbeiten, damit die API-Quelle nicht unnötig belastet wird.

                                        ... vielleicht beschreibst Du mal, was Du genau machen möchtest...
                                        ... warum APIS die Preise 1/4stündlich anbietet erschließt sich mir nicht. Wie ist denn die Preisgestaltung des Anbieters?

                                        P Q 2 Antworten Letzte Antwort
                                        1
                                        • T ThomKast

                                          @qlink Hi, wenn Du mal schauen möchtest...

                                          Dieses Blockly-Script holt die Daten von APIS ab (1.Teil) und mit dem 2.Teil hast Du Zugriff auf die Stundenpreise.

                                          1. Teil speichert die Daten im Datenpunkt unter 0_userdata.0.APIS_AT.Preise_heute

                                          <xml xmlns="https://developers.google.com/blockly/xml">
                                           <variables>
                                             <variable id="gUH_-h{VuFlarEGO(jBD">result</variable>
                                             <variable type="timeout" id="kurz_warten">kurz_warten</variable>
                                             <variable id="4iEXXd([z~lkR3U/0,vs">zähler_stunden</variable>
                                           </variables>
                                           <block type="comment" id="_;v%2-xxS|AS3,466+8e" x="13" y="13">
                                             <field name="COMMENT">1. Preise abholen</field>
                                             <next>
                                               <block type="request" id="ZpUc_wE.U1@u^#sKoT=t">
                                                 <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                                                 <field name="WITH_STATEMENT">TRUE</field>
                                                 <field name="LOG">log</field>
                                                 <value name="URL">
                                                   <shadow type="text" id="_`*W@P_.+k[;p8,etm*S">
                                                     <field name="TEXT">https://apis.smartenergy.at/market/v1/price</field>
                                                   </shadow>
                                                 </value>
                                                 <statement name="STATEMENT">
                                                   <block type="debug" id="Q44.(O-?m-Z?Q[g0tR_C">
                                                     <field name="Severity">log</field>
                                                     <value name="TEXT">
                                                       <shadow type="text" id=";C%sI/nx{60_[qXp10^;">
                                                         <field name="TEXT">test</field>
                                                       </shadow>
                                                       <block type="variables_get" id="K2;*[c{,SLK-y.*B*|:E">
                                                         <field name="VAR" id="gUH_-h{VuFlarEGO(jBD">result</field>
                                                       </block>
                                                     </value>
                                                     <next>
                                                       <block type="control" id="ZzLf[fCAJXUH+-iW_D%3">
                                                         <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                         <field name="OID">0_userdata.0.APIS_AT.Preise_heute</field>
                                                         <field name="WITH_DELAY">FALSE</field>
                                                         <value name="VALUE">
                                                           <block type="variables_get" id="U3M+]nG9JL1(fPS+G#Fr">
                                                             <field name="VAR" id="gUH_-h{VuFlarEGO(jBD">result</field>
                                                           </block>
                                                         </value>
                                                       </block>
                                                     </next>
                                                   </block>
                                                 </statement>
                                                 <next>
                                                   <block type="comment" id="3xuM.Wzif;RXBnNB]`M*">
                                                     <field name="COMMENT">2. Preise separieren</field>
                                                     <next>
                                                       <block type="timeouts_settimeout" id="c1jQJ!`kb@?rD-u**IL,">
                                                         <field name="NAME">kurz_warten</field>
                                                         <field name="DELAY">2</field>
                                                         <field name="UNIT">sec</field>
                                                         <statement name="STATEMENT">
                                                           <block type="controls_for" id="pDcae/K]ayczT1WCcArx">
                                                             <field name="VAR" id="4iEXXd([z~lkR3U/0,vs">zähler_stunden</field>
                                                             <value name="FROM">
                                                               <shadow type="math_number" id="kpTYNb=0QBoukzQwe*5H">
                                                                 <field name="NUM">0</field>
                                                               </shadow>
                                                             </value>
                                                             <value name="TO">
                                                               <shadow type="math_number" id="n0HqGUypSH26UtE]0=UZ">
                                                                 <field name="NUM">92</field>
                                                               </shadow>
                                                             </value>
                                                             <value name="BY">
                                                               <shadow type="math_number" id="b^9vnyQ!yvtMA)gnf+A!">
                                                                 <field name="NUM">4</field>
                                                               </shadow>
                                                             </value>
                                                             <statement name="DO">
                                                               <block type="debug" id="^fD%j$(xfFa*e|`yK7yQ">
                                                                 <field name="Severity">log</field>
                                                                 <value name="TEXT">
                                                                   <shadow type="text" id=";C%sI/nx{60_[qXp10^;">
                                                                     <field name="TEXT">test</field>
                                                                   </shadow>
                                                                   <block type="text_join" id="d?4Fl/b2j%-C[=ajfoc2">
                                                                     <mutation items="2"></mutation>
                                                                     <value name="ADD0">
                                                                       <block type="text" id="!7$r7QV.5Pkc.z;owvJm">
                                                                         <field name="TEXT">Zähler_Stunden: </field>
                                                                       </block>
                                                                     </value>
                                                                     <value name="ADD1">
                                                                       <block type="math_arithmetic" id="`9LV8j=#a+V,.tZzuQnW">
                                                                         <field name="OP">DIVIDE</field>
                                                                         <value name="A">
                                                                           <shadow type="math_number" id="xV,9:o+r[gJHWuD`jq7D">
                                                                             <field name="NUM">1</field>
                                                                           </shadow>
                                                                           <block type="variables_get" id="06O5|4FBfZ`d=hMBW`_6">
                                                                             <field name="VAR" id="4iEXXd([z~lkR3U/0,vs">zähler_stunden</field>
                                                                           </block>
                                                                         </value>
                                                                         <value name="B">
                                                                           <shadow type="math_number" id="{zc1AG`9MM#l96A45j@2">
                                                                             <field name="NUM">4</field>
                                                                           </shadow>
                                                                         </value>
                                                                       </block>
                                                                     </value>
                                                                   </block>
                                                                 </value>
                                                                 <next>
                                                                   <block type="debug" id="``Rrs]=`2q^gj@zZl]sM">
                                                                     <field name="Severity">log</field>
                                                                     <value name="TEXT">
                                                                       <shadow type="text" id="zuWT(%4c9/P7BgYRq4cV">
                                                                         <field name="TEXT">test</field>
                                                                       </shadow>
                                                                       <block type="convert_jsonata" id="y5A3]+sG/6s[O-O,uIlx">
                                                                         <value name="EXPRESSION">
                                                                           <shadow type="text" id="I3vtHrq/NASp|=M@^~@}">
                                                                             <field name="TEXT">data[0].value</field>
                                                                           </shadow>
                                                                           <block type="text_join" id=".b5/:!9ZRP$R3*rbeWQD">
                                                                             <mutation items="3"></mutation>
                                                                             <value name="ADD0">
                                                                               <block type="text" id="YO1R-XmpUMj!er{AoI4t">
                                                                                 <field name="TEXT">data[</field>
                                                                               </block>
                                                                             </value>
                                                                             <value name="ADD1">
                                                                               <block type="variables_get" id="QJNBPG1pWaH3n]NgDT=I">
                                                                                 <field name="VAR" id="4iEXXd([z~lkR3U/0,vs">zähler_stunden</field>
                                                                               </block>
                                                                             </value>
                                                                             <value name="ADD2">
                                                                               <block type="text" id="J0V-^y*cQ9Tn^q.AG[@0">
                                                                                 <field name="TEXT">].value</field>
                                                                               </block>
                                                                             </value>
                                                                           </block>
                                                                         </value>
                                                                         <value name="TARGET">
                                                                           <block type="convert_json2object" id="{CLuG@^ZuCHrS|LGM2g@">
                                                                             <value name="VALUE">
                                                                               <block type="get_value" id="6l%jt_PKmB~74v[7,d^a">
                                                                                 <field name="ATTR">val</field>
                                                                                 <field name="OID">0_userdata.0.APIS_AT.Preise_heute</field>
                                                                               </block>
                                                                             </value>
                                                                           </block>
                                                                         </value>
                                                                       </block>
                                                                     </value>
                                                                   </block>
                                                                 </next>
                                                               </block>
                                                             </statement>
                                                           </block>
                                                         </statement>
                                                       </block>
                                                     </next>
                                                   </block>
                                                 </next>
                                               </block>
                                             </next>
                                           </block>
                                          </xml>
                                          

                                          APIS beschreibt ja, dass die Daten um 1700 für den Folgetag "mit enthalten" sind. Wie das dann aussieht müssen wir noch schauen.
                                          Lässt Du das Blockly-Script vor 1700 laufen, erhälst Du schon mal die Daten des aktuellen Tages.

                                          Den 1.Teil würde ich nur 1mal aufrufen und dann mit dem Datenpunkt (2. Teil) arbeiten, damit die API-Quelle nicht unnötig belastet wird.

                                          ... vielleicht beschreibst Du mal, was Du genau machen möchtest...
                                          ... warum APIS die Preise 1/4stündlich anbietet erschließt sich mir nicht. Wie ist denn die Preisgestaltung des Anbieters?

                                          P Offline
                                          P Offline
                                          Peter666666
                                          schrieb am zuletzt editiert von Peter666666
                                          #134

                                          @thomkast Hi,

                                          Habe dein erstelltes Skript (SmartEnergy) mal importiert- vielen Dank dafür. Skript funktioniert nach dem Anlegen des DP. Ich würde gerne meinen Warmwasserspeicher mit dem günstigsten Stundenpreis aufheizen. Zur Zeit geht das zwar mit meinem Skript aber dieses vergleicht nicht die kommenden Preise sonder) startet die WP beim unterschreiten der eingestellten Grenze. Hast du eine Idee wie ich das lösen könnte?

                                          Bild 04.01.24 um 12.27.jpeg

                                          LG Peter

                                          Intel NUC i5 / 16GB RAM / 512GB SSD
                                          Synology DS220+ 10GB RAM / 8TB

                                          T 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          595

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe