import datetime import json import time from services.mqtt_service import MQTTService class MQTTForwarder: client_id : str local_broker : MQTTService central_broker : MQTTService def __init__(self, client_id : str, local_mqtt: MQTTService, central_mqtt: MQTTService): self.client_id = client_id self.local_broker = local_mqtt self.central_broker = central_mqtt def start(self, src_topic: str, dst_topic: str): try: def forward_handler(topic: str, msg: str): forwarded_msg = self.__wrapData(msg) self.central_broker.publish(dst_topic, forwarded_msg) self.local_broker.subscribe(src_topic, forward_handler) except Exception as e: print(f"An error occurred while forwarding from {src_topic} to {dst_topic}: {e}") def __wrapData(self, msg : str): result = {} data = json.loads(msg) result["timestamp"] = int(time.time()) result["systemId"] = self.client_id result["data"] = {} for keys in data: result["data"][keys] = data[keys]