test communication scheduler<->simclient

This commit is contained in:
2025-07-18 14:49:53 +00:00
parent a1d6d83488
commit 2e9f22f5cc
11 changed files with 389 additions and 88 deletions

View File

@@ -2,8 +2,12 @@
import os
import json
import logging
import threading
import time
# ...requests entfernt...
import datetime
import paho.mqtt.client as mqtt
from sqlalchemy import create_engine, func
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from models.models import Client
from dotenv import load_dotenv
@@ -17,19 +21,21 @@ DB_URL = os.environ.get(
"DB_CONN", "mysql+pymysql://user:password@db/infoscreen")
# Logging
logging.basicConfig(level=getattr(logging, LOG_LEVEL.upper(), logging.INFO),
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s [%(levelname)s] %(message)s')
# DB-Konfiguration
engine = create_engine(DB_URL)
Session = sessionmaker(bind=engine)
# ...externe Zeitsynchronisation entfernt...
# MQTT-Callback
def on_message(client, userdata, msg):
topic = msg.topic
logging.debug(f"Empfangene Nachricht auf Topic: {topic}")
try:
# Heartbeat-Handling
if topic.startswith("infoscreen/") and topic.endswith("/heartbeat"):
@@ -37,11 +43,10 @@ def on_message(client, userdata, msg):
session = Session()
client_obj = session.query(Client).filter_by(uuid=uuid).first()
if client_obj:
from sqlalchemy import func
client_obj.last_alive = func.current_timestamp()
session.commit()
logging.info(
f"Heartbeat von {uuid} empfangen, last_alive aktualisiert.")
client_obj.last_alive = datetime.datetime.now(datetime.UTC)
session.commit()
logging.info(
f"Heartbeat von {uuid} empfangen, last_alive (UTC) aktualisiert.")
session.close()
return
@@ -62,6 +67,7 @@ def on_message(client, userdata, msg):
software_version=payload.get("software_version"),
macs=",".join(payload.get("macs", [])),
model=payload.get("model"),
registration_time=datetime.datetime.now(datetime.UTC),
)
session.add(new_client)
session.commit()