Update MQTT start up
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import os
|
||||
import threading
|
||||
|
||||
from dotenv import load_dotenv
|
||||
from flask import Flask
|
||||
@@ -10,7 +11,6 @@ from src.controllers.mqtt_forwarder import MQTTForwarder
|
||||
from src.models.AuthData import AuthData
|
||||
from src.services.mqtt_service import MQTTService
|
||||
|
||||
client_id = "3b12678d-8d6f-444b-b1a7-671a2c92eabf"
|
||||
load_dotenv()
|
||||
|
||||
app = Flask(__name__)
|
||||
@@ -21,10 +21,19 @@ 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 start_mqtt(data : AuthData):
|
||||
client_id = data.get_client_id()
|
||||
|
||||
local_broker = MQTTService(
|
||||
local_broker_address,
|
||||
local_broker_port,
|
||||
client_id="customer-api",
|
||||
client_id=client_id,
|
||||
username="main",
|
||||
password="hepl",
|
||||
)
|
||||
@@ -32,22 +41,17 @@ local_broker = MQTTService(
|
||||
api_broker = MQTTService(
|
||||
api_broker_address,
|
||||
api_broker_port,
|
||||
client_id="customer-api",
|
||||
client_id=client_id,
|
||||
username="customer",
|
||||
password="hepl",
|
||||
)
|
||||
|
||||
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")
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
print(app.url_map)
|
||||
|
||||
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)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
from typing import Callable
|
||||
|
||||
from board_mate.auth import *
|
||||
from flask import jsonify, request
|
||||
from pydantic import StrictStr
|
||||
@@ -8,18 +10,30 @@ from src.models.AuthData import AuthData
|
||||
class AuthController:
|
||||
|
||||
_auth_data : AuthData = None
|
||||
_is_logged_in : bool = None
|
||||
_login_callback : Callable[[AuthData], None] = None
|
||||
|
||||
def __init__(self, app, auth_data, host):
|
||||
self._register_routes(app)
|
||||
self.config = Configuration(host=host)
|
||||
self._auth_data = auth_data
|
||||
self.config.verify_ssl = False
|
||||
self._auth_data = auth_data
|
||||
self.is_logged_in = False
|
||||
|
||||
def _register_routes(self, app):
|
||||
app.add_url_rule("/client/auth", view_func=self.auth, methods=['POST'])
|
||||
|
||||
def set_on_login(self, handler : Callable[[AuthData], None]):
|
||||
self._login_callback = handler
|
||||
|
||||
def _notify_login(self, data : AuthData):
|
||||
if not self._login_callback: return
|
||||
self._login_callback(data)
|
||||
|
||||
def auth(self):
|
||||
try:
|
||||
if self._is_logged_in: jsonify({"success" : False, "message" : "Already logged in", "data" : None}), 400
|
||||
|
||||
received_data = request.get_json()
|
||||
print(received_data)
|
||||
with ApiClient(self.config) as client:
|
||||
@@ -37,6 +51,8 @@ class AuthController:
|
||||
|
||||
self._auth_data.set_token(response.data["authToken"])
|
||||
self._auth_data.set_client_id(response.data["clientId"])
|
||||
self._notify_login(self._auth_data)
|
||||
self._is_logged_in = True
|
||||
return jsonify({"success" : response.success, "message" : response.message , "data" : response.data}), 200
|
||||
except Exception as e:
|
||||
print(f"Exception when calling AuthAPI->login: {e}")
|
||||
|
||||
@@ -79,9 +79,9 @@ class MQTTService:
|
||||
self._subscriptions[topic] = handler
|
||||
|
||||
def on_message(client, userdata, msg):
|
||||
for sub_topic, h in self._subscriptions.items():
|
||||
for sub_topic, sub_handler in self._subscriptions.items():
|
||||
if mqtt.topic_matches_sub(sub_topic, msg.topic):
|
||||
h(msg.topic, msg.payload.decode())
|
||||
sub_handler(msg.topic, msg.payload.decode())
|
||||
|
||||
self.client.on_message = on_message
|
||||
self.client.subscribe(topic, qos=qos)
|
||||
|
||||
Reference in New Issue
Block a user