From 943515aaf808173715e7cd24863f194b7b01daab Mon Sep 17 00:00:00 2001 From: gsd Date: Wed, 18 Feb 2026 23:16:24 +0300 Subject: [PATCH] udp packet hack --- mesht_device.py | 8 +++++++- packet_test.py | 12 +++++++++--- service.py | 2 +- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/mesht_device.py b/mesht_device.py index 31c6cdb..03b45c3 100644 --- a/mesht_device.py +++ b/mesht_device.py @@ -232,7 +232,7 @@ class Channel: class MeshtDevice: - def __init__(self, transport, device_uuid, skip_init = False, test_client = False): + def __init__(self, transport, device_uuid, skip_init = False, test_client = False, udp_packet = False): self.transport = transport self.channels = [] self.lora_config = None @@ -243,6 +243,7 @@ class MeshtDevice: self.device_uuid = device_uuid self.skip_init = skip_init self.test_client = test_client + self.udp_packet = udp_packet async def start(self): await self.transport.start() @@ -284,6 +285,11 @@ class MeshtDevice: if self.test_client: parseBytesToProtobuf(data) return {}, b"" + + if self.udp_packet: + #mqtt или udp пакеты мы ЖЕСТКО перекодируем словно так и надо + dec = pb.decode(data, MESHPACKET_SCHEMA) + data = pb.encode({"packet": dec}, FROMRADIO_SCHEMA) fr = pb.decode(data, FROMRADIO_SCHEMA) fr["device_uuid"] = self.device_uuid diff --git a/packet_test.py b/packet_test.py index ddadd58..5eeb346 100644 --- a/packet_test.py +++ b/packet_test.py @@ -5,12 +5,18 @@ from mesht_device import FROMRADIO_SCHEMA, NODEINFO_SCHEMA, USER_SCHEMA, MESHPAC from protobuf_decoder.protobuf_decoder import Parser ## -packet = "nP712mDRlbdujxpSd4bUMBiNR/WQj5t4qXfxKA==" +packet = "Ddg4d54VeDZ3nhgIKlwHxTE8NDD8eGEQJZ+dr51uXyYBbmqDz2eNhawRUqCrHOxVpvneHflbRZdM+TgRdQP37qZZd9A8r/HjeoSlrg78d8kXYbK/HtV7sct/4nw9ockVYGxvxeyM5gCyUjVE0aO1PXEXlmlIB1hGeAeQAXiYAdgB" data = base64.b64decode(packet) res = Parser().parse(data.hex()) -print(res.to_dict()) -print(pb.decode(data, USER_SCHEMA)) +print(res.to_dict(), "\n\n") +dec = pb.decode(data, MESHPACKET_SCHEMA) +print(dec, "\n\n") + +enc = pb.encode({"packet": dec}, FROMRADIO_SCHEMA) +decTwice = pb.decode(enc, FROMRADIO_SCHEMA) +print(decTwice) + ### #print(base64.b64decode('BtJrAGXS0BJzm9890X0uD1VawYhZ+woD5O6UI3oXUjmB')) diff --git a/service.py b/service.py index 46056b9..7de31eb 100644 --- a/service.py +++ b/service.py @@ -89,7 +89,7 @@ class MeshMultiListener(MeshArgsParse): logger.info("Found ws transport") from transport_ws import WSTransport transport = WSTransport(device_config["port"], device_config["uuid"]) - self.devices.append(MeshtDevice(transport, device_config['uuid'], True, True)) + self.devices.append(MeshtDevice(transport, device_config['uuid'], True, False, True)) #set default mesh self.defaultDeviceUUID = self.json_config[0]["uuid"]