Seite 1 von 3

[v3.5.1] XML Datei mit mehrere Datapunkten in Zeitserien umwandern

Verfasst: Mo Dez 19, 2022 1:51 pm
von VincentR
Hallo Leser,

Weil wir ein Stromlieferant mit dynamische €/kWh, möchte ich die Preise vom Entso-e website herunter laden. Die https code mit API-key hat schon geklappt

https://web-api.tp.entsoe.eu/api?securi ... 2212162300

Die Datei sieht so aus wie hierunter.

Das Problem: der XML den ich zurück bekomme, hat 24 Positionen in sich (ohne Tag/Zeit label). Jedes Mal angegeben zwischen <price.amount> und </price.amount> Wie bekomme ich das zur eine Zeitserien?

Herzlichen Dank für's mitdenken.

Vincent

Code: Alles auswählen


<?xml version="1.0" encoding="UTF-8"?>
<Publication_MarketDocument xmlns="urn:iec62325.351:tc57wg16:451-3:publicationdocument:7:0">
<mRID>6485b30276564c17a9a63a67d0963936</mRID>
<revisionNumber>1</revisionNumber>
<type>A44</type>
<sender_MarketParticipant.mRID codingScheme="A01">10X1001A1001A450</sender_MarketParticipant.mRID>
<sender_MarketParticipant.marketRole.type>A32</sender_MarketParticipant.marketRole.type>
<receiver_MarketParticipant.mRID codingScheme="A01">10X1001A1001A450</receiver_MarketParticipant.mRID>
<receiver_MarketParticipant.marketRole.type>A33</receiver_MarketParticipant.marketRole.type>
<createdDateTime>2022-12-15T13:16:03Z</createdDateTime>
<period.timeInterval>
<start>2022-12-15T23:00Z</start>
<end>2022-12-16T23:00Z</end>
</period.timeInterval>
<TimeSeries>
<mRID>1</mRID>
<businessType>A62</businessType>
<in_Domain.mRID codingScheme="A01">10YNL----------L</in_Domain.mRID>
<out_Domain.mRID codingScheme="A01">10YNL----------L</out_Domain.mRID>
<currency_Unit.name>EUR</currency_Unit.name>
<price_Measure_Unit.name>MWH</price_Measure_Unit.name>
<curveType>A01</curveType>
<Period>
<timeInterval>
<start>2022-12-15T23:00Z</start>
<end>2022-12-16T23:00Z</end>
</timeInterval>
<resolution>PT60M</resolution>
<Point>
<position>1</position>
<price.amount>296.30</price.amount>
</Point>
<Point>
<position>2</position>
<price.amount>287.92</price.amount>
</Point>
<Point>
<position>3</position>
<price.amount>279.65</price.amount>
</Point>
<Point>
<position>4</position>
<price.amount>270.10</price.amount>
</Point>
<Point>
<position>5</position>
<price.amount>256.00</price.amount>
</Point>
<Point>
<position>6</position>
<price.amount>272.60</price.amount>
</Point>
<Point>
<position>7</position>
<price.amount>319.32</price.amount>
</Point>
<Point>
<position>8</position>
<price.amount>440.90</price.amount>
</Point>
<Point>
<position>9</position>
<price.amount>543.49</price.amount>
</Point>
<Point>
<position>10</position>
<price.amount>561.64</price.amount>
</Point>
<Point>
<position>11</position>
<price.amount>543.45</price.amount>
</Point>
<Point>
<position>12</position>
<price.amount>517.08</price.amount>
</Point>
<Point>
<position>13</position>
<price.amount>453.00</price.amount>
</Point>
<Point>
<position>14</position>
<price.amount>424.05</price.amount>
</Point>
<Point>
<position>15</position>
<price.amount>452.90</price.amount>
</Point>
<Point>
<position>16</position>
<price.amount>465.14</price.amount>
</Point>
<Point>
<position>17</position>
<price.amount>478.55</price.amount>
</Point>
<Point>
<position>18</position>
<price.amount>505.00</price.amount>
</Point>
<Point>
<position>19</position>
<price.amount>490.17</price.amount>
</Point>
<Point>
<position>20</position>
<price.amount>467.79</price.amount>
</Point>
<Point>
<position>21</position>
<price.amount>392.91</price.amount>
</Point>
<Point>
<position>22</position>
<price.amount>334.15</price.amount>
</Point>
<Point>
<position>23</position>
<price.amount>306.75</price.amount>
</Point>
<Point>
<position>24</position>
<price.amount>280.00</price.amount>
</Point>
</Period>
</TimeSeries>
</Publication_MarketDocument>


Re: [v3.5.1] XML Datei mit mehrere Datapunkten in Zeitserien umwandern

