Browse Source

proto parse

main
gsd 4 months ago
parent
commit
813b3aed39
  1. 35
      service.py

35
service.py

@ -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()

Loading…
Cancel
Save