@alteriom/painlessmesh 1.8.7 → 1.8.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/examples/bridge_failover/README.md +10 -4
- package/library.json +1 -1
- package/library.properties +1 -1
- package/package.json +1 -1
- package/src/arduino/wifi.hpp +8 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.8.8] - 2025-11-12
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **Bridge Internet Connectivity Detection (Mobile Hotspot Compatibility)** - Fixed false negative with mobile hotspots
|
|
15
|
+
- Changed internet detection from checking gateway IP to checking local IP address
|
|
16
|
+
- Gateway IP may not be immediately available after connection, especially with mobile hotspots
|
|
17
|
+
- Some networks (mobile tethering) may not provide gateway IP via DHCP at all
|
|
18
|
+
- **Before**: Bridge connected to mobile hotspot → gets local IP → reports "Internet: NO" (gateway IP not available)
|
|
19
|
+
- **After**: Bridge connected to mobile hotspot → gets local IP → correctly reports "Internet: YES"
|
|
20
|
+
- Having a valid local IP + WiFi connected status is sufficient to indicate internet access
|
|
21
|
+
- Enhanced logging to show WiFi status, local IP, and gateway IP for better debugging
|
|
22
|
+
- Core fix in `src/arduino/wifi.hpp` line 1189-1191
|
|
23
|
+
- Improves upon 1.8.7 gateway IP check which didn't work with all network types
|
|
24
|
+
- Resolves issue where bridge connects successfully but still reports no internet
|
|
25
|
+
- Fixes Alteriom/painlessMesh#129
|
|
26
|
+
|
|
10
27
|
## [1.8.7] - 2025-11-12
|
|
11
28
|
|
|
12
29
|
### Fixed
|
|
@@ -344,12 +344,18 @@ bool amBridge = mesh.isBridge();
|
|
|
344
344
|
|
|
345
345
|
**Symptoms**: Bridge shows "Internet available: NO" or `hasInternet: false` despite router having Internet
|
|
346
346
|
|
|
347
|
-
**Cause**: Fixed in v1.8.5
|
|
347
|
+
**Cause**: Fixed progressively in v1.8.5+ and v1.8.7+.
|
|
348
|
+
|
|
349
|
+
**Historical Fixes**:
|
|
350
|
+
- **v1.8.5**: Added gateway IP check in addition to WiFi connection status
|
|
351
|
+
- **v1.8.7**: Improved gateway IP checking logic
|
|
352
|
+
- **v1.8.8+**: Changed to check local IP instead of gateway IP for better mobile hotspot compatibility
|
|
348
353
|
|
|
349
354
|
**Solutions**:
|
|
350
|
-
- Update to painlessMesh
|
|
351
|
-
- Bridge now checks
|
|
352
|
-
-
|
|
355
|
+
- Update to latest painlessMesh version
|
|
356
|
+
- Bridge now checks WiFi connection AND valid local IP address
|
|
357
|
+
- Works reliably with all network types including mobile hotspots and tethering
|
|
358
|
+
- Local IP check is more reliable than gateway IP, which may not be available on all network types
|
|
353
359
|
|
|
354
360
|
### Election Doesn't Start
|
|
355
361
|
|
package/library.json
CHANGED
package/library.properties
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name=Alteriom PainlessMesh
|
|
2
|
-
version=1.8.
|
|
2
|
+
version=1.8.8
|
|
3
3
|
author=Coopdis,Scotty Franzyshen,Edwin van Leeuwen,Germán Martín,Maximilian Schwarz,Doanh Doanh,Alteriom
|
|
4
4
|
maintainer=Alteriom
|
|
5
5
|
sentence=A painless way to setup a mesh with ESP8266 and ESP32 devices with Alteriom extensions
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alteriom/painlessmesh",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.8",
|
|
4
4
|
"description": "painlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This Alteriom fork includes additional packages for sensor data (SensorPackage), device commands (CommandPackage), and status monitoring (StatusPackage). It handles routing and network management automatically, so you can focus on your application. The library uses JSON-based messaging and syncs time across all nodes, making it ideal for coordinated behaviour like synchronized light displays or sensor networks reporting to a central node.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"arduino",
|
package/src/arduino/wifi.hpp
CHANGED
|
@@ -1186,9 +1186,13 @@ class Mesh : public painlessmesh::Mesh<Connection> {
|
|
|
1186
1186
|
obj["routing"] = 2; // BROADCAST routing
|
|
1187
1187
|
obj["timestamp"] = this->getNodeTime();
|
|
1188
1188
|
|
|
1189
|
-
// Check Internet connectivity: WiFi connected AND valid
|
|
1189
|
+
// Check Internet connectivity: WiFi connected AND valid IP address
|
|
1190
|
+
// We check for valid local IP instead of gateway IP because:
|
|
1191
|
+
// 1. Gateway IP might not be immediately available after connection
|
|
1192
|
+
// 2. Some networks (mobile hotspots) may not provide gateway IP via DHCP
|
|
1193
|
+
// 3. Having a valid local IP + being connected is sufficient for internet access
|
|
1190
1194
|
bool hasInternet = (WiFi.status() == WL_CONNECTED) &&
|
|
1191
|
-
(WiFi.
|
|
1195
|
+
(WiFi.localIP() != IPAddress(0, 0, 0, 0));
|
|
1192
1196
|
obj["internetConnected"] = hasInternet;
|
|
1193
1197
|
|
|
1194
1198
|
obj["routerRSSI"] = WiFi.RSSI();
|
|
@@ -1202,6 +1206,8 @@ class Mesh : public painlessmesh::Mesh<Connection> {
|
|
|
1202
1206
|
|
|
1203
1207
|
Log(GENERAL, "sendBridgeStatus(): Broadcasting status (Internet: %s)\n",
|
|
1204
1208
|
hasInternet ? "Connected" : "Disconnected");
|
|
1209
|
+
Log(GENERAL, "sendBridgeStatus(): WiFi status=%d, localIP=%s, gatewayIP=%s\n",
|
|
1210
|
+
WiFi.status(), WiFi.localIP().toString().c_str(), WiFi.gatewayIP().toString().c_str());
|
|
1205
1211
|
|
|
1206
1212
|
this->sendBroadcast(msg);
|
|
1207
1213
|
}
|