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()