216 Commits

Author SHA1 Message Date
Lloyd ded15ea43d Fix bandwidth calculation in calculate_airtime method for accurate airtime estimation 2026-02-08 09:44:20 +00:00
dmduran12 d28a966e2e Enable gzip compression for bulk_packets endpoint
Reduces payload size for large packet downloads, improving performance
on slow network connections.

Co-Authored-By: Warp <agent@warp.dev>
2026-02-03 11:35:02 -08:00
dmduran12 047b983497 Add timestamp filtering to bulk_packets endpoint
Add start_timestamp and end_timestamp parameters to the bulk_packets API
endpoint to allow time-range filtering for bulk packet retrieval.

Co-Authored-By: Warp <agent@warp.dev>
2026-02-03 11:03:05 -08:00
Lloyd b0e19b13af Add bulk packet retrieval API with gzip compression and pagination support. 2026-02-03 10:21:59 +00:00
Lloyd 3adfee5160 Disable Gzip compression for HTTPStatsServer configuration 2026-02-03 08:34:23 +00:00
Lloyd adbdc5e3a4 Disable Gzip compression for WebSocket endpoint 2026-02-01 22:53:03 +00:00
Lloyd 7103103cf7 Enable Gzip compression for HTTP responses 2026-02-01 22:36:37 +00:00
Lloyd 0d14884adb broker connection management with JWT reconnection scheduling and error handling 2026-01-23 14:47:29 +00:00
Lloyd d28ddcc34c reorganize hardware configuration for sx1262 settings 2026-01-22 13:29:05 +00:00
Lloyd 267b8e2a1c fix setup fields 2026-01-22 13:10:07 +00:00
Lloyd 5e4adf62b3 add ed auth to WS 2026-01-20 21:53:24 +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 371b9fdbb8 fix: update airtime calculations to use config values in AirtimeManager 2026-01-19 11:52:23 +00:00
dmduran12 64100d6311 fix: use correct Semtech LoRa airtime formula
Replace simplified airtime calculation with the proper Semtech reference
formula that accounts for:
- Coding rate (CR)
- CRC overhead
- Explicit/implicit header mode
- Low data rate optimization (SF11/SF12 at 125kHz)

The previous formula significantly underestimated airtime, especially
at higher spreading factors, leading to inaccurate duty cycle tracking.

Reference: https://www.semtech.com/design-support/lora-calculator

Co-Authored-By: Warp <agent@warp.dev>
2026-01-18 17:16:21 -08:00
Lloyd f6a4e0f861 simplify PacketTable rendering and system stats update logic 2026-01-18 22:39:13 +00:00
Lloyd 86ab778aeb fix datarange in NF 2026-01-18 21:27:35 +00:00
Lloyd a7fe30b2c3 up date to stats card 2026-01-18 20:56:43 +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 d671c58184 suppress duplicate packets in processing logic 2026-01-12 16:23:11 +00:00
Lloyd 1999af8bdd add Packet Hash Cache to UI 2026-01-10 22:59:43 +00:00
Lloyd effad3378f Increase default cache TTL from 60 seconds to 1 hour 2026-01-10 22:27:15 +00:00
Lloyd 4f22cb1308 Convert public key to uppercase when retrieving from local identity 2026-01-09 17:24:10 +00:00
Lloyd 7bd5b6f13d Add UTF-8 validation for node name length and improve hardware file loading logic 2026-01-09 16:44:05 +00:00
Lloyd d7a886d0e5 Update file paths for radio settings and presets to use config-based directory 2026-01-09 12:14:38 +00:00
Lloyd 0baddc1416 Fix casing for Zebra configuration and add use_dio2_rf setting 2026-01-09 10:26:52 +00:00
Lloyd 1a527c761f feat: Refactor LetsMesh handler to use LocalIdentity for key management 2026-01-08 09:11:45 +00:00
Lloyd 1b45060e13 Update key retrieval method in StorageCollector to support both standard and firmware keys 2026-01-08 08:52:02 +00:00
Lloyd 4011a6b25e Add light mode to ui 2026-01-07 23:05:54 +00:00
Lloyd 32ce1ff698 Add configurable JWT token expiry and WebSocket transport support for MQTT 2026-01-05 16:50:15 +00:00
Lloyd 3011706102 feat: Update hardware and presets file loading to check installed location first 2026-01-05 10:57:40 +00:00
Lloyd dfe4adad1c feat: Enhance MQTT configuration with TLS/SSL support and update logging 2026-01-05 10:47:14 +00:00
Lloyd 0e8df60764 HTTPStatsServer to use SQLiteHandler for token management 2026-01-05 10:04:26 +00:00
Paul Picazo 9288e070aa fix: Add missing Dict, Any import to sqlite_handler.py 2026-01-03 14:47:37 -08:00
Paul Picazo 942d4dfe28 Enhance advert storage logic: prioritize direct routes and handle zero-hop measurements
Refactor packet processing: use processed_packet for forwarding and drop reason checks

