|
|
|
@ -10,8 +10,7 @@ import copy |
|
|
|
from logger import logger |
|
|
|
|
|
|
|
#mesh |
|
|
|
from mesht_device import MeshtDevice, NODEINFO_SCHEMA |
|
|
|
from protobufs_extra.node_info_lite_proto import NODE_INFO_LITE_SCHEME |
|
|
|
from mesht_device import MeshtDevice, USER_SCHEMA |
|
|
|
from mesht_models import _wait_for_config_complete, PUB_CH |
|
|
|
from mesht_models import NOT_CONNECTED, WAIT_CONFIG, AVAILABLE, ERR, RECONNECT |
|
|
|
from protobufs_extra.telemetry_proto import * |
|
|
|
@ -186,26 +185,17 @@ class MongoDriver(MeshArgsParse): |
|
|
|
elif v.get("portnum", 0) == 70: #traceroute |
|
|
|
v["decoded_payload_object"] = pb.decode(v["payload"], ROUTE_DISCOVERY_SCHEME) |
|
|
|
elif v.get("portnum", 0) == 4: #nodeinfo |
|
|
|
try: |
|
|
|
v["decoded_payload_object"] = pb.decode(v["payload"], NODEINFO_SCHEMA) |
|
|
|
except: |
|
|
|
v["decoded_payload_object"] = pb.decode(v["payload"], NODE_INFO_LITE_SCHEME) |
|
|
|
|
|
|
|
v["decoded_payload_object"] = pb.decode(v["payload"], USER_SCHEMA) |
|
|
|
else: |
|
|
|
self.tryParseProtobuf(v) |
|
|
|
|
|
|
|
if "decoded_payload_object" in v: |
|
|
|
print(v["decoded_payload_object"]) |
|
|
|
except: |
|
|
|
logger.error("Cannot decode protobuf: " + v.get("portnum", 0)) |
|
|
|
self.tryParseProtobuf(v) |
|
|
|
traceback.print_exc() |
|
|
|
|
|
|
|
try: |
|
|
|
if v.get("portnum", 0) in []: |
|
|
|
pass |
|
|
|
else: |
|
|
|
to_parse = ' '.join(f'{byte:02x}' for byte in v["payload"]) |
|
|
|
res = Parser().parse(to_parse) |
|
|
|
logger.debug(res.to_dict()) |
|
|
|
except: |
|
|
|
pass |
|
|
|
|
|
|
|
if "user" in v: |
|
|
|
v.update(v["user"]) |
|
|
|
del v["user"] |
|
|
|
@ -213,6 +203,17 @@ class MongoDriver(MeshArgsParse): |
|
|
|
v["device_uuid"] = from_radio["device_uuid"] |
|
|
|
await self.dbStore[k].insert_one(v) |
|
|
|
|
|
|
|
def tryParseProtobuf(v): |
|
|
|
try: |
|
|
|
if v.get("portnum", 0) in []: |
|
|
|
pass |
|
|
|
else: |
|
|
|
to_parse = ' '.join(f'{byte:02x}' for byte in v["payload"]) |
|
|
|
res = Parser().parse(to_parse) |
|
|
|
logger.debug(v["portnum"], res.to_dict()) |
|
|
|
except: |
|
|
|
pass |
|
|
|
|
|
|
|
class MeshCenter(MeshMultiListener, MeshApi, MongoDriver, MeshArgsParse): |
|
|
|
queue: asyncio.Queue = asyncio.Queue() |
|
|
|
|
|
|
|
|