From a2c3fea4af51b3b15c494ba7184bb5a70b65123e Mon Sep 17 00:00:00 2001 From: Laurent Date: Sat, 27 Dec 2025 14:44:51 +0100 Subject: [PATCH] Fix light sensor parsing --- rpi/hardware/light/__init__.py | 0 .../light/lora_light_sensor_reader.py | 27 +++++++++++++++++++ rpi/hardware/rfid/reader.py | 4 --- rpi/main.py | 7 ++--- 4 files changed, 29 insertions(+), 9 deletions(-) create mode 100644 rpi/hardware/light/__init__.py create mode 100644 rpi/hardware/light/lora_light_sensor_reader.py diff --git a/rpi/hardware/light/__init__.py b/rpi/hardware/light/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/rpi/hardware/light/lora_light_sensor_reader.py b/rpi/hardware/light/lora_light_sensor_reader.py new file mode 100644 index 00000000..f47e667b --- /dev/null +++ b/rpi/hardware/light/lora_light_sensor_reader.py @@ -0,0 +1,27 @@ +import json +import re +from re import Pattern + +from hardware.generic.serial_reader import SerialReader + +class LoraLightSensorReader(SerialReader): + + json_pattern : Pattern = None + + def __init__(self, port, baudrate): + super().__init__(port, baudrate) + self.json_pattern = re.compile(r'\{.*}') + + def __read(self): + while self._run_event.is_set(): + line = self.serial.readline().decode('utf-8', errors='ignore').strip() + if not line: + continue + + match = self.json_pattern.search(line) + if match: + try: + data = json.loads(match.group()) + print("Received JSON:", data) + except json.JSONDecodeError: + print("Received invalid JSON:", match.group()) \ No newline at end of file diff --git a/rpi/hardware/rfid/reader.py b/rpi/hardware/rfid/reader.py index 7712800c..1a5f7c82 100644 --- a/rpi/hardware/rfid/reader.py +++ b/rpi/hardware/rfid/reader.py @@ -1,8 +1,4 @@ #!/usr/bin/env python3 -from collections.abc import Callable -from threading import Thread -import threading -from serial import Serial from hardware.generic.serial_reader import SerialReader diff --git a/rpi/main.py b/rpi/main.py index 4269bbd0..fc3b042b 100644 --- a/rpi/main.py +++ b/rpi/main.py @@ -1,8 +1,7 @@ #!/usr/bin/env python3 -import cv2 from flask import Flask -from hardware.generic.serial_reader import SerialReader +from hardware.light.lora_light_sensor_reader import LoraLightSensorReader from hardware.screen.screen import Screen from hardware.rfid.reader import RfidReader from services.detection_service import DetectionService @@ -13,7 +12,7 @@ app = Flask(__name__) screen = Screen() mqtt_service = MQTTService("127.0.0.1", 1883) rfid_reader = RfidReader("/dev/serial0", 9600) -light_sensor_reader = SerialReader("/dev/ttyUSB1", 57600) +light_sensor_reader = LoraLightSensorReader("/dev/ttyUSB1", 57600) detection_service = DetectionService() @app.route("/party/start", methods=['POST']) @@ -59,8 +58,6 @@ if __name__ == "__main__": print(e) exit_app() - - """ def get_move(prompt, move_queue): while True: