Commit Graph
2090 Commits
Author SHA1 Message Date
agessaman b0146ee6fc enable wifi power save and limit wifi power to reduce potential interference with LoRa radio; fixed situation where retry logic failed when no brokers were connected 2025-12-21 11:26:11 -08:00
agessaman 33bf5c5ee7 Add IATA validation to prevent MQTT publishing without configured IATA code 2025-12-21 11:26:11 -08:00
agessaman 0924faa8b9 Restore status publish retry delay to prevent MQTT server spam 2025-12-21 11:26:11 -08:00
agessaman f3805fa469 Remove final conflict marker from CommonCLI.cpp 2025-12-21 11:26:11 -08:00
agessaman f8c58d1aed Remove remaining conflict markers from CommonCLI.cpp 2025-12-21 11:26:11 -08:00
agessaman 9a228e63c2 Remove conflict marker from CommonCLI.cpp 2025-12-21 11:26:11 -08:00
agessaman 7eff8bad2e Add missing member variables for token expiration and reconnection tracking 2025-12-21 11:26:11 -08:00
agessaman e8e50f8751 Fix remaining conflict marker and add missing RECONNECT_THROTTLE_MS constant 2025-12-21 11:26:11 -08:00
agessaman b64f21463b Fix remaining conflict marker in maintainAnalyzerConnections 2025-12-21 11:26:11 -08:00
agessaman 1633bbdece Remove WiFi credentials from platformio.ini - use CLI or build flags instead 2025-12-21 11:26:11 -08:00
agessaman 500c1bf78d Remove duplicate MQTT function definitions from rebase 2025-12-21 11:26:11 -08:00
agessaman 76d3c8025b Refactor MQTT preferences handling in CommonCLI
- Introduced a new MQTTPrefs struct to store MQTT settings separately from NodePrefs, enhancing compatibility and reducing conflicts.
- Implemented functions to load, save, and synchronize MQTT preferences, ensuring backward compatibility with existing configurations.
- Updated file handling to read and write MQTT settings from a dedicated /mqtt_prefs file, maintaining file format compatibility.
- Added default values for MQTT preferences to ensure proper initialization when files are missing or corrupted.
2025-12-21 11:26:11 -08:00
agessaman 5364a6bc1c added explicit dependency on paulstoffregen/Time to resolve potential pio compile issues 2025-12-21 11:26:11 -08:00
agessaman fa41642bdb removed cayennelpp patching script and just updated to the newest ArduinoJson like we should have from the beginning 2025-12-21 11:26:11 -08:00
agessaman 4b4cccd433 Fix timezone command handling in CommonCLI by adjusting string comparison lengths for accurate parsing. Updated offsets to ensure correct handling of timezone and timezone.offset commands. 2025-12-21 11:26:11 -08:00
agessaman 5efecfe008 Enhance CommonCLI and JWTHelper to support MQTT email functionality
- Added loading and saving of MQTT email preferences in CommonCLI.
- Updated command handling in CommonCLI to retrieve and set the MQTT email.
- Modified JWTHelper to include an optional email parameter in JWT token creation.
- Adjusted MQTTBridge to utilize the email from preferences when creating JWT tokens.
2025-12-21 11:26:11 -08:00
agessaman a5c017d01f Enhance CommonCLI and JWTHelper for MQTT owner public key support
- Added functionality to load, save, and handle the MQTT owner public key in CommonCLI.
- Implemented validation for the owner public key format and updated command handling to set the key.
- Modified JWTHelper to include optional owner and client fields in JWT token creation.
- Increased buffer sizes for JWT tokens in MQTTBridge to accommodate new fields.
2025-12-21 11:26:11 -08:00
agessaman 1aff8cd012 Enhance MQTTBridge and related components for improved status reporting and stats collection
- Added support for automatic stats collection in MQTTBridge, allowing for detailed status messages including battery voltage, uptime, error flags, and air time metrics.
- Updated MQTTMessageBuilder to accommodate additional stats in the status message, increasing buffer size for JSON documents.
- Modified CommonCLI to display MQTT status interval in minutes and adjusted command handling for setting the interval.
- Introduced new methods in MQTTBridge for setting stats sources
2025-12-21 11:26:11 -08:00
agessaman 7c52158f13 Enhance MQTTBridge logging and connection handling
- Introduced throttling for log messages related to disconnected brokers and analyzer clients to reduce log spam.
- Added new member variables to track the last log timestamps for broker connection issues and analyzer client states.
- Updated the packet processing logic to reset log timers when brokers are connected, ensuring accurate logging behavior.
- Improved connection validation before publishing to prevent race conditions and maintain accurate broker states.
2025-12-21 11:26:11 -08:00
agessaman 61fd2c4780 Implement memory monitoring and queue size reporting in MQTTBridge and CommonCLI
- Added `getQueueSize` method to `MyMesh` and `CommonCLI` for better queue management.
- Introduced memory logging functionality in `MQTTBridge` to monitor heap usage and detect potential memory leaks.
- Adjusted maximum queue size in `MQTTBridge` from 50 to 10 for improved resource management.
- Enhanced command handling in `CommonCLI` to report memory status upon request.
2025-12-21 11:26:11 -08:00
agessaman 22df61f461 Enhance MQTTMessageBuilder and MQTTBridge for improved packet handling and memory management
- Implemented size-adaptive JSON document allocation in MQTTMessageBuilder to reduce memory fragmentation.
- Increased buffer sizes for raw hex conversions to accommodate larger packets.
- Updated MQTTBridge to store raw radio data with each packet, improving data integrity during transmission.
- Enhanced packet queue management by clearing structures to prevent stale data and ensuring safe memory handling.
- Added debug logging for packet processing to aid in troubleshooting.
2025-12-21 11:26:11 -08:00
agessaman 542b388113 Implement memory monitoring and queue size reporting in MQTTBridge and CommonCLI
- Added `getQueueSize` method to `MyMesh` and `CommonCLI` for better queue management.
- Introduced memory logging functionality in `MQTTBridge` to monitor heap usage and detect potential memory leaks.
- Adjusted maximum queue size in `MQTTBridge` from 50 to 10 for improved resource management.
- Enhanced command handling in `CommonCLI` to report memory status upon request.
2025-12-21 11:26:11 -08:00
agessaman d95a24bbd6 Refactor JWTHelper base64 URL encoding to modify output in-place and improve memory efficiency. Enhance MQTTBridge cleanup process to prevent memory leaks by properly deleting queued packets and timezone objects. 2025-12-21 11:26:11 -08:00
agessaman 6bb13e6c0b don't start mqtt connection attempts until wifi credentials are valid (requires reboot)
display IP address on screen when connected

