Commit Graph
3240 Commits
Author SHA1 Message Date
agessaman 2eb41baeda refactor(mqtt): migrate observer settings to MQTTPrefs structure
Refactored the handling of observer-related settings by moving them from
NodePrefs to a new MQTTPrefs structure. This change centralizes MQTT,
WiFi, timezone, SNMP, and alert configurations, improving code organization
and maintainability. The new structure allows for better separation of
concerns and prepares the codebase for future enhancements.
2026-06-26 08:59:48 -07:00
agessaman 9535f243af refactor(cli): move observer command handling to CommonCLI_Observer.cpp
Refactored the CommonCLI class to separate observer-related command
handling into CommonCLI_Observer.cpp. This change improves code
organization and maintainability by isolating MQTT, WiFi, and other
observer-specific commands from the main CLI logic.
2026-06-25 14:05:16 -07:00
agessaman 706d1c7ea2 fix(mqtt): enhance error handling for connection refusals
Improved error handling in the MQTT client to log specific reasons
for connection refusals, including detailed return codes. This change
ensures that users are informed of authentication issues and server
availability problems, enhancing the debugging experience.
2026-06-25 08:13:55 -07:00
Adam Gessaman 5570a51204 Merge pull request #15 from Dreikor17/add-rflab-mqtt-preset
feat(mqtt): add rflab.io WebSocket broker preset
2026-06-24 21:39:35 -07:00
Adam Gessaman b699bf6a3b Merge branch 'mqtt-bridge-implementation-flex' into add-rflab-mqtt-preset 2026-06-24 21:38:49 -07:00
agessaman c39ab639b0 feat(mqtt): add ipnt.uk preset to MQTT presets 2026-06-24 21:20:56 -07:00
agessaman b458ac42e4 perf(mqtt): remove dead code and optimize hex conversion
Remove unused MQTTMessageBuilder members (getPacketTypeString,
formatTimestamp/Time/Date stubs, JSON_BUFFER_SIZE constant) for a
small flash saving with no behavior change.

