import json import os import threading import requests from dotenv import load_dotenv from flask import Flask from src.controllers.AuthController import AuthController from src.controllers.ClientController import ClientController from src.controllers.message_controller import MessageController from src.controllers.mqtt_forwarder import MQTTForwarder from src.models.AuthData import AuthData from src.services.mqtt_service import MQTTService load_dotenv() app = Flask(__name__) local_broker_address = os.environ.get("LOCAL_BROKER_ADDRESS", "127.0.0.1") local_broker_port = int(os.environ.get("LOCAL_BROKER_PORT", 1883)) api_broker_address = os.environ.get("API_BROKER_ADDRESS", "127.0.0.1") api_broker_port = int(os.environ.get("API_BROKER_PORT", 1883)) auth_data = AuthData() auth_controller = AuthController(app, auth_data, "https://192.168.15.120:8000") client_controller = ClientController(app, auth_data, "https://192.168.15.120:8000") message_controller = MessageController(app, auth_data, "https://192.168.15.120:8000") def handle_message_received(topic:str, payload:str): try : print(payload, flush=True) url = "https://192.168.15.125:1880/message/receive" response = requests.post(url, json=json.dumps({"payload" : payload}), verify=False) print(response.json(), flush=True) except Exception as e: print(e) def start_mqtt(data : AuthData): client_id = data.get_client_id() local_broker = MQTTService( local_broker_address, local_broker_port, client_id=client_id, username="main", password="hepl", ) api_broker = MQTTService( api_broker_address, api_broker_port, client_id=client_id, username="customer", password="hepl", ) api_broker.subscribe(f"/chat/{client_id}/message", handle_message_received) forwarder = MQTTForwarder(client_id, local_broker, api_broker) forwarder.start(f"/customer/telemetry/#", f"/board-mate/{client_id}/telemetry") if __name__ == '__main__': auth_controller.set_on_login(start_mqtt) app.run(host="0.0.0.0", port=5000, debug=True)