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.
77 lines
2.9 KiB
77 lines
2.9 KiB
import time
|
|
from db import Database
|
|
from mqtt_publisher import MQTTPublisher
|
|
from logger import setup_logger
|
|
from config import get_db_config, get_mqtt_config
|
|
from dotenv import load_dotenv
|
|
|
|
|
|
def main():
|
|
try:
|
|
# Laad de configuratie uit het .env bestand
|
|
load_dotenv()
|
|
print("Configuratie geladen.")
|
|
logger = setup_logger()
|
|
logger.debug("Logger ingesteld.")
|
|
|
|
# Verkrijg de database configuratie
|
|
db_config = get_db_config()
|
|
logger.debug(f"Database configuratie geladen: {db_config}")
|
|
|
|
# Verkrijg de MQTT configuratie
|
|
mqtt_config = get_mqtt_config()
|
|
logger.debug(f"MQTT configuratie geladen: {mqtt_config}")
|
|
|
|
# Maak een verbinding met de database
|
|
db = Database(db_config, logger)
|
|
logger.debug(
|
|
"db initialiseerd...")
|
|
mqtt_publisher = MQTTPublisher(mqtt_config, logger)
|
|
logger.debug(
|
|
"mqtt_publisher initialiseerd...")
|
|
|
|
logger.debug(
|
|
"Start met het ophalen en publiceren van de elektriciteitsprijs...")
|
|
|
|
# Periodieke publicatie in een loop (elke 30 minuten)
|
|
while True:
|
|
# Haal de prijs op uit de database
|
|
price = db.fetch_current_price()
|
|
if price is not None:
|
|
logger.debug(f"Huidige prijs opgehaald: {price} EUR/kWh")
|
|
mqtt_publisher.publish(price, mqtt_config['topic_price'])
|
|
logger.debug(
|
|
f"Prijs gepubliceerd naar MQTT-topic {mqtt_config['topic_price']}: {price}")
|
|
else:
|
|
logger.warning("Geen prijs gevonden voor het huidige uur.")
|
|
total_costs_today = db.fetch_daily_costs()
|
|
if total_costs_today is not None:
|
|
rounded_costs = round(total_costs_today, 2)
|
|
# Afgerond op 2 decimalen en met euroteken
|
|
formatted_costs = f"€{rounded_costs:.2f}"
|
|
logger.debug(f"Huidige kosten voor vandaag: {formatted_costs}")
|
|
mqtt_publisher.publish(
|
|
formatted_costs, mqtt_config['topic_costs'])
|
|
|
|
logger.debug(
|
|
f"Huidige kosten voor vandaag: {formatted_costs} EUR")
|
|
|
|
mqtt_publisher.publish(
|
|
formatted_costs, mqtt_config['topic_costs'])
|
|
logger.debug(
|
|
f"Kosten gepubliceerd naar MQTT-topic {mqtt_config['topic_costs']}: {formatted_costs}")
|
|
else:
|
|
logger.warning("Geen kosten gevonden voor de huidige dag.")
|
|
|
|
# Wacht 30 minuten (1800 seconden) voor de volgende publicatie
|
|
print("Wachten op de volgende publicatie...")
|
|
logger.debug("Wachten op de volgende publicatie...")
|
|
time.sleep(60)
|
|
except Exception as e:
|
|
logger.error(f"Fout in main loop: {e}")
|
|
exit(1) # Stop de applicatie als er een fout optreedt
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|