From 2f43085843755d0c1ed241caf45a146e1313fc69 Mon Sep 17 00:00:00 2001 From: DjeAvd Date: Thu, 7 May 2026 13:32:38 +0200 Subject: [PATCH] fix(gateway): replace UUID filter with manufacturer data preamble filter --- gateway/gateway.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/gateway/gateway.py b/gateway/gateway.py index 9a064cc..d351012 100644 --- a/gateway/gateway.py +++ b/gateway/gateway.py @@ -41,6 +41,7 @@ class Gateway: ) # Authentication — username from config, password from environment variable + # The password is never stored in config files or source code username = config["mqtt"].get("username") password = os.environ.get("MQTT_PASSWORD") if username: @@ -113,25 +114,25 @@ class Gateway: log.info(f"Published to {topic} : {payload}") def on_device_found(self, device, adv_data): - """BLE scan callback — filters on Adrien's preamble (0xffff) in manufacturer data.""" - if not adv_data.manufacturer_data: - return + """BLE scan callback — filters on Adrien's preamble (0xffff) in manufacturer data.""" + if not adv_data.manufacturer_data: + return - raw = list(adv_data.manufacturer_data.values())[0] + raw = list(adv_data.manufacturer_data.values())[0] - # Filter on preamble 0xffff (company id defined in firmware spec) - if len(raw) < 2 or raw[0] != 0xff or raw[1] != 0xff: - return + # Filter on preamble 0xffff (company id defined in firmware spec) + if len(raw) < 2 or raw[0] != 0xff or raw[1] != 0xff: + return - log.debug(f"{device.address} | Thingy detected, raw: {list(raw)}") + log.debug(f"{device.address} | Thingy detected, raw: {list(raw)}") - data = self.decode_payload(raw) - if not data: - log.warning(f"{device.address} | empty decoded payload") - return + data = self.decode_payload(raw) + if not data: + log.warning(f"{device.address} | empty decoded payload") + return - log.debug(f"{device.address} | decoded: {data}") - self.publish(device.address, data) + log.debug(f"{device.address} | decoded: {data}") + self.publish(device.address, data) async def run(self): """Start passive BLE scan and run indefinitely."""