Verfasst: Mo Dez 19, 2022 6:03 pm
von StefanW
Hi Vincent,

danke dass Du Deine Aufgabenstellung mit uns teilst.

Ich fürchte, im Moment unterstützen wir im Modul HTTP/Rest-API noch keine Dekodierung von XML Strukturen.

Das Thema werde ich mit den Entwicklern besprechen, wenn uns kurzfristig was einfällt, dann melden wir das gerne, ansonsten warten, bis wir eine Lösung dafür haben.

Weil das Thema Energiemanagement ist für uns alle wichtig

lg

Stefan

Re: [v3.5.1] XML Datei mit mehrere Datapunkten in Zeitserien umwandern

Verfasst: Mo Dez 19, 2022 11:42 pm
von VincentR
Hallo Stefan,

danke für deines Antwort. Ich wündre mich schon eine Weile aufs Intenret herum, hatte noch keine (einfache) Lösung gefunden. Leider gibt es dieses noch nicht und müsse ich die Wete handmäßig eingeben.

Es würde mich freuen wenn bald so eine Möglichkeit eingebaut wird.

Mit freundliche Grüßen,
Vincent

Re: [v3.5.1] XML Datei mit mehrere Datapunkten in Zeitserien umwandern

Verfasst: Mi Mär 22, 2023 9:50 am
von VincentR
Hallo liebes TWS-team,

mitlerweile hat es geklappt ein Python script zu schreiben das auf eine Raspi-Zero lauft und einmal pro Tag 24 Energiepreise für morgen in meiner MQTT server zur Verfügung stellt. Gleichzeitig wird ein Zeitcode mitgegeben (z.B. 202303231400) für das Uhrzeit von der nächster Tag wofür diese Preise gillt. Das bedeutet das ich jetzt/heute 24 datapunkte im TWS einlesen will für eine Zeitserie in der zukunft (morgen). Wie kann ich dieses im TWS machen?

l.G.
Vincent

Re: [v3.5.1] XML Datei mit mehrere Datapunkten in Zeitserien umwandern

Verfasst: Mi Mär 22, 2023 2:11 pm
von Robert_Mini
Hallo Vincent!

Ich fürchte das klappt so nicht.
Du kannst immer nur einen Wert zum aktuellen Zeitpunkt in die Zeitserie schreiben.

Ich mache so was ähnliches für die EPEX Werte. Ich frage diese für die Zukunft +23h ab und schreibe sie jede Stunde in die Zeitserie.

Lösungsansatz könnte bei dir sein:
- Du passt dein phyton script so an, dass es den Energiepreis für +24h jede Stunde abfrägt und schickst den einen Wert über MQTT in den TWS.
- Im TWS verbindest du das MQTT Objekt mit einer Zeitserie - fertig.

Im Anhang das Ergebnis, wie es bei mir aussieht: die rot Linie (Forecast+23h läuft der grünen 23h voraus). Besser wäre 24h, das war mit aufgrund der API aber zu kompliziert.

EPEX.png

lg
Robert

PS: Du könntest auch prüfen, wie dein Lieferant den Preis berechnet und eventuell den Index dazu woanders abgreifen

Re: [v3.5.1] XML Datei mit mehrere Datapunkten in Zeitserien umwandern

Verfasst: Mi Mär 22, 2023 9:26 pm
von Robosoc
Was genau ist denn eigentlich das Ziel, Vincent?

Willst du die 24 Preiswerte einfach nur in einer Grafik sehen? Soll in der Grafik noch was anderes dargestellt werden?

Re: [v3.5.1] XML Datei mit mehrere Datapunkten in Zeitserien umwandern

Verfasst: Do Mär 23, 2023 5:34 am
von gbglace
In einem Chart soll der Preis der jetzt für 24h in der Zukunft gilt quasi neben dem Verbrauchswert von jetzt stehen, damit man den korrekten Kostensatz hat.

Es ist quasi wie bei der Wettervorhersage 24h das auch neben dem Wert der WS jetzt um direkt ablesen zu können wie gut der Vorhersagewert ist.

Re: [v3.5.1] XML Datei mit mehrere Datapunkten in Zeitserien umwandern

Verfasst: Do Mär 23, 2023 10:44 am
von VincentR
Die Preise welche ich vom Entsoe herunterlade sind gleich an die Preise vom Epex website. Wegen der verfügbare Zugang mittels ein API ohne viele Geschäftsbedingungen vom Epex, habe ich für die Verbindung mit Entsoe gewählt.

Aufschläge meiner Lieferant und Steuer usw sind bekannt und kann ich berechnen.

