Awattar (Börsenstrompreis) einlesen und Geräte schalten

Der Stromanbieter Awattar bietet seit Mitte des Jahres auch in Deutschland Stromtarife mit variablen Stundenpreisen mittels des Discovergy Smartmeter.

Zur Steuerung von Geräten würde ich gerne von der Awattar API den Börsenstrompreis einlesen:
aWATTar Deutschland - Energy in Sync with Nature

Für Loxone gibt es schon eine solche Lösung:
Anbinden der aWATTar hourly API - loxwiki - loxwiki

Wie könnte ich das in IP-Symcon am besten umsetzen? Danke. :slight_smile:

Tho

Guten Morgen Tho,

es gibt schon ein fertiges Modul von CodeKing auf GitHub - CodeKing/de.codeking.symcon.awattar

Grüße
Mario

Danke, das hatte ich noch nicht entdeckt. :slight_smile:

Ich würde das Thema gerne noch mal aufgreifen.
Gibt es schon jemand der Scripte hat die folgendes können:

  • Vorgabe Zeit (bsp 2h)
    ** wann ist dazu der günstigste Preis/Startzeit bei awattar

Also finde das Minimum für eine Zeitspanne

Leider pflegt CodeKing sein Modul nicht - auch unterstützt es nur ESY Zähler. aWATTar oder Tibber werden auch nicht mehr unterstützt.

Aus dem Grund habe ich ein komplett neues Modul geschrieben, welches obige Stromlieferanten unterstützt und auch diverse Zählertypen.

[Modul] Discovergy Smartmeter … die zweite für Module Store

Ich habe gerade heute eine Beta in Github gestellt - wenn Du magst kannst du es gerne testen (Beta oder Prod). Bei Fragen bitte im obigen Thread posten.

Danke für den Hinweis zu dem neuen Modul. Leider komme ich damit nicht weiter da ich ein Script bauen will was einen Zeitspanne vorgibt und dann den Zeitraum berechnen muss.

Evtl gibt es ja hier einen PHP Spezie der mich auf auf die richtige Idee bringt.
Das Array:


{"object": "list",
    "data": [
        {"start_timestamp": 01.00,"end_timestamp": 01.59,"marketprice": 69.92},
        {"start_timestamp": 02.00,"end_timestamp": 02.59,"marketprice": 10.99},
        {"start_timestamp": 03.00,"end_timestamp": 03.59,"marketprice": 20.95},
        {"start_timestamp": 04.00,"end_timestamp": 04.59,"marketprice": 85.66},
        {"start_timestamp": 05.00,"end_timestamp": 05.59,"marketprice": 56.54},
        {"start_timestamp": 06.00,"end_timestamp": 06.59,"marketprice": 55.81},
        {"start_timestamp": 07.00,"end_timestamp": 07.59,"marketprice": 50.85},
        {"start_timestamp": 08.00,"end_timestamp": 08.59,"marketprice": 54.65},
        {"start_timestamp": 09.00,"end_timestamp": 09.59,"marketprice": 51.79},
        {"start_timestamp": 10.00,"end_timestamp": 10.59,"marketprice": 50.58}
    ]
}

der notwendige Output:

niedrigster Preis	= 02.00-02.59 => 10.99
bei benötigten 2h 	= 02.00-03.59 => 15.97
bei benötigten 3h 	= 01.00-03.59 => 33.95

hänge mich hier mal ran, so eine Funktion suche ich auch noch und bekomm es selbst leider nicht hin…

Könnte man schön flexibel halten wenn man mehrere Kalkulationsmögluchlwiten angeben kann.

  1. benötigte KWh + Watt. Also z.b. ich will in ein Auto 15 kWh laden mit einer ladeleistung von 3000 kw

  2. benötigte Zeit. Ich will ein Gerät X Stunden betreiben

Übergeordnete Option: Zeitpunkt wann das jeweils fertig sein muss. Also z.B. das Auto muss morgens um 7 Uhr die angegebene Menge geladen haben…

Viele Grüße
Stephan

Servus @da8ter,
gibt es hier neue Entwicklungen?
Das Thema an sich ja megaspannend, und an anderer Stelle (nicht IP-Symcon) wird ja genau „das“ schon umgesetzt.
Awattprice berechnet das, und stellte es auch noch optisch ansprechend dar :smile:


https://awattprice.space8.me/index.html

Hier findest du das Modul für Symcon GitHub - CodeKing/de.codeking.symcon.awattar

1 „Gefällt mir“

Servus, das Modul ist bei mir seit einiger Zeit im Einsatz…was fehlt sind die Schaltempfehlungen :face_with_diagonal_mouth:

Du kannst die Auswertung mit einem Skript machen oder wenn PHP nicht so dein Ding ist mit dem Ablaufplan , z.B mit der Abfrage ob der x-Preis gleich oder > dem y-Preis dann setze die Variable oder führe ein Befehl aus mit Aktion ausführen . Viel Spaß beim Ausprobieren

@Senior …danke, ich dachte, es gibt etwas „einfacheres“ :wink:

Vielleicht hilft das etwas weiter, den Strompreis einlesen und vergleichen, bei mir dann einen entsprechenden Merker in der LOGO! setzen bzw, rücksetzen. Achtung die Sprungmarke"a" beachten.

