44 lines
1.3 KiB
Python
Executable File
44 lines
1.3 KiB
Python
Executable File
#!/usr/bin/env python
|
|
import time
|
|
import meshtastic
|
|
import meshtastic.serial_interface
|
|
from meshtastic.protobuf import mesh_pb2, portnums_pb2, telemetry_pb2
|
|
|
|
|
|
dest = '!173ea329'
|
|
|
|
interface = meshtastic.serial_interface.SerialInterface()
|
|
position = interface.getMyNodeInfo()["position"]
|
|
|
|
lat = position.get("latitude", "-")
|
|
lon = position.get("longitude", "-")
|
|
pos_time = position.get("time", -1)
|
|
start_time = time.time()
|
|
|
|
def on_trace_response(p):
|
|
UNK_SNR = -128
|
|
traceroute = p["decoded"]["traceroute"]
|
|
snr_towards = traceroute["snrTowards"][0] / 4 if traceroute["snrTowards"][0] != UNK_SNR else "-"
|
|
snr_back = traceroute["snrBack"][0] / 4 if traceroute["snrBack"][0] != UNK_SNR else "-"
|
|
result_time = time.time()
|
|
print(f"OK,{start_time},{result_time},{pos_time},{lat},{lon},{snr_towards},{snr_back}")
|
|
interface._acknowledgment.receivedTraceRoute = True
|
|
|
|
def ping():
|
|
r = mesh_pb2.RouteDiscovery()
|
|
interface.sendData(
|
|
r,
|
|
destinationId=dest,
|
|
portNum=portnums_pb2.PortNum.TRACEROUTE_APP,
|
|
wantResponse=True,
|
|
onResponse=on_trace_response,
|
|
channelIndex=0,
|
|
hopLimit=1,
|
|
)
|
|
success = interface._timeout.waitForTraceRoute(1, interface._acknowledgment)
|
|
if not success:
|
|
result_time = time.time()
|
|
print(f"EE,{start_time},{result_time},{pos_time},{lat},{lon},-,-")
|
|
|
|
|
|
ping() |