gsd 4 months ago
parent
commit
9d6e395b4d
  1. 19
      mesht_device.py
  2. 52
      mesht_protobuf_extra.py
  3. 9
      service.py

19
mesht_device.py

@ -4,6 +4,7 @@ import pb
import logging
logger = logging.getLogger(__name__)
from mesht_models import *
from mesht_protobuf_extra import *
DATA_SCHEMA = [
@ -40,6 +41,7 @@ MESHPACKET_SCHEMA = [
("uint32", "next_hop", 18),
("uint32", "relay_node", 19),
("uint32", "tx_after", 20),
("int32", "transport_mechanism", 21)
]
CHANNEL_SETTINGS_SCHEMA = [
@ -70,6 +72,12 @@ DEVICEMETRICS_SCHEMA = [
MYNODEINFO_SCHEMA = [
("uint32", "my_node_num", 1),
("uint32", "reboot_count", 8),
("uint32", "min_app_version", 11),
("bytes", "device_id", 12),
("string", "pio_env", 13),
#firware edition
("uint32", "nodedb_count", 15)
]
NODEINFO_SCHEMA = [
@ -93,6 +101,7 @@ CONFIG_SCHEMA = [
]),
]
#mesh.proto:2050
FROMRADIO_SCHEMA = [
("uint32", "id", 1),
("oneof", "payload_variant", [
@ -100,8 +109,18 @@ FROMRADIO_SCHEMA = [
(MYNODEINFO_SCHEMA, "my_info", 3),
(NODEINFO_SCHEMA, "node_info", 4),
(CONFIG_SCHEMA, "config", 5),
(LOG_RECORD, "log_record", 6),
("uint32", "config_complete_id", 7),
("bool", "rebooted", 8),
#(moduleConfig, 9)*
(CHANNEL_SCHEMA, "channel", 10),
(QUEUE_STATUS, "queueStatus", 11),
#(xmodem, 12)
(DEVICE_METADATA, 13),
#(mqttproxy, 14)
(FILE_INFO, 15),
#(clientnotifi, 16)
#(deviceui, 17)*
]),
]

52
mesht_protobuf_extra.py

@ -0,0 +1,52 @@
LOG_RECORD = [
("string", "message", 1),
("fixed32", "time", 2),
("string", "source", 3),
("int32", "level", 4)#LogRecordLevel
]
LOG_RECORD_LEVEL = {
0: "UNSET",
50: "CRITICAL",
40: "ERROR",
30: "WARNING",
20: "INFO",
10: "DEBUG",
5: "TRACE"
}
#######
QUEUE_STATUS = [
("int32", "res", 1),
("uint32", "free", 2),
("uint32", "maxlen", 3),
("uint32", "mesh_packet_id", 4)
]
#######
DEVICE_METADATA = [
("string", "firmware_version", 1),
("uint32", "device_state_version", 2),
("bool", "canShutdown", 3),
("bool", "hasWifi", 4),
("bool", "hasBluetooth", 5),
("bool", "hasEthernet", 6),
("int32", "role", 7),#
("uint32", "position_flags", 8),
("int32", "hw_model", 9),#
("bool", "hasRemoteHardware", 10),
("bool", "hasPKC", 11),
("uint32", "excluded_modules", 12)
]
########
FILE_INFO = [
("string", "file_name", 1),
("uint32", "size_bytes", 2)
]
#########
TELEMETRY_SCHEME = [
("fixed32", "time", 1)
]

9
service.py

@ -13,6 +13,8 @@ from logger import logger
from mesht_device import MeshtDevice
from mesht_models import _wait_for_config_complete, PUB_CH
from mesht_models import NOT_CONNECTED, WAIT_CONFIG, AVAILABLE, ERR, RECONNECT
from mesht_protobuf_extra import *
import pb
#fs imports
from fastapi import FastAPI, HTTPException, WebSocket
@ -146,7 +148,12 @@ class MongoDriver(MeshArgsParse):
try:
v["decoded_payload"] = v["payload"].decode()
except:
pass
try:
if v.get("portnum", 0) == 67:
print(pb.decode(v["payload"], TELEMETRY_SCHEME))
except:
traceback.print_exc()
pass
if "user" in v:
v.update(v["user"])

Loading…
Cancel
Save