Replace the per-byte snprintf("%02X") in bytesToHex with a nibble
lookup table, avoiding a format-string parse up to ~512x per publish
on the MQTT task. Output is byte-for-byte identical uppercase hex.
2026-06-24 20:33:00 -07:00
agessaman 7416d632b9 feat(mqtt): add NTP server configuration and diagnostics commands
Implemented new commands for configuring and diagnosing NTP server
settings in the MQTT bridge. Users can now set a custom NTP server
and probe connectivity to configured servers. This enhancement
improves time synchronization reliability for JWT authentication
and provides better diagnostics for NTP connectivity issues.
2026-06-24 17:14:11 -07:00
agessaman b5797da462 fix(github-actions): exclude .partsig files from release asset uploads
Updated the build-observer-firmwares workflow to exclude .partsig files
when uploading release assets. This change prevents issues with the
slim-manifest generator and ensures that only relevant firmware files
are published, improving the integrity of the release process.
2026-06-23 15:59:28 -07:00
agessaman 125ddac184 feat(ota): add partition-table signature handling for OTA updates
Implemented functionality to generate and compare partition-table
signatures during OTA updates. This enhancement ensures that the
target build's partition layout matches the device's actual layout,
improving the reliability of OTA updates and preventing issues
related to partition changes.
2026-06-23 15:38:10 -07:00
agessaman a6851813f9 fix(ota): improve display of version and hash in OTA status messages
Updated the otaFromManifestImpl method to enhance the display of
available and current firmware versions. The changes ensure that
the short commit hash is included in the status messages,
providing clearer versioning information during OTA checks.
2026-06-23 14:25:06 -07:00
agessaman 5acfdd736a fix(ota): enhance manifest fetching logic for OTA updates
Improved the otaFromManifestImpl method to handle dry run scenarios
by allowing HTTP fetches without TLS, reducing heap usage on no-PSRAM
boards. This change ensures better compatibility and reliability during
OTA checks while maintaining security for actual updates.
2026-06-23 14:08:12 -07:00
agessaman 730eb37dbd feat(ota): implement build number suffix for firmware versioning
Enhanced the firmware versioning system by appending a build number
suffix when available, allowing for better tracking of published builds.
This change improves the OTA update process by providing clearer
versioning information in the embedded firmware string.
2026-06-23 12:55:07 -07:00
agessaman addb637b63 feat(mqtt): add meshcore-fi preset to MQTT presets 2026-06-23 09:31:45 -07:00
Adam Gessaman a06a14dfa8 Merge pull request #17 from agessaman/feat/ota-web
Feat/ota web
2026-06-22 22:36:38 -07:00
agessaman c1885fcc15 feat(ota): implement deferred OTA update scheduling and handling
Added support for deferred OTA updates in the MyMesh class, allowing
the system to schedule firmware updates to occur after a confirmation
reply is sent. This change improves the user experience by ensuring
that the update process does not block the main application loop,
allowing for smoother operation during firmware updates.
2026-06-22 22:33:57 -07:00
agessaman dec668386a fix(ota): improve OTA update handling for connected WiFi networks
Updated the startOTAUpdate method to serve the ElegantOTA on the
station IP when connected to a WiFi network, enhancing accessibility
for OTA updates. If not connected, it defaults to the MeshCore-OTA
SoftAP. This change improves the user experience by allowing easier
access to OTA updates without needing to switch networks.
2026-06-22 21:28:18 -07:00
agessaman 3719ebb980 fix(ota): improve streaming JSON parsing in otaFromManifest
Updated the otaFromManifest method to stream-parse the firmware manifest
directly from the network, reducing peak RAM usage during OTA checks. This
change enhances compatibility with slow TLS links by implementing a per-read
timeout, ensuring a more efficient and reliable update process.
2026-06-22 19:53:40 -07:00
agessaman e84c266576 feat(ota): add ota check and ota update commands for pull-based updates 2026-06-22 19:36:05 -07:00
agessaman b679c0d712 fix(ota): handle HTTP response and empty manifest in otaFromManifest
Updated the otaFromManifest method to enforce HTTP/1.0 for better
compatibility with CDNs and to handle empty manifest responses. This
ensures that the JSON parser receives a complete body, preventing
errors during firmware update checks.
2026-06-22 19:32:23 -07:00
agessaman 454afec91d feat(mqtt): add flmesh.us preset to MQTT implementation 2026-06-22 13:52:48 -07:00
agessaman 004d308ea9 feat(ota): implement pull-based OTA from manifest for observer builds
Added functionality to support pull-based OTA updates by fetching firmware
from a manifest. The new `otaFromManifest` method allows the system to
check for available updates and flash the firmware if necessary. This
enhancement improves the update process for observer builds using the
MQTT bridge, ensuring a more seamless firmware management experience.
2026-06-21 11:57:05 -07:00
Dreikor17 32b0eb91dd feat(mqtt): add rflab.io WebSocket broker preset
Adds the "rflab" built-in MQTT preset and bumps MQTT_PRESET_COUNT to 22.

  - Server:   wss://mqtt.rflab.io:443
  - Auth:     JWT (Ed25519 device identity), audience mqtt.rflab.io
  - Topic:    MeshCore style
  - TLS:      Let's Encrypt, pinned to ISRG Root X1

