Add Pi Zero headless serial bridge with AP portal and daily RTC-based logs

This commit is contained in:
2026-02-11 21:16:23 +01:00
parent 7f0e872942
commit 6ee36ee45b
23 changed files with 1173 additions and 0 deletions

37
src/app_state.py Normal file
View File

@@ -0,0 +1,37 @@
from dataclasses import dataclass, field
from threading import Lock
from typing import Dict, List
@dataclass
class AppState:
ap_mode: bool = False
wifi_connected: bool = False
internet_available: bool = False
connecting: bool = False
status_message: str = "Startup"
last_error: str = ""
known_ssids: List[str] = field(default_factory=list)
ap_grace_until: float = 0.0
lock: Lock = field(default_factory=Lock, repr=False)
def update_status(self, message: str, error: str = "") -> None:
with self.lock:
self.status_message = message
self.last_error = error
def set_known_ssids(self, ssids: List[str]) -> None:
with self.lock:
self.known_ssids = ssids
def snapshot(self) -> Dict[str, object]:
with self.lock:
return {
"ap_mode": self.ap_mode,
"wifi_connected": self.wifi_connected,
"internet_available": self.internet_available,
"connecting": self.connecting,
"status_message": self.status_message,
"last_error": self.last_error,
"known_ssids": list(self.known_ssids),
}