added quickstart section to MQTT_IMPLEMENTATION.md
2025-12-21 11:26:11 -08:00
agessaman fc9bf9eef0 added configuration for mqtt.sever, mqtt.username, mqtt.pasword, and mqtt.port
validated primary MQTT server credentials are set before opening connection
2025-12-21 11:26:11 -08:00
agessaman 23251330db Update MQTT implementation to include dynamic build date and enhance client versioning 2025-12-21 11:26:11 -08:00
agessaman d6a5a63a66 Implement Let's Mesh Analyzer integration in MQTT Bridge
- Switch from PubSub to PsychicMqttClient for async operations and websockets support
- Add support for US and EU Let's Mesh Analyzer servers with JWT authentication.
- Introduce CLI commands to enable/disable analyzer servers.
- Update NodePrefs to store analyzer server settings.
- Modify MQTTBridge to publish status and packet data to analyzer servers via WebSocket MQTT.
- Enhance documentation to reflect new features and configuration options.
2025-12-21 11:26:11 -08:00
agessaman b3aa0fd589 added build target for Station_G2_repeater_bridge_mqtt and improved documentation. 2025-12-21 11:26:11 -08:00
agessaman 1198f44677 added timezone handling, updated mqtt packet output to use the proper timezones for timestamp and time/date, updated mqtt packet to use raw data instead of parsed packet structure, updated packet upload to use proper packet hash 2025-12-21 11:26:11 -08:00
agessaman b47c565b0d Add timezone support to MQTT Bridge and CLI configuration
- Introduce timezone settings in NodePrefs for persistent storage
- Update CLI commands to get/set timezone and offset
- Modify MQTT message builder to utilize timezone for accurate timestamps
- Implement timezone handling in MQTTBridge for local time conversion
- Include timezone library dependency in platformio.ini
2025-12-21 11:26:11 -08:00
agessaman e5bb21931d Add MQTT Bridge implementation with WiFi CLI configuration
- Implement MQTT bridge for packet uplink to multiple brokers
- Add JSON message formatting for status, packets, and raw data
- Add WiFi SSID/password CLI configuration (get/set wifi.ssid, wifi.pwd)
- Add persistent storage for WiFi credentials
- Add NTP time synchronization for accurate MQTT timestamps
- Add CLI commands for MQTT configuration (origin, iata, status, packets, raw)
- Support multiple MQTT brokers with automatic reconnection
- Integrate with existing MeshCore bridge architecture
2025-12-21 11:26:11 -08:00
fdlamotte d3e696ec40 Update README.md (RAK boards don't need pio patch) 2025-12-21 11:26:11 -08:00
tekstrand 5bc5bf3187 trim trailing whitespace, clarify repeater gps, remove outdated instructions 2025-12-21 11:26:11 -08:00
Jonathan Stöcklmayer 9142d815a9 Fix debug log: use c->extra.room.push_failures instead of non-existent c->push_failures 2025-12-21 11:26:11 -08:00
uncle lit 8becd615e3 Update faq.md
added pyMC_core to meshcore projects
mentioned Cisien's meshcoretomqtt fork from Andrew-a-g
updated Coding Rate explanation and recommendation
updated radio presets and added how to update presets listed in the app
2025-12-21 11:26:11 -08:00
silverphish-io 25bf4ffe0a Typo fix in faq and payloads 2025-12-21 11:26:11 -08:00
silverphish-io 2821d0da08 Update faq.md 2025-12-21 11:26:11 -08:00
ripplebiz 82e937aa1a Update README.md 2025-12-21 11:26:11 -08:00
Liam Cottle 0c3fb918b2 Merge pull request #1203 from liquidraver/fix-gps-popup
Fix GPS/Buzzer toggle UI popup
2025-12-18 21:39:25 +13:00
liquidraver e855706abb move showalert after saveprefs 2025-12-17 21:27:22 +01:00
fdlamotte 2ddd5ca0c3 Merge pull request #1235 from liquidraver/btfixv7
queue throttling + slave latency and minor refactor
2025-12-17 15:08:20 +01:00
liquidraver cba29ea50c queue throttling + slave latency and minor refactor 2025-12-17 13:46:58 +01:00
fdlamotte 9b13106b6f Merge pull request #1201 from fschrempf/nrf52-board-deduplication
NRF52 Board Code Deduplication
2025-12-17 11:29:33 +01:00
Frieder Schrempf 8eb229bcf8 variants: RAK4631: Enable DC/DC regulator to reduce power consumption
The RAK4631/RAK4630 module are able to use the DC/DC converter. Enable
it to reduce power consumption.

Signed-off-by: Frieder Schrempf <frieder@fris.de>
2025-12-17 10:39:55 +01:00
Frieder Schrempf 22b1585959 NRF52Board.h: Mark getMCUTemperature() as virtual
The function in the derived class is virtual per definition. Mark it
to make this clearer to the reader.

Signed-off-by: Frieder Schrempf <frieder@fris.de>
2025-12-17 10:39:54 +01:00
Frieder Schrempf b024b9e1a1 Deduplicate NRF52 startOTAUpdate()
The startOTAUpdate() is the same for all NRF52 boards. Use a common
implementation for all boards that currently have a specific
implementation.

The following boards currently have an empty startOTAUpdate() for
whatever reasons and therefore are not inheriting NRF52BoardOTA to
keep the same state: Nano G2 Ultra, Seeed SenseCAP T1000-E,
Wio WM1110.

Signed-off-by: Frieder Schrempf <frieder@fris.de>
2025-12-17 10:30:50 +01:00
Frieder Schrempf e3bb225efb Deduplicate DC/DC regulator enable for NRF52 boards
Some NRF52 boards are able to use the internal power-efficient DC/DC
regulator. Add a new class that can be inherited by board classes to
enable this feature and reduce the power consumption.

Signed-off-by: Frieder Schrempf <frieder@fris.de>
2025-12-17 10:29:14 +01:00
Frieder Schrempf 93d1560d14 Use common NRF52 begin() and deduplicate() startup reason init
Use a common begin() method that can be called from derived classes
to contain the shared initialization code.

Signed-off-by: Frieder Schrempf <frieder@fris.de>
2025-12-17 10:26:57 +01:00
Frieder Schrempf 87b0e432bb Deduplicate reboot() for NRF52 boards
The reboot() method is the same for all NRF52 boards. Use a shared
implementation.

Signed-off-by: Frieder Schrempf <frieder@fris.de>
2025-12-17 10:25:16 +01:00
Frieder Schrempf 6486192477 variants: IkokaNrf52Board: Use NRF52Board base class
Signed-off-by: Frieder Schrempf <frieder@fris.de>
2025-12-17 10:22:15 +01:00