$geb = GetValueFloat(40012);
$k_media = GetValueFloat(44147) *1.19 +$geb;
$k_aktue = GetValueFloat(51023) *1.19 +$geb;
#$k_aktue = GetValueFloat(54570) *100;
#echo $k_aktue;
$k_niedr = GetValueFloat(11396) *1.19 +$geb;
$k_zusatz = GetValueFloat(29077);

$k_schwelle = ($k_niedr + $k_zusatz);

#echo $k_schwelle;

if($k_aktue < $k_schwelle)
{

        #echo "Ladegerät EIN";
    S7_WriteBit(28074 ,true);
    goto a;
}

if($k_aktue > $k_schwelle)
{

        #echo "Ladegerät AUS";
    S7_WriteBit(28074 ,false);
    
}

a:

SetValueFloat(12502, $k_aktue);

Hallo zusammen,

nachdem ich auch mit aWATTar etwas spiele möchte ich euch meine neuste Entdeckung nicht vorenthalten:

unter :
https://api-test.awattar.de/v1/optimizer

kann man sich die optimierten Stunden direkt bei aWATTAR auswerten lassen.
Wenn man z.B. die 2 günstigsten Stunden sucht dann übergibt man das einfach mit bei der Abfrage.
Aso so:
https://api-test.awattar.de/v1/optimizer?hours=2

{
  "object": "optimizer-result",
  "data": {
    "query": {
      "hours": "2"
    },
    "input": {
      "hours": 2,
      "window": "day",
      "optimize": "price",
      "now": 1704031034999,
      "timezone": "Europe/Berlin",
      "from_hour": 0,
      "to_hour": 24,
      "min_hours": null,
      "max_hours": null,
      "break_hours": 1
    },
    "prices": [
      {
        "start_timestamp": 1703977200000,
        "end_timestamp": 1703980800000,
        "marketprice": 36.54,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1703980800000,
        "end_timestamp": 1703984400000,
        "marketprice": 13.27,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1703984400000,
        "end_timestamp": 1703988000000,
        "marketprice": 4,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1703988000000,
        "end_timestamp": 1703991600000,
        "marketprice": 0.31,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1703991600000,
        "end_timestamp": 1703995200000,
        "marketprice": 0.58,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1703995200000,
        "end_timestamp": 1703998800000,
        "marketprice": 1.28,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1703998800000,
        "end_timestamp": 1704002400000,
        "marketprice": 0.36,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1704002400000,
        "end_timestamp": 1704006000000,
        "marketprice": -0.03,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1704006000000,
        "end_timestamp": 1704009600000,
        "marketprice": 2.98,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1704009600000,
        "end_timestamp": 1704013200000,
        "marketprice": 9.1,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1704013200000,
        "end_timestamp": 1704016800000,
        "marketprice": 14,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1704016800000,
        "end_timestamp": 1704020400000,
        "marketprice": 10.51,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1704020400000,
        "end_timestamp": 1704024000000,
        "marketprice": 10.73,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1704024000000,
        "end_timestamp": 1704027600000,
        "marketprice": 5.75,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1704027600000,
        "end_timestamp": 1704031200000,
        "marketprice": 8.98,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1704031200000,
        "end_timestamp": 1704034800000,
        "marketprice": 12.95,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1704034800000,
        "end_timestamp": 1704038400000,
        "marketprice": 20.9,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1704038400000,
        "end_timestamp": 1704042000000,
        "marketprice": 26,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1704042000000,
        "end_timestamp": 1704045600000,
        "marketprice": 23.39,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1704045600000,
        "end_timestamp": 1704049200000,
        "marketprice": 9,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1704049200000,
        "end_timestamp": 1704052800000,
        "marketprice": 7.95,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1704052800000,
        "end_timestamp": 1704056400000,
        "marketprice": 6,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1704056400000,
        "end_timestamp": 1704060000000,
        "marketprice": 10.68,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1704060000000,
        "end_timestamp": 1704063600000,
        "marketprice": 2.44,
        "unit": "Eur/MWh"
      }
    ],
    "optimal": [
      {
        "start_timestamp": 1704002400000,
        "end_timestamp": 1704006000000,
        "marketprice": -0.03,
        "unit": "Eur/MWh"
      },
      {
        "start_timestamp": 1703988000000,
        "end_timestamp": 1703991600000,
        "marketprice": 0.31,
        "unit": "Eur/MWh"
      }
    ],
    "current": {
      "now": 1704031034999,
      "optimum": false,
      "price": 8.98
    }
  },
  "url": "/de/v1/optimizer"
}

so erhält man unter „optimal“ die 2 günstigsten Stunden des aktuellen Tages und unter „current“ ob die aktuelle Stunde eine der beiden günstigsten Stunden ist.
Wenn man da jede Stunde einmal abfragt hat man eigentlich schon eine Ladefreigabe für die Wallbox z.B.

Gruß Isi

PS:
Der aktuelle Arbeitspreis errechnet sich dann wie folgt:

Arbeitspreis = ((marketprice / 10) + (marketprice / 10 *3 / 100 [aWATTar-Gerbür 3%]) + Grundgebühr [14,21 Cent]) *1.19 [+MwSt])