Also documents the preset in the MQTT_IMPLEMENTATION.md preset table.
2026-06-21 11:20:44 -05:00
agessaman 8b084d5ac3 chore(github-actions): enhance asset pruning logic in release workflow
Updated the build-observer-firmwares.yml to improve the asset pruning
logic during the release process. The workflow now retains the most
recent build hashes to prevent 404 errors for assets that may still
be requested during build cycles. This change ensures a smoother
release experience by maintaining necessary assets while cleaning
up older ones.
2026-06-18 17:55:45 -07:00
agessaman 618c849d53 feat(mqtt): enhance timestamp formatting with microsecond precision
Updated the MQTTMessageBuilder to include microsecond precision in the
timestamp formatting. The formatIsoTimestampForMqtt function now accepts
a microsecond parameter, allowing for more accurate time representation.
Modified related functions in MQTTBridge to utilize the new timestamp
formatting, ensuring consistency across MQTT messages.
2026-06-18 15:03:02 -07:00
agessaman 50154563ba chore(github-actions): refine paths-ignore and shallow clone handling in workflow 2026-06-18 12:01:32 -07:00
agessaman 71b92c830c chore(github-actions): improve changelog generation and git history fetch 2026-06-18 09:38:27 -07:00
agessaman 985fda1382 Add AlertReporter integration to MyMesh 2026-06-17 20:02:39 -07:00
agessaman 8bf590b1e3 Enhance MQTT message structure by adding cumulative packet statistics (packets_sent and packets_received) to the status message. Update related functions in MQTTMessageBuilder and MQTTBridge to handle new parameters and ensure proper JSON serialization. Document the new fields and their significance in the implementation notes. 2026-06-16 15:59:36 -07:00
agessaman e80a5ded1c Enhance MQTT message handling by updating path representation to use an array of lowercase hex hop tokens. Refactor related functions in MQTTMessageBuilder to accommodate new path parameters and improve JSON serialization. Update documentation to reflect changes in path handling and timestamp formatting. 2026-06-16 14:39:03 -07:00
agessaman 0844eee136 Sync documentation files for Flasher in GitHub Actions workflow 2026-06-16 14:14:33 -07:00
Adam Gessaman cf629fb71b Update MQTT implementation to add CTMesh preset and adjust related documentation 2026-06-10 10:12:42 -07:00
Adam Gessaman 4d6fa74062 Add BostonMesh preset 2026-06-10 09:45:39 -07:00
agessaman 8fa38707c2 Refactor GitHub Actions workflow for rolling release management
Updated the build-observer-firmwares.yml to improve the handling of rolling releases. The workflow now creates a release only if it doesn't already exist, preventing tag conflicts. Additionally, it uploads build artifacts while replacing existing assets and prunes older assets to maintain a clean release. This change enhances the reliability and efficiency of the release process.
2026-06-08 19:13:19 -07:00
agessaman 002e8d4ac6 Add Radio Watchdog feature to MQTT implementation
Introduced a radio watchdog that detects when the LoRa radio is stuck in RX mode without activity. The firmware can now idle and restart the radio after a configured silence interval, helping MQTT observers recover from missed interrupts. Added CLI commands to get and set the watchdog interval, with a default of 5 minutes. Updated documentation to include usage examples and configuration notes.
2026-06-08 18:46:29 -07:00
agessaman b45373a31f Update firmware build date format and enhance MQTT timestamp handling to always emit UTC with "+00:00" offset. Adjusted buffer sizes for timestamps in MQTTMessageBuilder and MQTTBridge to accommodate new format. 2026-06-06 20:29:52 -07:00
agessaman c29ede054b Increase the number of shards from 4 to 14 in the GitHub Actions workflow for building observer firmwares 2026-06-06 14:44:24 -07:00
agessaman 6723776f9d Add caching for PlatformIO toolchains in GitHub Actions workflow 2026-06-06 14:20:30 -07:00
agessaman 981ed2469e automate build process with github actions 2026-06-06 14:10:53 -07:00
agessamanandCursor dcc8f826db Merge upstream/dev into mqtt-bridge-implementation-flex
Pick up 97 commits from upstream/dev, resolving conflicts in
CommonCLI prefs layout, board definitions, docs, and T-Beam Supreme
platformio config.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-06 09:29:16 -07:00
Scott Powell 8c0d5c5b24 * version 1.16.0 2026-06-06 21:09:38 +10:00
ripplebiz 74adda6316 Merge pull request #2702 from meshcore-dev/flood.max.advert
new CLI config: flood.max.advert
2026-06-06 21:05:22 +10:00
Scott Powell 8fc2da5c98 * default now 8, per the will of the peoples. 2026-06-06 21:00:58 +10:00
Liam Cottle b6454d6251 Merge pull request #2703 from IoTThinks/Fixed-powersaving--in-cli_commands.md-2026-06
Change default power saving setting to 'off'
2026-06-06 16:09:27 +12:00
IoTThinks 6a9a84e8a5 Change default power saving setting to 'off' 2026-06-06 11:04:36 +07:00
Scott Powell 5f6821bb66 * new CLI config: flood.max.advert (default 16) 2026-06-06 13:09:24 +10:00
Scott Powell 397ac6144f * number allocations: Ripple range reserved 2026-06-06 12:45:35 +10:00
Adam Gessaman 4a4f20a392 Update MQTT preset for Meshmapper to use new domain 2026-06-05 09:49:57 -07:00
ripplebiz 53d50aa1ef Merge pull request #2684 from oltaco/rp2040-build-fixes
Build fixes for some RP2040 targets
2026-06-05 12:30:08 +10:00
Liam Cottle 1485d3301b Merge pull request #2463 from NoodlesNZ/fix-stddef
Add stddef.h to fix compilation issue on MacOS
2026-06-05 11:29:44 +12:00