mirror of
https://github.com/jkingsman/Remote-Terminal-for-MeshCore.git
synced 2026-07-06 09:52:06 +02:00
Remove automatic telemetry querying, remove battery pane, add telemetry history pane
This commit is contained in:
committed by
Jack Kingsman
parent
87df4b4aa1
commit
c808f0930b
@@ -1,3 +1,4 @@
|
||||
import json
|
||||
import logging
|
||||
|
||||
from app.database import db
|
||||
@@ -10,18 +11,16 @@ class RepeaterTelemetryRepository:
|
||||
async def record(
|
||||
public_key: str,
|
||||
timestamp: int,
|
||||
battery_volts: float,
|
||||
uptime_seconds: int | None = None,
|
||||
noise_floor_dbm: int | None = None,
|
||||
data: dict,
|
||||
) -> None:
|
||||
"""Insert a telemetry history row."""
|
||||
"""Insert a telemetry history row with the full status snapshot as JSON."""
|
||||
await db.conn.execute(
|
||||
"""
|
||||
INSERT INTO repeater_telemetry_history
|
||||
(public_key, timestamp, battery_volts, uptime_seconds, noise_floor_dbm)
|
||||
VALUES (?, ?, ?, ?, ?)
|
||||
(public_key, timestamp, data)
|
||||
VALUES (?, ?, ?)
|
||||
""",
|
||||
(public_key, timestamp, battery_volts, uptime_seconds, noise_floor_dbm),
|
||||
(public_key, timestamp, json.dumps(data)),
|
||||
)
|
||||
await db.conn.commit()
|
||||
|
||||
@@ -30,7 +29,7 @@ class RepeaterTelemetryRepository:
|
||||
"""Return telemetry rows for a repeater since a given timestamp, ordered ASC."""
|
||||
cursor = await db.conn.execute(
|
||||
"""
|
||||
SELECT timestamp, battery_volts, uptime_seconds, noise_floor_dbm
|
||||
SELECT timestamp, data
|
||||
FROM repeater_telemetry_history
|
||||
WHERE public_key = ? AND timestamp >= ?
|
||||
ORDER BY timestamp ASC
|
||||
@@ -41,22 +40,7 @@ class RepeaterTelemetryRepository:
|
||||
return [
|
||||
{
|
||||
"timestamp": row["timestamp"],
|
||||
"battery_volts": row["battery_volts"],
|
||||
"uptime_seconds": row["uptime_seconds"],
|
||||
"noise_floor_dbm": row["noise_floor_dbm"],
|
||||
"data": json.loads(row["data"]),
|
||||
}
|
||||
for row in rows
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
async def prune_old(max_age_seconds: int) -> int:
|
||||
"""Delete rows older than max_age_seconds. Returns count of deleted rows."""
|
||||
import time
|
||||
|
||||
cutoff = int(time.time()) - max_age_seconds
|
||||
cursor = await db.conn.execute(
|
||||
"DELETE FROM repeater_telemetry_history WHERE timestamp < ?",
|
||||
(cutoff,),
|
||||
)
|
||||
await db.conn.commit()
|
||||
return cursor.rowcount
|
||||
|
||||
@@ -29,8 +29,7 @@ class AppSettingsRepository:
|
||||
SELECT max_radio_contacts, favorites, auto_decrypt_dm_on_advert,
|
||||
sidebar_sort_order, last_message_times, preferences_migrated,
|
||||
advert_interval, last_advert_time, flood_scope,
|
||||
blocked_keys, blocked_names, discovery_blocked_types,
|
||||
telemetry_tracked_keys
|
||||
blocked_keys, blocked_names, discovery_blocked_types
|
||||
FROM app_settings WHERE id = 1
|
||||
"""
|
||||
)
|
||||
@@ -90,14 +89,6 @@ class AppSettingsRepository:
|
||||
except (json.JSONDecodeError, TypeError):
|
||||
discovery_blocked_types = []
|
||||
|
||||
# Parse telemetry_tracked_keys JSON
|
||||
telemetry_tracked_keys: list[str] = []
|
||||
if row["telemetry_tracked_keys"]:
|
||||
try:
|
||||
telemetry_tracked_keys = json.loads(row["telemetry_tracked_keys"])
|
||||
except (json.JSONDecodeError, TypeError):
|
||||
telemetry_tracked_keys = []
|
||||
|
||||
# Validate sidebar_sort_order (fallback to "recent" if invalid)
|
||||
sort_order = row["sidebar_sort_order"]
|
||||
if sort_order not in ("recent", "alpha"):
|
||||
@@ -116,7 +107,6 @@ class AppSettingsRepository:
|
||||
blocked_keys=blocked_keys,
|
||||
blocked_names=blocked_names,
|
||||
discovery_blocked_types=discovery_blocked_types,
|
||||
telemetry_tracked_keys=telemetry_tracked_keys,
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
@@ -133,7 +123,6 @@ class AppSettingsRepository:
|
||||
blocked_keys: list[str] | None = None,
|
||||
blocked_names: list[str] | None = None,
|
||||
discovery_blocked_types: list[int] | None = None,
|
||||
telemetry_tracked_keys: list[str] | None = None,
|
||||
) -> AppSettings:
|
||||
"""Update app settings. Only provided fields are updated."""
|
||||
updates = []
|
||||
@@ -188,10 +177,6 @@ class AppSettingsRepository:
|
||||
updates.append("discovery_blocked_types = ?")
|
||||
params.append(json.dumps(discovery_blocked_types))
|
||||
|
||||
if telemetry_tracked_keys is not None:
|
||||
updates.append("telemetry_tracked_keys = ?")
|
||||
params.append(json.dumps(telemetry_tracked_keys))
|
||||
|
||||
if updates:
|
||||
query = f"UPDATE app_settings SET {', '.join(updates)} WHERE id = 1"
|
||||
await db.conn.execute(query, params)
|
||||
@@ -241,17 +226,6 @@ class AppSettingsRepository:
|
||||
new_names = settings.blocked_names + [name]
|
||||
return await AppSettingsRepository.update(blocked_names=new_names)
|
||||
|
||||
@staticmethod
|
||||
async def toggle_telemetry_tracked_key(key: str) -> AppSettings:
|
||||
"""Toggle a public key in the telemetry tracking list. Keys are normalized to lowercase."""
|
||||
normalized = key.lower()
|
||||
settings = await AppSettingsRepository.get()
|
||||
if normalized in settings.telemetry_tracked_keys:
|
||||
new_keys = [k for k in settings.telemetry_tracked_keys if k != normalized]
|
||||
else:
|
||||
new_keys = settings.telemetry_tracked_keys + [normalized]
|
||||
return await AppSettingsRepository.update(telemetry_tracked_keys=new_keys)
|
||||
|
||||
@staticmethod
|
||||
async def migrate_preferences_from_frontend(
|
||||
favorites: list[dict],
|
||||
|
||||
Reference in New Issue
Block a user