From 6706c111a6e3c2b7c1102fe61cdfc24e6d7aea42 Mon Sep 17 00:00:00 2001 From: iz1kga Date: Mon, 15 Feb 2021 11:35:17 +0100 Subject: [PATCH 1/3] fixed decimal places and LastHeard --- meshtastic/__main__.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/meshtastic/__main__.py b/meshtastic/__main__.py index 06289ce..53b8694 100644 --- a/meshtastic/__main__.py +++ b/meshtastic/__main__.py @@ -133,6 +133,16 @@ def setRouter(interface, on): prefs.gps_attempt_time = 0 prefs.gps_update_interval = 0 + +#Returns formatted value +def formatFloat(value, formatStr, default="N/A"): + return formatStr.format(value) if value else default + +#Returns Last Heard Time in human readable format +def getLH(ts, default="N/A"): + return datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S') if ts else default + +#Print Nodes def printNodes(nodes): #Create the table and define the structure table = EasyTable("Nodes") @@ -143,14 +153,15 @@ def printNodes(nodes): tableData = [] for node in nodes: #aux var to get not defined keys - lat=str(node['position'].get("latitude", "N/A")) - lon=str(node['position'].get("longitude", "N/A")) - alt=str(node['position'].get("altitude", "N/A")) - batt=str(node['position'].get("batteryLevel", "N/A")) - snr=str(node.get("snr", "N/A")) + LH= getLH(node['position'].get("time")) + lat=formatFloat(node['position'].get("latitude"), "{:.4f}", "N/A") + lon=formatFloat(node['position'].get("longitude"), "{:.4f}", "N/A") + alt=formatFloat(node['position'].get("altitude"), "{:.4f}", "N/A") + batt=formatFloat(node['position'].get("batteryLevel"), "{:.2f}", "N/A") + snr=formatFloat(node.get("snr"), "{:.2f}", "N/A") tableData.append({"User":node['user']['longName'], "Position":"Lat:"+lat+",Lon:"+lon+",Alt:"+alt, - "Battery":batt, "SNR":snr}) + "Battery":batt, "SNR":snr, "LastHeard":LH}) table.setData(tableData) table.displayTable() From 6cd8c17df50a5839e453fbae598dadab20695835 Mon Sep 17 00:00:00 2001 From: iz1kga Date: Mon, 15 Feb 2021 14:20:13 +0100 Subject: [PATCH 2/3] fix missing datetime --- meshtastic/__main__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meshtastic/__main__.py b/meshtastic/__main__.py index 53b8694..212ad07 100644 --- a/meshtastic/__main__.py +++ b/meshtastic/__main__.py @@ -8,6 +8,7 @@ import google.protobuf.json_format import pyqrcode import traceback import pkg_resources +from datetime import datetime from easy_table import EasyTable """We only import the tunnel code if we are on a platform that can run it""" @@ -156,7 +157,7 @@ def printNodes(nodes): LH= getLH(node['position'].get("time")) lat=formatFloat(node['position'].get("latitude"), "{:.4f}", "N/A") lon=formatFloat(node['position'].get("longitude"), "{:.4f}", "N/A") - alt=formatFloat(node['position'].get("altitude"), "{:.4f}", "N/A") + alt=formatFloat(node['position'].get("altitude"), "{:.2f}", "N/A") batt=formatFloat(node['position'].get("batteryLevel"), "{:.2f}", "N/A") snr=formatFloat(node.get("snr"), "{:.2f}", "N/A") tableData.append({"User":node['user']['longName'], From a29076dc8e719eba21c2346e37acebc1196d5fd0 Mon Sep 17 00:00:00 2001 From: iz1kga Date: Mon, 15 Feb 2021 14:41:55 +0100 Subject: [PATCH 3/3] unit & cosmetic --- meshtastic/__main__.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/meshtastic/__main__.py b/meshtastic/__main__.py index 212ad07..dc10406 100644 --- a/meshtastic/__main__.py +++ b/meshtastic/__main__.py @@ -136,8 +136,8 @@ def setRouter(interface, on): #Returns formatted value -def formatFloat(value, formatStr, default="N/A"): - return formatStr.format(value) if value else default +def formatFloat(value, formatStr="{:.2f}", unit="", default="N/A"): + return formatStr.format(value)+unit if value else default #Returns Last Heard Time in human readable format def getLH(ts, default="N/A"): @@ -155,13 +155,13 @@ def printNodes(nodes): for node in nodes: #aux var to get not defined keys LH= getLH(node['position'].get("time")) - lat=formatFloat(node['position'].get("latitude"), "{:.4f}", "N/A") - lon=formatFloat(node['position'].get("longitude"), "{:.4f}", "N/A") - alt=formatFloat(node['position'].get("altitude"), "{:.2f}", "N/A") - batt=formatFloat(node['position'].get("batteryLevel"), "{:.2f}", "N/A") - snr=formatFloat(node.get("snr"), "{:.2f}", "N/A") + lat=formatFloat(node['position'].get("latitude"), "{:.4f}", "°") + lon=formatFloat(node['position'].get("longitude"), "{:.4f}", "°") + alt=formatFloat(node['position'].get("altitude"), "{:.0f}", " m") + batt=formatFloat(node['position'].get("batteryLevel"), "{:.2f}", "%") + snr=formatFloat(node.get("snr"), "{:.2f}", " dB") tableData.append({"User":node['user']['longName'], - "Position":"Lat:"+lat+",Lon:"+lon+",Alt:"+alt, + "Position":"Lat:"+lat+", Lon:"+lon+", Alt:"+alt, "Battery":batt, "SNR":snr, "LastHeard":LH}) table.setData(tableData) table.displayTable()