UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ

NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

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

Wissen, Planung & Diskussion zur Unterstützung von Rest-API & Webabfragen im Timberwolf Server.
Stellt uns hier Eure Projekte und Ideen vor.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln

Ersteller
VincentR
Reactions:
Beiträge: 11
Registriert: Mo Aug 03, 2020 7:00 pm
Wohnort: Spaarndam
Danksagung erhalten: 1 Mal

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

#1

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

Anfanger | TWS950 | #491

StefanW
Elaborated Networks
Reactions:
Beiträge: 9689
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 4831 Mal
Danksagung erhalten: 7633 Mal
Kontaktdaten:

#2

Beitrag 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
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.

Ersteller
VincentR
Reactions:
Beiträge: 11
Registriert: Mo Aug 03, 2020 7:00 pm
Wohnort: Spaarndam
Danksagung erhalten: 1 Mal

#3

Beitrag 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
Anfanger | TWS950 | #491

Ersteller
VincentR
Reactions:
Beiträge: 11
Registriert: Mo Aug 03, 2020 7:00 pm
Wohnort: Spaarndam
Danksagung erhalten: 1 Mal

#4

Beitrag 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
Anfanger | TWS950 | #491

Robert_Mini
Reactions:
Beiträge: 3741
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1164 Mal
Danksagung erhalten: 2058 Mal

#5

Beitrag 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
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#6

Beitrag 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?
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

gbglace
Reactions:
Beiträge: 3585
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1253 Mal
Danksagung erhalten: 1649 Mal

#7

Beitrag 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.
Grüße
Göran

#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension

Ersteller
VincentR
Reactions:
Beiträge: 11
Registriert: Mo Aug 03, 2020 7:00 pm
Wohnort: Spaarndam
Danksagung erhalten: 1 Mal

#8

Beitrag 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
Anfanger | TWS950 | #491

Ersteller
VincentR
Reactions:
Beiträge: 11
Registriert: Mo Aug 03, 2020 7:00 pm
Wohnort: Spaarndam
Danksagung erhalten: 1 Mal

#9

Beitrag von VincentR »

In dieser screenshot sind die Preise 23. März vom Epex und Entsoe neben einander abgebildet. Volkommen (€0,01/MWh) identisch.

Bild
Anfanger | TWS950 | #491

Robert_Mini
Reactions:
Beiträge: 3741
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1164 Mal
Danksagung erhalten: 2058 Mal

#10

Beitrag 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
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
Antworten

Zurück zu „HTTP-API, REST & Web-Abfragen“