29 Commits

Author SHA1 Message Date
Lloyd
d82c90a04d fix: MQTT schedule the reconnect timer before calling disconnect(), so by the time _on_broker_disconnected fires, the pending reconnect is already visible. 2026-03-24 12:33:33 +00:00
Lloyd
6c3252e51c fix letmesh logging typo 2026-03-10 13:55:35 +00:00
agessaman
e9841adeff Merge upstream feat/newRadios (radios, MQTT, SPI)
- Take upstream radio-presets.json and radio-settings.json (Femtofox, AIO v2, CH341).
- config.py: upstream get_radio_for_board (_parse_int, sx1262_ch341, GPIO) + re-add KISS branch.
- config.yaml.example: upstream radio/ch341 + our identities.companions.
- manage.sh: upstream SPI warning prompt.
- main.py: single try/finally with companion shutdown and _shutdown().
- letsmesh_handler: upstream UTC fallback and MQTT v5 reason code handling.
- storage_collector, api_endpoints: upstream storage_dir_cfg; apply_setup_wizard supports KISS and sx1262_ch341/ch341.
- airtime.py: upstream bw_hz fix for symbol time.
- pyproject.toml: keep pymc_core dependency (no git pin).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 15:59:01 -08:00
agessaman
c2f8a2e3cd refactor: companion FrameServer and related (substantive only, no Black)
Reapply refactor from ce8381a (replace monolithic FrameServer with thin
pymc_core subclass, re-export constants, SQLite persistence hooks) while
preserving pre-refactor whitespace where patch applied cleanly. Remaining
files match refactor commit exactly. Diff vs ce8381a is whitespace-only.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 15:35:47 -08:00
Lloyd
bc23001cd6 Enhance MQTT error handling with extended v5 error codes and improved logging 2026-02-11 09:34:56 +00:00
theshaun
57a25a2dc0 Add support for Femtofox
- Introduce GPIO chip selection and GPIO backend selection
- Add default Femtofox settings (for SX1262 as LR1121 support may come later)
- Add support for Python 3.10 UTC to reduce footprint
- Fix airtime calculation bandwidth variable naming
- Add service auto-enable when starting
- Add Australia: SA, WA, QLD radio preset
- Add Snyk security instructions

Co-authored-by: theshaun <theshaun@users.noreply.github.com>
Based on PR #69
2026-02-03 22:34:14 +00:00
Lloyd
0d14884adb broker connection management with JWT reconnection scheduling and error handling 2026-01-23 14:47:29 +00:00
Lloyd
8b95bfb8ba feat: enhance MQTT error handling and add packet stats broadcasting 2026-01-20 20:31:45 +00:00
Lloyd
33e353d215 fix: update reconnection logic to refresh JWT token before connecting 2026-01-19 12:41:54 +00:00
Lloyd
599e4628d9 Changes include:
Features

Neighbour details modal with full info and map view

WebSocket support with heartbeat and automatic reconnection

Improved signal quality calculations (SNR-based RSSI)

Route-based pagination for faster initial loads

UI

Mobile sidebar tweaks (logout, version info, lazy-loaded charts)

Sorting added to the neighbour table

Packet view now shows multi-hop paths

CAD calibration charts respect light/dark themes

Statistics charts now show the full requested time range

Performance

Reduced polling when WebSocket is active

Lazy loading for heavier components

Noise floor data capped to keep charts responsive

Technical

Improved type safety across API responses

Contrast improvements for accessibility

Cleaner WebSocket and MQTT reconnection handling

Additional metrics added to heartbeat stats

Bug fixes

Corrected noise floor history query

Fixed authentication for CAD calibration streams

Nothing major required from users — just update and carry on.
As always, shout if something looks off.
2026-01-18 20:15:50 +00:00
Lloyd
4f22cb1308 Convert public key to uppercase when retrieving from local identity 2026-01-09 17:24:10 +00:00
Lloyd
1a527c761f feat: Refactor LetsMesh handler to use LocalIdentity for key management 2026-01-08 09:11:45 +00:00
Lloyd
32e13cb40e Enhance LetsMesh broker configuration and connection management
- Added detailed comments and examples for broker selection in config.yaml
- Refactored letsmesh_handler.py to support multiple broker connections
- Implemented connection lifecycle management for individual brokers
- Improved JWT token handling and publishing across all connected brokers
2025-12-22 13:08:30 +00:00
Lloyd
b956f69e76 remove lgpio from installation script improve logging output for generated tokens 2025-12-09 09:20:19 +00:00
Lloyd
d4a18a9808 feat: add email and owner fields to node info and JWT payload for TLS connections 2025-11-25 17:24:15 +00:00
Lloyd
eebd76609a JWT token refresh mechanism in letsmesh 2025-11-25 09:24:15 +00:00
Lloyd
74f185ce7b start status heartbeat thread upon successful connection preventing race con 2025-11-25 09:07:20 +00:00
Lloyd
ae68bc92c1 implement JWT token refresh mechanism in for letsmesh 2025-11-25 08:59:32 +00:00
Lloyd
bdc38c5307 fix: standardize packet hash casing to uppercase in RepeaterHandler and RepeaterDaemon 2025-11-24 09:58:13 +00:00
Lloyd
3f3771d600 feat: implement PacketRecord class for standardized packet handling and update MQTTHandler and StorageCollector to utilize it 2025-11-21 15:35:54 +00:00
Lloyd
08d4e054b0 clean up code formatting and improve readability in letsmesh_handler and storage_collector 2025-11-20 10:11:06 +00:00
Lloyd
f0ccf161c9 add disallowed packet types configuration for LetsMesh and implement filtering in storage collector 2025-11-19 15:33:39 +00:00
Lloyd
549696a6c8 feat: enhance payload with model and format client version 2025-11-19 13:55:22 +00:00
Lloyd
3a2466f953 refactor LetsMesh handler initialization and add live stats support 2025-11-19 11:28:00 +00:00
Lloyd
1793973a84 tidy configuration handling by adding get_node_info function 2025-11-19 10:39:14 +00:00
Lloyd
007182deb1 MeshCoreToMqttJwtPusher initialization and packet publishing with node name and radio configuration 2025-11-18 23:36:10 +00:00
Lloyd
306beea7a0 feat: add LetsMesh configuration and handler integration in StorageCollector 2025-11-18 22:23:09 +00:00
Lloyd
11354fcf46 feat: update MeshCoreToMqttJwtPusher 2025-11-18 21:44:22 +00:00
Lloyd
de71d5b954 feat: implement MeshCore to MQTT JWT pusher with packet processing and publishing 2025-11-10 17:00:14 +00:00