Fix MQTT connection
This commit is contained in:
@@ -5,19 +5,24 @@ from typing import Callable, Optional
|
||||
import paho.mqtt.client as mqtt
|
||||
|
||||
class MQTTService:
|
||||
|
||||
client : mqtt.Client
|
||||
|
||||
def __init__(self, address: str, port: int, client_id: Optional[str] = None,
|
||||
username: Optional[str] = None, password: Optional[str] = None,
|
||||
ca_certs: Optional[str] = None):
|
||||
ca_certs: Optional[str] = None, insecure : bool = False):
|
||||
self.address = address
|
||||
self.port = port
|
||||
self.client = mqtt.Client(client_id=client_id)
|
||||
|
||||
if username and password:
|
||||
self.client.username_pw_set(username, password)
|
||||
|
||||
if ca_certs:
|
||||
self.client.tls_set(ca_certs=ca_certs)
|
||||
else:
|
||||
self.client.tls_set()
|
||||
self.client.tls_insecure_set(True)
|
||||
self.client.tls_insecure_set(insecure)
|
||||
|
||||
self._connected = False
|
||||
self.client.on_connect = self._on_connect
|
||||
self.client.on_disconnect = self._on_disconnect
|
||||
@@ -37,16 +42,18 @@ class MQTTService:
|
||||
|
||||
def connect(self):
|
||||
if not self._connected:
|
||||
print(f"Connecting to {self.address}...")
|
||||
self.client.connect(self.address, self.port)
|
||||
self.client.loop_start()
|
||||
timeout = 5
|
||||
start = time.time()
|
||||
while not self._connected and time.time() - start < timeout:
|
||||
print(f"Connecting to {self.address}...")
|
||||
time.sleep(0.1)
|
||||
if not self._connected:
|
||||
raise ConnectionError(f"Cannot connect to MQTT broker at {self.address}:{self.port}")
|
||||
print(f"Successfully connected to {self.address}")
|
||||
else :
|
||||
print(f"Already connected to {self.address}...")
|
||||
|
||||
def disconnect(self):
|
||||
if self._connected:
|
||||
|
||||
Reference in New Issue
Block a user