You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kmftools/energie/stroomprijzen.py

83 lines
2.5 KiB

import requests
import mysql.connector
from mysql.connector import Error
import datetime
# Configuratievariabelen
ENERVER_API_URL = "https://enever.nl/api/stroomprijs_laatste30dagen.php" # API URL
ENERVER_API_TOKEN = "10d856e7b6b63a4d4e554c10b00e6b0d" # Vervang met je token
MYSQL_CONFIG = {
"host": "localhost",
"user": "root",
"password": "<your_password>",
"database": "energieprijzen",
}
def fetch_enever_prices():
"""Haal stroomprijsgegevens op van de EneVer API."""
params = {"token": ENERVER_API_TOKEN}
try:
response = requests.get(ENERVER_API_URL, params=params)
response.raise_for_status()
return response.json() # Verwacht JSON als antwoord
except requests.RequestException as e:
print(f"Fout bij ophalen EneVer-prijzen: {e}")
return None
def store_prices_to_db(prices):
"""Sla de relevante stroomprijzen op in een MySQL-database."""
try:
connection = mysql.connector.connect(**MYSQL_CONFIG)
if connection.is_connected():
cursor = connection.cursor()
# Zorg dat de tabel bestaat
cursor.execute(
"""
CREATE TABLE IF NOT EXISTS stroomprijzen (
id INT AUTO_INCREMENT PRIMARY KEY,
timestamp DATETIME,
price_ti DECIMAL(10, 5)
)
"""
)
# Voeg de prijzen toe
for price_entry in prices:
timestamp = datetime.datetime.strptime(
price_entry["datum"], "%Y-%m-%d %H:%M:%S"
)
price_ti = float(price_entry["prijsTI"])
cursor.execute(
"""
INSERT INTO stroomprijzen (timestamp, price_ti)
VALUES (%s, %s)
""",
(timestamp, price_ti),
)
connection.commit()
print("Relevante prijzen succesvol opgeslagen in de database.")
except Error as e:
print(f"Fout bij verbinden met de database: {e}")
finally:
if connection.is_connected():
cursor.close()
connection.close()
if __name__ == "__main__":
# Prijzen ophalen van EneVer API
enever_prices = fetch_enever_prices()
# if enever_prices:
# # Prijzen opslaan in de database
# store_prices_to_db(enever_prices)
# else:
# print("Geen prijzen beschikbaar om op te slaan.")