Ich möchte die Preise gern in einer Grafik zeigen und verknüpfen mit dem akutellen Verbrauch und die Produktion der PV-Anlage. Dann kann ich (jetzt noch handmäßig) entscheiden ob die EV's geladen werden, der Speicher der Heizung Strom bekommt und wie wir die Wäsche einplanen.

Dann habe ich auch auf meiner Liste die Verknüpfung an die Wettervorhersage (+2 oder +3 Tage), weil unsere Preis (Niederlande, weiß nicht ob das bei euch auch gilt) weitgehend relatiert an Windgeschwindigkeit und Sonne relatiert ist. Dieser Logik ist die wirkliche Herausforderung :-)

Deswegen möchte ich 1x pro Tag 24 Datapunkte einlesen und auf einer von mich bestimmtes Zeitpunkt in einer Zeitserie einlesen. Ob ich jeder Tag 2 Zeitserien schreibe (1x heute und 1x heute+1) muss ich mich noch überlegen, danke für die Tipp Robert.

Mein Problem bleibt aber bis jetzt ungelöst: 24 Datapunkte im TWS einspeisen mit selbstbestimmter Zeitcode. Jeder Tipp ist wilkommen!

l.g.
Vincent

Re: [v3.5.1] XML Datei mit mehrere Datapunkten in Zeitserien umwandern

Verfasst: Do Mär 23, 2023 10:49 am
von VincentR
In dieser screenshot sind die Preise 23. März vom Epex und Entsoe neben einander abgebildet. Volkommen (€0,01/MWh) identisch.

Bild

Re: [v3.5.1] XML Datei mit mehrere Datapunkten in Zeitserien umwandern

Verfasst: Do Mär 23, 2023 12:28 pm
von Robert_Mini
Schau dir trotzdem das hier mal an. Geht völlig unkompliziert!
viewtopic.php?f=82&t=2998&start=10#p45636

Ich lese per HTTP abfrage die EPEX Werte für die nächsten 24h aus. Diese kommen sauber als json zurück und man kann jeden Wert daraus abgreifen.
Für die weitere Logik musst du denke ich ein wenig umdenken und die Werte einzeln weiterverarbeiten. Das klingt jetzt umständlicher als es ist.
Es gibt im TWS (derzeit) keine Arrays, die man unterschiedlich, mehrfach abgreifen kann, wie man das in einem Script programmieren würde.

Beispiele:
1) reine Darstellung:
Du nimmst 1x/h den Wert für +23h und schreibst ihn in die Zeitserie, dann siehst du genau das Bild wie von dir oben gepostet.

2) Logik für WaMa:
Du wertest aus der Abfrage den Wert für jetzt, +1h und +2h aus und schreibst diese drei einzeln auf eine Logikzelle.
Dort nimmst du den Mittelwert oder auch mit Gewichtung etc. was auch immer und wenn dieser Wert > Schwellwert (zB Tarif), dann erfolgt die Freigabe für die WaMa.
Wenn es nur um einen Mittelwert geht, kannst du das über den Statistik-Baustein machen und einen Comperator nachschalten. Ansonsten eine CustomLogik mit einem Multi-Eingang ($VAR!xxx) oder einzeln...

Hier noch das json, dass die http-Abfrage liefert (23.3. 12:00):

Code: Alles auswählen

{
  "object": "list",
  "data": [
    {
      "start_timestamp": 1679569200000,
      "end_timestamp": 1679572800000,
      "marketprice": 86.05,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1679572800000,
      "end_timestamp": 1679576400000,
      "marketprice": 86.06,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1679576400000,
      "end_timestamp": 1679580000000,
      "marketprice": 89.08,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1679580000000,
      "end_timestamp": 1679583600000,
      "marketprice": 91.63,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1679583600000,
      "end_timestamp": 1679587200000,
      "marketprice": 113.25,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1679587200000,
      "end_timestamp": 1679590800000,
      "marketprice": 127.91,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1679590800000,
      "end_timestamp": 1679594400000,
      "marketprice": 137.44,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1679594400000,
      "end_timestamp": 1679598000000,
      "marketprice": 144.7,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1679598000000,
      "end_timestamp": 1679601600000,
      "marketprice": 124.94,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1679601600000,
      "end_timestamp": 1679605200000,
      "marketprice": 111.94,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1679605200000,
      "end_timestamp": 1679608800000,
      "marketprice": 110,
      "unit": "Eur/MWh"
    },
    {
      "start_timestamp": 1679608800000,
      "end_timestamp": 1679612400000,
      "marketprice": 90.08,
      "unit": "Eur/MWh"
    }
  ],
  "url": "/at/v1/marketdata"
}
lg
Robert