diff --git a/logs/mesh_network_analyzer.py b/logs/mesh_network_analyzer.py index 8d099eb..25c6854 100644 --- a/logs/mesh_network_analyzer.py +++ b/logs/mesh_network_analyzer.py @@ -1,11 +1,13 @@ import os import re +import sys from datetime import datetime from collections import Counter, defaultdict from string import Template import json import platform import subprocess +import requests # global variables LOG_PATH = '/opt/meshing-around/logs' @@ -158,6 +160,23 @@ def get_system_info(): node1_ID = log_data['node1_ID'] node2_ID = log_data['node2_ID'] + # get Meshtastic CLI version on web + try: + url = "https://pypi.org/pypi/meshtastic/json" + data = requests.get(url, timeout=5).json() + pypi_version = data["info"]["version"] + cli_web = f"v{pypi_version}" + except Exception: + pass + # get Meshtastic CLI version on local + try: + from importlib.metadata import version + if "importlib.metadata" in sys.modules: + cli_local = version("meshtastic") + except: + pass # Python 3.7 and below, meh.. + + if platform.system() == "Linux": uptime = get_command_output("uptime -p") memory_total = get_command_output("free -m | awk '/Mem:/ {print $2}'") @@ -184,7 +203,9 @@ def get_system_info(): 'node1_name': "N/A", 'node2_name': "N/A", 'node1_ID': "N/A", - 'node2_ID': "N/A" + 'node2_ID': "N/A", + 'cli_web': "N/A", + 'cli_local': "N/A" } return { @@ -200,7 +221,9 @@ def get_system_info(): 'node1_name': node1_name, 'node2_name': node2_name, 'node1_ID': node1_ID, - 'node2_ID': node2_ID + 'node2_ID': node2_ID, + 'cli_web': cli_web, + 'cli_local': cli_local } def generate_main_html(log_data, system_info): @@ -592,7 +615,7 @@ def generate_sys_hosts_html(system_info):
-| OS Metric | Value |
|---|---|
| Uptime | ${uptime} |
| Total Disk Space | ${disk_total} |
| Free Disk Space | ${disk_free} |
| Meshtastic CLI/API | Value |
| CLI Version | ${cli_version} |
| Latest Version | ${latest_version} |
| API Version/Latest | ${cli_local} / ${cli_web} |
| Int1 Name ID | ${node1_name} (${node1_ID}) |
| Int1 Stat | ${node1_uptime} |
| Int1 FW Version | ${interface1_version} |