Commit 57c9cb62 authored by Gezer's avatar Gezer
Browse files

MQTTClientHandler: added some comments, modified write point. Main.py: added...

MQTTClientHandler: added some comments, modified write point. Main.py: added logger still need to be used and so...
parent 5c73cc54
Showing with 63 additions and 12 deletions
+63 -12
...@@ -4,37 +4,70 @@ import paho.mqtt.client as mqtt ...@@ -4,37 +4,70 @@ import paho.mqtt.client as mqtt
from mqtt_influx_backend import InfluxDBWriter from mqtt_influx_backend import InfluxDBWriter
class MQTTClientHandler: class MQTTClientHandler:
# Konstruktor
def __init__(self, broker_url: str, topic: str, influx_writer: InfluxDBWriter): def __init__(self, broker_url: str, topic: str, influx_writer: InfluxDBWriter):
#logger sollte hier zugeweist werden
self.broker_url = broker_url self.broker_url = broker_url
self.topic = topic self.topic = topic
self.influx_writer = influx_writer self.influx_writer = influx_writer
self.client = mqtt.Client() self.client = mqtt.Client()
# Events werden hier methoden
self.client.on_connect = self.on_connect self.client.on_connect = self.on_connect
self.client.on_message = self.on_message self.client.on_message = self.on_message
def on_connect(self, client, userdata, flags, rc): def on_connect(self, client, userdata, flags, rc):
# log
print("Connected with result code " + str(rc)) print("Connected with result code " + str(rc))
client.subscribe(self.topic) 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): 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) msg = json.loads(msg.payload)
print(msg)
metadate = msg["metadata"] metadate = msg["metadata"]
print(metadate["mac"]) # key: mac : value : room
try: # hier prüfen, ob die Mac-Adresse einen Raum hat,
# wenn nicht trage es in mac_to_room leer ein
value = float(msg.get("co2")) # "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( self.influx_writer.write_point(
measurement="sensor_data", measurement="sensor_data",
tags={"time": metadate["mac"]}, tags={
tags={"mac": metadate["mac"]}, # ToDo "room": metadate["todo"],
fields={"value": value}, "mac": metadate["mac-address"]
timestamp=metadate["timestamp"] },
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: except Exception as e:
# log
print("Error processing message:", e) print("Error processing message:", e)
def start(self): def start(self):
......
from dotenv import load_dotenv from dotenv import load_dotenv
import os import os
import logging
from src.mqtt_influx_backend.MQTTClientHandler import MQTTClientHandler from src.mqtt_influx_backend.MQTTClientHandler import MQTTClientHandler
from src.mqtt_influx_backend.InfluxDBWriter import InfluxDBWriter 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() load_dotenv()
def main(): def main():
......
{
"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
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment