From 57c9cb62861d14d8ed7c908f6777897cf80807c7 Mon Sep 17 00:00:00 2001 From: Emre Gezer <21geem1bif@hft-stuttgart.de> Date: Thu, 17 Apr 2025 11:20:45 +0200 Subject: [PATCH] MQTTClientHandler: added some comments, modified write point. Main.py: added logger still need to be used and so... --- src/mqtt_influx_backend/MQTTClientHandler.py | 55 ++++++++++++++++---- src/mqtt_influx_backend/Main.py | 15 +++++- src/mqtt_influx_backend/mac_to_room | 5 ++ 3 files changed, 63 insertions(+), 12 deletions(-) create mode 100644 src/mqtt_influx_backend/mac_to_room diff --git a/src/mqtt_influx_backend/MQTTClientHandler.py b/src/mqtt_influx_backend/MQTTClientHandler.py index 1048fc2..478024d 100644 --- a/src/mqtt_influx_backend/MQTTClientHandler.py +++ b/src/mqtt_influx_backend/MQTTClientHandler.py @@ -4,37 +4,70 @@ import paho.mqtt.client as mqtt from mqtt_influx_backend import InfluxDBWriter class MQTTClientHandler: + + # Konstruktor def __init__(self, broker_url: str, topic: str, influx_writer: InfluxDBWriter): + #logger sollte hier zugeweist werden self.broker_url = broker_url self.topic = topic self.influx_writer = influx_writer self.client = mqtt.Client() + # Events werden hier methoden self.client.on_connect = self.on_connect self.client.on_message = self.on_message def on_connect(self, client, userdata, flags, rc): + # log print("Connected with result code " + str(rc)) client.subscribe(self.topic) + + #def save_mapping(self): + #with open(self.mapping_file, "w") as f: + # json.dump(self.mac_to_room, f, indent=4) + # eventuell refactorn und die Aufgaben in Methoden aufteilen def on_message(self, client, userdata, msg): - + """ + Wenn das Topic eine Nachricht bekommt wird diese Methode ausgeführt + self: ist die MQTTClientHandler instanz, die wird gebraucht + """ + # log msg = json.loads(msg.payload) - print(msg) metadate = msg["metadata"] - print(metadate["mac"]) - try: - - value = float(msg.get("co2")) + # key: mac : value : room + # hier prüfen, ob die Mac-Adresse einen Raum hat, + # wenn nicht trage es in mac_to_room leer ein + # "aa:bb:cc:dd:ee:ff" : "" + mac = metadate["mac"] + # ToImplement + """ + if mac not in self.mac_to_room: + print(f"Neue MAC-Adresse gefunden: {mac}. Mapping wird ergänzt.") + self.mac_to_room[mac] = "" # leerer Platzhalter + self.save_mapping() + + room = self.mac_to_room[mac] + """ + + try: self.influx_writer.write_point( measurement="sensor_data", - tags={"time": metadate["mac"]}, - tags={"mac": metadate["mac"]}, - fields={"value": value}, - timestamp=metadate["timestamp"] + tags={ + # ToDo "room": metadate["todo"], + "mac": metadate["mac-address"] + }, + + fields={ + "co2": msg["co2"], + "temperature": msg["temp"], + "humidity": msg["rh"] + }, + timestamp=metadate["time"] ) - print("Wrote to InfluxDB:", value) + print("Wrote to InfluxDB:", msg) # muss später rausgeschmiessen werden except Exception as e: + # log print("Error processing message:", e) def start(self): diff --git a/src/mqtt_influx_backend/Main.py b/src/mqtt_influx_backend/Main.py index 22b6955..4b52edd 100644 --- a/src/mqtt_influx_backend/Main.py +++ b/src/mqtt_influx_backend/Main.py @@ -1,9 +1,22 @@ from dotenv import load_dotenv import os - +import logging from src.mqtt_influx_backend.MQTTClientHandler import MQTTClientHandler from src.mqtt_influx_backend.InfluxDBWriter import InfluxDBWriter +def get_logger(name: str = "default_logger") -> logging.Logger: + logger = logging.getLogger(name) + if not logger.handlers: # Verhindert doppelte Handler bei mehrfacher Initialisierung + logger.setLevel(logging.DEBUG) + handler = logging.StreamHandler() + formatter = logging.Formatter( + '[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s' + ) + handler.setFormatter(formatter) + logger.addHandler(handler) + return logger + + load_dotenv() def main(): diff --git a/src/mqtt_influx_backend/mac_to_room b/src/mqtt_influx_backend/mac_to_room new file mode 100644 index 0000000..dfbc6ed --- /dev/null +++ b/src/mqtt_influx_backend/mac_to_room @@ -0,0 +1,5 @@ +{ + "AA:BB:CC:DD:EE:FF": "Wohnzimmer", + "11:22:33:44:55:66": "Küche", + "77:88:99:AA:BB:CC": "Schlafzimmer" +} \ No newline at end of file -- GitLab