diff --git a/rpi/controllers/mqtt_forwarder.py b/rpi/controllers/mqtt_forwarder.py index 64b557bb..e95c3d93 100644 --- a/rpi/controllers/mqtt_forwarder.py +++ b/rpi/controllers/mqtt_forwarder.py @@ -6,22 +6,24 @@ from services.mqtt_service import MQTTService class MQTTForwarder: - client_id : str - local_broker : MQTTService - central_broker : MQTTService + _client_id : str + _local_broker : MQTTService + _central_broker : MQTTService + _qos : int - def __init__(self, client_id : str, src_mqtt: MQTTService, dst_mqtt: MQTTService): - self.client_id = client_id - self.local_broker = src_mqtt - self.central_broker = dst_mqtt + def __init__(self, client_id : str, src_mqtt: MQTTService, dst_mqtt: MQTTService, qos : int): + self._client_id = client_id + self._local_broker = src_mqtt + self._central_broker = dst_mqtt + self._qos = qos def start(self, src_topic: str, dst_topic: str): try: def forward_handler(topic: str, msg: str): forwarded_msg = self.__wrap_data(msg) - self.central_broker.publish(dst_topic, forwarded_msg) + self._central_broker.publish(dst_topic, forwarded_msg, self._qos) - self.local_broker.subscribe(src_topic, forward_handler) + 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}") @@ -30,7 +32,7 @@ class MQTTForwarder: result = {} data = json.loads(msg) result["timestamp"] = int(time.time()) - result["systemId"] = self.client_id + result["systemId"] = self._client_id result["data"] = {} for keys in data: result["data"][keys] = data[keys] diff --git a/rpi/hardware/sound/sound.py b/rpi/hardware/sound/sound.py index 8bb5e663..f23625d5 100644 --- a/rpi/hardware/sound/sound.py +++ b/rpi/hardware/sound/sound.py @@ -9,11 +9,10 @@ class SoundReader: _pin :int _running :bool _thread :threading.Thread | None - _subscriber :Callable[[int], None] + _subscriber :Callable[[str], None] def __init__(self, pin): self._pin = pin - self._sound_level = 0 self._running = False self._thread = None @@ -32,15 +31,12 @@ class SoundReader: self._thread.join() GPIO.cleanup() - def subscribe(self, handler:Callable[[int], None]): + def subscribe(self, handler:Callable[[str], None]): self._subscriber = handler - def get_level(self): - return self._sound_level - - def _notify(self): + def _notify(self, data : str): if self._subscriber: - self._subscriber(self._sound_level) + self._subscriber(data) def _read(self): measure_duration = 0.2 @@ -51,7 +47,7 @@ class SoundReader: while time.time() - start < measure_duration: if GPIO.input(self._pin): level += 1 - self._sound_level = level + self._notify(f'{{"soundSensorValue": {level}}}') time.sleep(interval - measure_duration) if __name__ == "__main__":