telelmetry

This commit is contained in:
SpudGunMan
2024-10-05 22:14:49 -07:00
parent c4b5022f45
commit 329fafea47
3 changed files with 30 additions and 47 deletions
+14 -23
View File
@@ -189,29 +189,20 @@ def parse_log_file(file_path):
node_id, lat, lon = gps_match.groups()
log_data['gps_coordinates'][node_id].append((float(lat), float(lon)))
# get firmware version for nodes
if 'Interface1 Node Firmware:' in line:
firmware1_match = re.search(r'Interface1 Node Firmware: (\S+)', line)
if firmware1_match:
firmware1_version = firmware1_match.group(1)
log_data['firmware1_version'] = firmware1_version
if 'Interface2 Node Firmware:' in line:
firmware2_match = re.search(r'Interface2 Node Firmware: (\S+)', line)
if firmware2_match:
firmware2_version = firmware2_match.group(1)
log_data['firmware2_version'] = firmware2_version
# get uptime for nodes
if 'Uptime:' in line:
node_id = None
uptime_match = re.search(r'Device:(\d+).*?(SNR:.*?)(?= To:)', line)
if uptime_match:
node_id = uptime_match.group(1)
snr_and_more = uptime_match.group(2)
if node_id == '1':
log_data['node1_uptime'] = snr_and_more
elif node_id == '2':
log_data['node2_uptime'] = snr_and_more
# get telemetry data
# example, | System: int1:2.5.2.771cb52, Nodes:2, Telemetry: ChUse/Tx 0.0%/0.0% Uptime:10d Volt:4.3
telemetry_match = re.search(r'System: int(\d+):(\d+\.\d+\.\d+\.\w+), Nodes:(\d+), Telemetry: ChUse/Tx (\d+\.\d+)%/(\d+\.\d+)% Uptime:(\d+d) Volt:(\d+\.\d+)', line)
if telemetry_match:
interface_number, firmware_version, nodes, chUse, tx, uptime, voltage = telemetry_match.groups()
data = f"Nodes {nodes}, Uptime{uptime}, ChUse {chUse}%, Tx {tx}%, Voltage {voltage}"
if interface_number == '1':
log_data['firmware1_version'] = firmware_version
log_data['node1_uptime'] = data
#log_data['nodeCount1'] = nodes
elif interface_number == '2':
log_data['firmware2_version'] = firmware_version
log_data['node2_uptime'] = data
#log_data['nodeCount2'] = nodes
# get name and nodeID for devices
if 'Autoresponder Started for Device' in line:
+15 -23
View File
@@ -198,30 +198,22 @@ def parse_log_file(file_path):
node_id, lat, lon = gps_match.groups()
log_data['gps_coordinates'][node_id].append((float(lat), float(lon)))
# get firmware version for nodes
if 'Interface1 Node Firmware:' in line:
firmware1_match = re.search(r'Interface1 Node Firmware: (\S+)', line)
if firmware1_match:
firmware1_version = firmware1_match.group(1)
log_data['firmware1_version'] = firmware1_version
if 'Interface2 Node Firmware:' in line:
firmware2_match = re.search(r'Interface2 Node Firmware: (\S+)', line)
if firmware2_match:
firmware2_version = firmware2_match.group(1)
log_data['firmware2_version'] = firmware2_version
# get telemetry data
# example, System: int1:2.5.2.771cb52, Nodes:2, Telemetry: ChUse/Tx 0.0%/0.0% Uptime:10d Volt:4.311
telemetry_match = re.search(r'System: int(\d+):(\d+\.\d+\.\d+\.\w+), Nodes:(\d+), Telemetry: ChUse/Tx (\d+\.\d+)%/(\d+\.\d+)% Uptime:(\d+d).{1} Volt:(\d+\.\d+)', line)
if telemetry_match:
interface_number, firmware_version, nodes, chUse, tx, uptime, voltage = telemetry_match.groups()
data = f"Nodes {nodes}, Uptime{uptime}, ChUse {chUse}%, Tx {tx}%, Voltage {voltage}"
print(f"Interface {interface_number} Firmware {firmware_version} {data}")
if interface_number == '1':
log_data['firmware1_version'] = firmware_version
log_data['node1_uptime'] = data
#log_data['nodeCount1'] = nodes
elif interface_number == '2':
log_data['firmware2_version'] = firmware_version
log_data['node2_uptime'] = data
#log_data['nodeCount2'] = nodes
# get uptime for nodes
if 'Uptime:' in line:
node_id = None
uptime_match = re.search(r'Device:(\d+).*?(SNR:.*?)(?= To:)', line)
if uptime_match:
node_id = uptime_match.group(1)
snr_and_more = uptime_match.group(2)
if node_id == '1':
log_data['node1_uptime'] = snr_and_more
elif node_id == '2':
log_data['node2_uptime'] = snr_and_more
# get name and nodeID for devices
if 'Autoresponder Started for Device' in line:
device_match = re.search(r'Autoresponder Started for Device(\d+)\s+([^\s,]+).*?NodeID: (\d+)', line)
+1 -1
View File
@@ -694,7 +694,7 @@ def getNodeTelemetry(nodeID=0, nodeInt=1):
# add battery info to the response
emji = "🔌" if batteryLevel == 101 else "🪫" if batteryLevel < 10 else "🔋"
if batteryLevel == 101:
dataResponse += f" Volt:{round(voltage, 1)}. {emji}"
dataResponse += f" Volt:{round(voltage, 1)}"
else:
dataResponse += f" {emji}{batteryLevel}% Volt:{round(voltage, 1)}"