9 Commits

Author SHA1 Message Date
980a42f98b Merge fix/mqtt-exponential-backoff: Backoff 1s→60s on retry 2026-02-05 10:13:58 -07:00
69a2e04cd2 Merge fix/wifi-manager-dangling-pointer: Cache SSID to fix use-after-free 2026-02-05 10:13:54 -07:00
0905aa4bf8 Add exponential backoff to MQTT reconnection
Instead of fixed 5s/30s retry intervals, implement exponential backoff:
- Initial delay: 1 second
- Max delay: 60 seconds
- Doubles on each failed attempt
- Resets to minimum on successful connection

This prevents hammering a down broker while still reconnecting
quickly when the issue is transient.

Also includes fix for WiFiState/NetworkState enum mismatch in
getWiFiStatus() which was already on main.
2026-02-05 09:48:49 -07:00
91d144901a Fix dangling pointer bug in WiFiManager getSSID/getConnectionName
WiFi.SSID() returns a temporary String object. Calling .c_str() on it
returns a pointer to the internal buffer, but the String is destroyed
at the end of the statement - leaving a dangling pointer.

Fix by caching the SSID in a member variable when connection state
changes, and returning a pointer to that stable storage.

Also fix getWiFiStatus() in MyMesh.cpp which was using WiFiState enum
values instead of NetworkState (the interface return type).
2026-02-05 09:47:01 -07:00
7516c808a7 Add ENC28J60 Ethernet support with INetworkManager abstraction
- Create INetworkManager interface for network abstraction
- Add EthernetManager for ENC28J60 module using EthernetENC library
- Update WiFiManager to implement INetworkManager interface
- Update MQTTBridge to use INetworkManager* instead of WiFiManager&
- Add heltec_v3_ethernet PlatformIO environment
- Uses HSPI bus (GPIO 19/20/47/48) separate from LoRa SPI
2026-02-05 09:45:16 -07:00
04667f5161 Add optional MQTT gateway with web configuration UI
Feature-flagged WiFi/MQTT capability (WITH_MQTT) that bridges
LoRa mesh packets to MQTT topics over TLS (port 443). Includes:

- WiFiManager: connection handling with AP fallback mode
- MQTTBridge: TLS-secured pub/sub with FNV-1a deduplication
- WebConfig: REST API for WiFi/MQTT settings
- Embedded web UI dashboard for configuration

Default broker: meshqt.l.supported.systems:443 (MQTTS)
Build with: pio run -e heltec_v3_mqtt
2026-01-25 22:44:16 -07:00
d3a128e12f Configure acrazy repeater for USA/Canada preset
- Name: acrazy
- Location: 43.562937, -116.480520
- LoRa: 910.525 MHz, SF7, BW62.5, CR5 (USA/Canada Recommended)
- Flood adverts: 12 hours
- Zero-hop adverts: OFF
- Packet logging: enabled
2026-01-25 19:08:54 -07:00
bdc867a60b Add project README with build instructions 2026-01-25 13:09:53 -07:00
dbed318124 Initial commit: Heltec V3 MeshCore repeater
Standalone PlatformIO project using MeshCore as a library.

Features:
- Heltec LoRa32 V3 support (ESP32-S3 + SX1262)
- OLED display integration
- OTA firmware updates via WiFi
- Serial CLI for configuration

Uses symlinked MeshCore library from ../MeshCore
2026-01-25 12:15:15 -07:00