unter smard.de kann man die Strommarktdaten herunterladen. Man muss aber zuerst einiges auswählen, bis man zur richtigen Datei kommt.
https://www.smard.de/home/downloadcente ... arktdaten/
Die Frage ist, wie man das mit PB automatisiert?
Ich hab leider mit dem http und ftp Funktionen von PB noch nie gearbeitet.
Ich vermute aber mal, dass es hier ein paar Profis dazu gibt, die genau wissen wie das geht.
Hintergrund ist, die Daten dann einer Industrie SPS zur Verfügung zu stellen um.
Hier ein Forums-Thread aus dem SPS-Forum wo das diskutiert wird.
Da ich das wohl selbst in Zukunft brauchen könnte, bin ich schon wieder dabei!
https://www.sps-forum.de/threads/stromm ... en.116959/
Alo hat jedmand eine Beispielcode wie man das runterläd?
evtl. sogar mit einer kleinen GUI, wo man was auswählen kann
Mein Problem ist schon mal, dass ich gar nicht an einen entsprechenden Pfad komme, den man verwenden könnte,
da man die ganzen Filter manuell anwählen muss.
Da einen anderen Link automatisch zusammenbasteln bring ich selbst auf die Reihe.
Übertragung an die SPS ist für mich auch kein Problem!
Ergänzung:
es gibt einn offiziellen Python api client. Ich versteh da aber nur 'Bahnhof'!
https://github.com/bundesAPI/smard-api/ ... _client.py
Strommarktdaten automatisch downloaden
Re: Strommarktdaten automatisch downloaden
Die Adresse, die aufgerufen wird, lautet:
https://www.smard.de/home/downloadcente ... marktdaten
Dieser Adresse musst Du Parameter übergeben. Beispielweise:
Und das hier muss noch via POST übergeben werden (Beispiel):
Manche Parameter sind ja selbsterklärend. Bei den anderen musst Du mal ein wenig ausprobieren.
Drücke in Deinem Browser <F12>. Dann öffnet sich die Entwicklerkonsole. Dort kannst Du im Tab "Netzwerk" sehen, was via Header und Nutzlast übermittelt wird, wenn Du auf der Seite "Datei herunterladen" klickst. Screenshot
Das ganze lässt sich mit HTTPRequest() realisieren.
https://www.smard.de/home/downloadcente ... marktdaten
Dieser Adresse musst Du Parameter übergeben. Beispielweise:
Code: Alles auswählen
https://www.smard.de/home/downloadcenter/download-marktdaten/?downloadAttributes=%7B%22selectedCategory%22:2,%22selectedSubCategory%22:5,%22selectedRegion%22:%22DE%22,%22selectedFileType%22:%22CSV%22,%22from%22:1730242800000,%22to%22:1731193199999%7D
Code: Alles auswählen
{
"request_form": [
{
"format": "CSV",
"moduleIds": [
5000410,
5004387,
5004359
],
"region": "DE",
"timestamp_from": 1730242800000,
"timestamp_to": 1731193200000,
"type": "discrete",
"language": "de",
"resolution": ""
}
]
}
Drücke in Deinem Browser <F12>. Dann öffnet sich die Entwicklerkonsole. Dort kannst Du im Tab "Netzwerk" sehen, was via Header und Nutzlast übermittelt wird, wenn Du auf der Seite "Datei herunterladen" klickst. Screenshot
Das ganze lässt sich mit HTTPRequest() realisieren.
a²+b²=mc²
- NicTheQuick
- Ein Admin
- Beiträge: 8808
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Strommarktdaten automatisch downloaden
Das ist eigentlich ganz einfach herauszufinden. Du öffnest im Browser die Entwicklerkonsole und gehst in den Netzwerk-Tab. Dann wählst du auf der Seite aus, was du herunterladen willst und startest den Download. Im selben Moment siehst du im Netzwerk-Tab einen POST-Request, in dem genau steht, was an den Server gesendet wurde, damit er mit der entsprechenden Datei antwortet.
Ich weiß nicht wie es bei Chrome ist, aber bei Firefox kann man dann auch einen Rechtsklick auf die Abfrage machen und dann den Wert als cURL-Adresse kopieren. Und das sieht dann zum Beispiel so aus:
Jetzt bereinigt man das noch von allem, was man sehr wahrscheinlich nicht braucht (Cookies, sonstige Header), und schon hat man seinen Aufruf:
Und wenn man den so im Terminal unter Linux eingibt, funktioniert es auch:
Das kann man jetzt recht einfach in Purebasic übersetzen, indem man `HTTPRequest()` nutzt, als Typ `#PB_HTTP_Post` nutzt, den Header für den Content-Type setzt und als Daten den JSON-Request mitgibt.
Edit: Kiffi war schneller.
Ich weiß nicht wie es bei Chrome ist, aber bei Firefox kann man dann auch einen Rechtsklick auf die Abfrage machen und dann den Wert als cURL-Adresse kopieren. Und das sieht dann zum Beispiel so aus:
Code: Alles auswählen
curl 'https://www.smard.de/nip-download-manager/nip/download/market-data' -X POST -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:132.0) Gecko/20100101 Firefox/132.0' -H 'Accept: application/json, text/plain, */*' -H 'Accept-Language: de,en-US;q=0.7,en;q=0.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Content-Type: application/json' -H 'Origin: https://www.smard.de' -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Referer: https://www.smard.de/home/downloadcenter/download-marktdaten/?downloadAttributes=%7B%22selectedCategory%22:2,%22selectedSubCategory%22:5,%22selectedRegion%22:%22DE%22,%22selectedFileType%22:%22CSV%22,%22from%22:1730242800000,%22to%22:1731193199999%7D' -H 'Cookie: guid=9897ac1e-bc68-48b4-ab0c-144db652aedf+4cd0ff50128c5c669d1680dbf811fa7800dc8f6d624eb9b6ea1fc83d8bb34e250e90d4d80160686d22e801cfb37c1a8bc9496c08378a0ed618d5fcb6d0be338555b174ef7bd3e35c148f7e949ff7ca7f9833fd9a4a44fcc72e7ebd7bfac791436cc5b09498fb413ec760f4b7e8e0d82f2afb306547ac0247e407f18edaf9ebccd33b195383b5d1ff6f1b481212e8d4abd92fae7760d81f4ffa0f8893aff6be4aa14f5a2276bf82ffff4fdda9c750d77ef20deb27bcec5148df35e9d832d99ed193be4b70f0e9455d6b6ef148dc3ecb7976907c5abda8124917b2d0e0a4ca8fb286acdaa86c2a510ae0118f91c6252eef430d5d9c88a142eb8d2b5019577756f4; CM_SESSIONID=B28F212302A33FE7C17E50B6301198B5; bnetza_cookie=!DwHOWDYxoHK+nPVnZMt9BfHyonaFV3+xLtYwUH2kJNDb5OLN8MIH0CzadTDnjSrCd9vGNaaNW9h3Nw==; TS01418b58=01e68c70d5a67a5af9ab6d05a08e9ebf28076e4d5c7d3327791fe0d295eeb26041bbfb0ef4d552294d75b2d14305da409223128118813ad80be8f165dcca7c42589338545378110afd4ba9ee7ce41f483b548c76f11861382d20b54c0cd1476f1b42fd0426' -H 'Sec-Fetch-Dest: empty' -H 'Sec-Fetch-Mode: cors' -H 'Sec-Fetch-Site: same-origin' -H 'Priority: u=0' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' --data-raw '{"request_form":[{"format":"CSV","moduleIds":[5000410,5004387,5004359],"region":"DE","timestamp_from":1730242800000,"timestamp_to":1731193200000,"type":"discrete","language":"de","resolution":"quarterhour"}]}'
Code: Alles auswählen
curl 'https://www.smard.de/nip-download-manager/nip/download/market-data' -X POST -H 'Content-Type: application/json' --data-raw '{"request_form":[{"format":"CSV","moduleIds":[5000410,5004387,5004359],"region":"DE","timestamp_from":1730242800000,"timestamp_to":1731193200000,"type":"discrete","language":"de","resolution":"quarterhour"}]}'
Code: Alles auswählen
nicolas@Rocky:~$ curl 'https://www.smard.de/nip-download-manager/nip/download/market-data' -X POST -H 'Content-Type: application/json' --data-raw '{"request_form":[{"format":"CSV","moduleIds":[5000410,5004387,5004359],"region":"DE","timestamp_from":1730242800000,"timestamp_to":1731193200000,"type":"discrete","language":"de","resolution":"quarterhour"}]}'
Datum von;Datum bis;Gesamt (Netzlast) [MWh] Originalauflösungen;Residuallast [MWh] Originalauflösungen;Pumpspeicher [MWh] Originalauflösungen
30.10.2024 00:00;30.10.2024 00:15;11.349,25;9.560,75;512,25
30.10.2024 00:15;30.10.2024 00:30;11.225,25;9.394,00;506,00
30.10.2024 00:30;30.10.2024 00:45;11.110,00;9.271,25;543,00
30.10.2024 00:45;30.10.2024 01:00;11.024,50;9.219,75;718,50
30.10.2024 01:00;30.10.2024 01:15;10.827,50;9.069,75;683,75
30.10.2024 01:15;30.10.2024 01:30;10.744,00;9.018,75;737,75
30.10.2024 01:30;30.10.2024 01:45;10.650,00;8.971,75;824,75
30.10.2024 01:45;30.10.2024 02:00;10.627,00;9.008,75;813,75
30.10.2024 02:00;30.10.2024 02:15;10.507,25;8.936,00;835,00
...
Edit: Kiffi war schneller.

Re: Strommarktdaten automatisch downloaden
also das mit curl unter Linux hat bei mir auch genauso funktioniert!
Die Adresse für Curl direkt in die Adresszeile des Browsers kopiert bringt Fehler! Schließe daraus, dass geht direkt mit Browser nicht!
Hab jetzt aber hier die Dokumentation der Parameter (Filter, Region, timestamp ...):
https://github.com/bundesAPI/smard-api/ ... p_json_get
Erster Schritt erstmal das aufdrößeln und über ComboBox oder Liste als Auswahlwerte bereitstellen. -> kein Problem
Mein Problem geht aber bei de, HTTP Request weiter:
Wenn das fertig ist, hab ich bestimmt noch einige Fragen
Die Adresse für Curl direkt in die Adresszeile des Browsers kopiert bringt Fehler! Schließe daraus, dass geht direkt mit Browser nicht!
Hab jetzt aber hier die Dokumentation der Parameter (Filter, Region, timestamp ...):
https://github.com/bundesAPI/smard-api/ ... p_json_get
Erster Schritt erstmal das aufdrößeln und über ComboBox oder Liste als Auswahlwerte bereitstellen. -> kein Problem
Mein Problem geht aber bei de, HTTP Request weiter:
Wenn das fertig ist, hab ich bestimmt noch einige Fragen
- NicTheQuick
- Ein Admin
- Beiträge: 8808
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Strommarktdaten automatisch downloaden
Nein, das geht nicht direkt mit dem Browser, weil du einen POST-Request absetzen musst. Und die Request über die Browserzeile sind immer GET-Requests.
Übrigens ist dein Link falsch, der zeigt einen 404. Der hier ist richtig:
https://github.com/bundesAPI/smard-api/ ... p_json_get
Übrigens ist dein Link falsch, der zeigt einen 404. Der hier ist richtig:
https://github.com/bundesAPI/smard-api/ ... p_json_get