Fix: Update zero-hop determination logic in AdvertHelper

Fix: Clone packet in process_packet to prevent modification of the original

Fix: Import copy module for deep copying of packets in process_packet
2026-01-03 14:35:30 -08:00
Lloyd 75c4967bd6 feat: Add authentication handlers to HTTPStatsServer configuration 2026-01-02 17:23:21 +00:00
Lloyd 8d14b93874 feat: Update HTML directory configuration to handle missing web_path gracefully 2026-01-02 16:39:14 +00:00
Lloyd 8b8edb9929 add pymc console endpoints and ui 2026-01-02 16:35:18 +00:00
Lloyd 7d4a779939 feat: Enhance filtered_packets endpoint to support additional query parameters for improved packet filtering 2026-01-02 11:01:01 +00:00
Lloyd 2ba7be974d feat: Add CORS support for OPTIONS requests in filtered_packets endpoint 2026-01-02 10:40:32 +00:00
Lloyd 734b59dc3c fix: Update hardware and radio presets file paths for improved accessibility 2026-01-01 22:37:41 +00:00
Lloyd 6fdad00933 feat: Enhance authentication and logging in API endpoints and HTTP server 2025-12-30 23:01:35 +00:00
Lloyd b6f30d59e1 fix: Remove sudo from systemctl command for service restart 2025-12-30 22:37:47 +00:00
Lloyd c24c39eab2 fix: Update directory names and permissions in post-install script 2025-12-30 22:34:28 +00:00
Lloyd 59a151f382 Add build scripts and setup for pyMC_Repeater
- Implemented build-dev.sh for creating development .deb packages from untagged commits.
- Implemented build-prod.sh for creating production .deb packages from tagged commits, including checks for a clean git state.
- Added setup-build-env.sh to automate the installation of required build dependencies for Debian/Ubuntu.
- Created setup.py to manage package setup using setuptools with versioning from git tags.
2025-12-30 15:17:48 +00:00
Lloyd 7112da98c2 feat: Add authentication endpoints and JWT support
- Implemented JWT authentication with auto-generated secret if not provided.
- Added API token management functionality.
- Created authentication endpoints for login, token refresh, verification, and password change.
- Introduced API documentation endpoints for Swagger UI and OpenAPI spec.
- Enhanced CORS support for API and documentation endpoints.
- Updated OpenAPI specification to include new authentication and system endpoints.
2025-12-30 00:10:48 +00:00
Lloyd 98b425f444 added CLI 2025-12-29 14:37:54 +00:00
Lloyd d417fed51a feat(api): Enable CORS for multiple API endpoints 2025-12-29 11:05:27 +00:00
dmduran12 2ab4a62011 feat(api): Add POST /api/update_radio_config endpoint
Adds a new endpoint to update radio and repeater configuration via HTTP API,
supporting both persisted storage and live in-memory updates.

Supported settings:
- Radio: tx_power (2-30 dBm)
- Delays: tx_delay_factor, direct_tx_delay_factor, rx_delay_base
- Repeater: node_name, latitude, longitude, max_flood_hops,
  flood_advert_interval_hours, advert_interval_minutes

Features:
- Validates all input parameters with appropriate ranges
- Saves to config.yaml for persistence
- Updates daemon's in-memory config for immediate effect (no restart needed)
- Returns live_update status so clients know if restart is required

This enables web dashboards like pyMC Console to configure the repeater
without requiring SSH access or service restarts for most settings.

Co-Authored-By: Warp <agent@warp.dev>
2025-12-27 19:47:49 -08:00
dmduran12 e74e062fe5 feat(api): Expose additional config values in /api/stats
Adds the following fields to the stats API response for MeshCore CLI parity:

- config.repeater.max_flood_hops: Max flood hops setting (for 'get flood.max')
- config.repeater.advert_interval_minutes: Local advert interval (for 'get advert.interval')
- config.delays.rx_delay_base: RX delay base setting (for 'get rxdelay')

These fields are already present in config.yaml but were not exposed via the
stats API, making them inaccessible to web dashboards and CLI tools that
communicate over HTTP.

This enables pyMC Console's Terminal to display these values without
requiring direct config file access.

Co-Authored-By: Warp <agent@warp.dev>
2025-12-27 19:46:29 -08:00