@alteriom/painlessmesh 1.9.16 β 1.9.17
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 +26 -0
- package/README.md +30 -22
- package/library.json +1 -1
- package/library.properties +1 -1
- package/package.json +1 -1
- package/src/AlteriomPainlessMesh.h +2 -2
- package/src/arduino/wifi.hpp +17 -2
- package/src/painlessMesh.h +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -13,6 +13,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
13
13
|
|
|
14
14
|
### Fixed
|
|
15
15
|
|
|
16
|
+
## [1.9.17] - 2025-12-21
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- **Documentation Enhancement** - Professional-grade documentation improvements
|
|
21
|
+
- Removed all phase terminology (Phase 1, Phase 2) for clearer product positioning
|
|
22
|
+
- Reorganized package types in proper numerical order (200-614) for better discoverability
|
|
23
|
+
- Enhanced package type descriptions with clearer use cases and benefits
|
|
24
|
+
- Improved Advanced Features section with comprehensive feature list
|
|
25
|
+
- Updated README to production-level quality suitable for enterprise adoption
|
|
26
|
+
- Clarified message type taxonomy (Protocol-Level vs Application-Level)
|
|
27
|
+
|
|
28
|
+
### Documentation
|
|
29
|
+
|
|
30
|
+
- **Package Type Organization** - All 19 application-level package types now listed in numerical order
|
|
31
|
+
- Core IoT Packages (200, 202, 400)
|
|
32
|
+
- Advanced Monitoring (204, 605)
|
|
33
|
+
- Mesh Topology & Management (600-604)
|
|
34
|
+
- Bridge Failover & High Availability (610-614)
|
|
35
|
+
- **Feature Clarity** - Advanced features now prominently displayed including:
|
|
36
|
+
- Broadcast OTA distribution
|
|
37
|
+
- MQTT bridge integration
|
|
38
|
+
- Automatic bridge failover
|
|
39
|
+
- Multi-bridge coordination
|
|
40
|
+
- Message queueing for offline resilience
|
|
41
|
+
|
|
16
42
|
## [1.9.16] - 2025-12-20
|
|
17
43
|
|
|
18
44
|
### Changed
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
<div align="center">
|
|
6
6
|
|
|
7
|
-
**Version 1.9.
|
|
7
|
+
**Version 1.9.17** - Documentation enhancement with production-level quality and improved package organization
|
|
8
8
|
|
|
9
9
|
[](https://github.com/Alteriom/painlessMesh/actions/workflows/ci.yml)
|
|
10
10
|
[](https://github.com/Alteriom/painlessMesh/actions/workflows/docs.yml)
|
|
@@ -46,7 +46,7 @@ This fork includes specialized packages for structured IoT communication:
|
|
|
46
46
|
- Command tracking with unique IDs
|
|
47
47
|
- Perfect for remote device control
|
|
48
48
|
|
|
49
|
-
**Advanced Monitoring Packages
|
|
49
|
+
**Advanced Monitoring Packages:**
|
|
50
50
|
|
|
51
51
|
- **`MetricsPackage`** (Type 204) - Comprehensive performance metrics (SENSOR_METRICS per mqtt-schema v0.7.2+)
|
|
52
52
|
- CPU usage and processing metrics
|
|
@@ -64,13 +64,7 @@ This fork includes specialized packages for structured IoT communication:
|
|
|
64
64
|
- Crash tracking and reboot reason codes
|
|
65
65
|
- Actionable recommendations
|
|
66
66
|
|
|
67
|
-
**Mesh Topology & Management
|
|
68
|
-
|
|
69
|
-
- **`EnhancedStatusPackage`** (Type 604) - Detailed mesh status (MESH_STATUS per mqtt-schema v0.7.2+)
|
|
70
|
-
- Complete mesh statistics (node count, connections, messages)
|
|
71
|
-
- Performance metrics (latency, packet loss, throughput)
|
|
72
|
-
- Alert flags and error reporting
|
|
73
|
-
- Firmware verification with MD5 hash
|
|
67
|
+
**Mesh Topology & Management:**
|
|
74
68
|
|
|
75
69
|
- **`MeshNodeListPackage`** (Type 600) - Node discovery and inventory (MESH_NODE_LIST per mqtt-schema v0.7.2+)
|
|
76
70
|
- List of all mesh nodes with status (offline/online/unreachable)
|
|
@@ -99,7 +93,13 @@ This fork includes specialized packages for structured IoT communication:
|
|
|
99
93
|
- Gateway node identification
|
|
100
94
|
- Enables heterogeneous mesh networks
|
|
101
95
|
|
|
102
|
-
|
|
96
|
+
- **`EnhancedStatusPackage`** (Type 604) - Detailed mesh status (MESH_STATUS per mqtt-schema v0.7.2+)
|
|
97
|
+
- Complete mesh statistics (node count, connections, messages)
|
|
98
|
+
- Performance metrics (latency, packet loss, throughput)
|
|
99
|
+
- Alert flags and error reporting
|
|
100
|
+
- Firmware verification with MD5 hash
|
|
101
|
+
|
|
102
|
+
**Bridge Failover & High Availability:**
|
|
103
103
|
|
|
104
104
|
- **`BridgeStatusPackage`** (Type 610) - Bridge health monitoring (BRIDGE_STATUS per mqtt-schema v0.7.3+)
|
|
105
105
|
- Internet connectivity status
|
|
@@ -119,6 +119,13 @@ This fork includes specialized packages for structured IoT communication:
|
|
|
119
119
|
- Takeover reason and timestamp
|
|
120
120
|
- Seamless failover notification
|
|
121
121
|
|
|
122
|
+
- **`BridgeCoordinationPackage`** (Type 613) - Multi-bridge coordination (BRIDGE_COORDINATION per mqtt-schema v0.7.3+)
|
|
123
|
+
- Bridge priority levels (1-10)
|
|
124
|
+
- Role assignment (primary/secondary/standby)
|
|
125
|
+
- Peer bridge discovery
|
|
126
|
+
- Load balancing metrics
|
|
127
|
+
- Hot standby redundancy
|
|
128
|
+
|
|
122
129
|
- **`NTPTimeSyncPackage`** (Type 614) - NTP time synchronization (TIME_SYNC_NTP per mqtt-schema v0.7.3+)
|
|
123
130
|
- Unix timestamp from NTP server
|
|
124
131
|
- Accuracy/precision in milliseconds
|
|
@@ -127,7 +134,7 @@ This fork includes specialized packages for structured IoT communication:
|
|
|
127
134
|
|
|
128
135
|
All packages provide type-safe serialization, automatic JSON conversion, and mesh-wide broadcasting or targeted messaging. They align with mqtt-schema v0.7.3+ for enterprise IoT integration.
|
|
129
136
|
|
|
130
|
-
#### π
|
|
137
|
+
#### π Advanced Features
|
|
131
138
|
|
|
132
139
|
**Broadcast OTA Distribution**
|
|
133
140
|
|
|
@@ -145,7 +152,7 @@ All packages provide type-safe serialization, automatic JSON conversion, and mes
|
|
|
145
152
|
|
|
146
153
|
See [BRIDGE_TO_INTERNET.md](BRIDGE_TO_INTERNET.md) for complete documentation.
|
|
147
154
|
|
|
148
|
-
#### π Automatic Bridge Failover
|
|
155
|
+
#### π Automatic Bridge Failover
|
|
149
156
|
|
|
150
157
|
**High Availability for Critical Systems**
|
|
151
158
|
|
|
@@ -538,12 +545,15 @@ These are the message types used by applications built on painlessMesh:
|
|
|
538
545
|
- **π± ESP32 & ESP8266** - Full support for both platforms
|
|
539
546
|
- **π‘οΈ Memory Efficient** - Optimized for resource-constrained devices
|
|
540
547
|
|
|
541
|
-
### Advanced Features
|
|
548
|
+
### Advanced Features
|
|
542
549
|
|
|
543
550
|
- **π‘ Broadcast OTA** - Efficient firmware distribution for large meshes (50-100+ nodes)
|
|
544
551
|
- **π MQTT Bridge** - Professional monitoring with Grafana/InfluxDB/Prometheus
|
|
545
552
|
- **π Topology Visualization** - D3.js, Cytoscape.js, Node-RED examples
|
|
546
553
|
- **π― Production Ready** - Enterprise-grade stability and performance
|
|
554
|
+
- **π Automatic Bridge Failover** - RSSI-based election for high availability
|
|
555
|
+
- **π Multi-Bridge Coordination** - Load balancing and geographic redundancy
|
|
556
|
+
- **πΎ Message Queueing** - Zero data loss during Internet outages
|
|
547
557
|
|
|
548
558
|
## Examples & Use Cases
|
|
549
559
|
|
|
@@ -553,18 +563,16 @@ These are the message types used by applications built on painlessMesh:
|
|
|
553
563
|
- **Event Coordination** - Synchronized displays, distributed processing
|
|
554
564
|
- **Bridge Networks** - Connect mesh to WiFi/Internet/MQTT - [π Bridge Guide](BRIDGE_TO_INTERNET.md)
|
|
555
565
|
|
|
556
|
-
## Latest Release: v1.9.
|
|
566
|
+
## Latest Release: v1.9.17 (December 21, 2025)
|
|
557
567
|
|
|
558
|
-
**
|
|
568
|
+
**Documentation Enhancement & Package Organization**
|
|
559
569
|
|
|
560
|
-
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
- π **Comprehensive Documentation Review** - Updated README.md for completeness and accuracy
|
|
565
|
-
- π **Version Consistency** - Aligned version numbers across all distribution channels
|
|
570
|
+
- π **Production-Level Documentation** - Removed phase terminology for clearer product positioning
|
|
571
|
+
- π¦ **Complete Package Catalog** - All 19 application-level package types documented in numerical order
|
|
572
|
+
- π― **Enhanced Feature Clarity** - Improved Advanced Features section with comprehensive capability list
|
|
573
|
+
- β¨ **Professional Quality** - Documentation suitable for enterprise adoption and production deployments
|
|
566
574
|
|
|
567
|
-
**Recent Key Features (v1.9.0 - v1.9.
|
|
575
|
+
**Recent Key Features (v1.9.0 - v1.9.16):**
|
|
568
576
|
|
|
569
577
|
- π **Mesh Connectivity Detection** - New `hasActiveMeshConnections()` and `getLastKnownBridge()` APIs
|
|
570
578
|
- π **Improved Bridge Detection** - `getPrimaryBridge()` returns last known bridge when disconnected
|
package/library.json
CHANGED
package/library.properties
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name=Alteriom PainlessMesh
|
|
2
|
-
version=1.9.
|
|
2
|
+
version=1.9.17
|
|
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.9.
|
|
3
|
+
"version": "1.9.17",
|
|
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",
|
|
@@ -29,10 +29,10 @@
|
|
|
29
29
|
/**
|
|
30
30
|
* @brief AlteriomPainlessMesh library version information
|
|
31
31
|
*/
|
|
32
|
-
#define ALTERIOM_PAINLESS_MESH_VERSION "1.9.
|
|
32
|
+
#define ALTERIOM_PAINLESS_MESH_VERSION "1.9.17"
|
|
33
33
|
#define ALTERIOM_PAINLESS_MESH_VERSION_MAJOR 1
|
|
34
34
|
#define ALTERIOM_PAINLESS_MESH_VERSION_MINOR 9
|
|
35
|
-
#define ALTERIOM_PAINLESS_MESH_VERSION_PATCH
|
|
35
|
+
#define ALTERIOM_PAINLESS_MESH_VERSION_PATCH 17
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
38
|
* @brief Library description and usage information
|
package/src/arduino/wifi.hpp
CHANGED
|
@@ -2263,20 +2263,35 @@ class Mesh : public painlessmesh::Mesh<Connection> {
|
|
|
2263
2263
|
Log(COMMUNICATION, "HTTP request completed: code=%d\n", httpCode);
|
|
2264
2264
|
} else if (httpCode >= 200 && httpCode < 300) {
|
|
2265
2265
|
// Other 2xx codes - ambiguous success
|
|
2266
|
+
// HTTP 203 is retryable, so log at COMMUNICATION level to reduce noise
|
|
2266
2267
|
char errorBuf[128];
|
|
2267
2268
|
snprintf(errorBuf, sizeof(errorBuf),
|
|
2268
2269
|
"Ambiguous response - HTTP %d may indicate cached/proxied response, not actual delivery",
|
|
2269
2270
|
httpCode);
|
|
2270
2271
|
error = TSTRING(errorBuf);
|
|
2271
|
-
Log(
|
|
2272
|
+
Log(COMMUNICATION, "HTTP request ambiguous: code=%d (treated as failure, will retry)\n", httpCode);
|
|
2273
|
+
} else if (httpCode >= 500 && httpCode < 600) {
|
|
2274
|
+
// 5xx server errors are retryable, log at COMMUNICATION level
|
|
2275
|
+
char errorBuf[32];
|
|
2276
|
+
snprintf(errorBuf, sizeof(errorBuf), "HTTP %d", httpCode);
|
|
2277
|
+
error = TSTRING(errorBuf);
|
|
2278
|
+
Log(COMMUNICATION, "HTTP server error: code=%d (will retry)\n", httpCode);
|
|
2279
|
+
} else if (httpCode == 429) {
|
|
2280
|
+
// HTTP 429 rate limit is retryable, log at COMMUNICATION level
|
|
2281
|
+
char errorBuf[32];
|
|
2282
|
+
snprintf(errorBuf, sizeof(errorBuf), "HTTP %d", httpCode);
|
|
2283
|
+
error = TSTRING(errorBuf);
|
|
2284
|
+
Log(COMMUNICATION, "HTTP rate limit: code=%d (will retry)\n", httpCode);
|
|
2272
2285
|
} else {
|
|
2273
|
-
// 1xx, 3xx, 4xx,
|
|
2286
|
+
// 1xx, 3xx, 4xx (except 429) - non-retryable, log at ERROR level
|
|
2274
2287
|
char errorBuf[32];
|
|
2275
2288
|
snprintf(errorBuf, sizeof(errorBuf), "HTTP %d", httpCode);
|
|
2276
2289
|
error = TSTRING(errorBuf);
|
|
2277
2290
|
Log(ERROR, "HTTP request failed: code=%d\n", httpCode);
|
|
2278
2291
|
}
|
|
2279
2292
|
} else {
|
|
2293
|
+
// Network errors (httpCode <= 0) are retryable but indicate serious issues
|
|
2294
|
+
// Keep at ERROR level as they may indicate gateway connectivity problems
|
|
2280
2295
|
error = http.errorToString(httpCode);
|
|
2281
2296
|
Log(ERROR, "HTTP request failed: %s\n", error.c_str());
|
|
2282
2297
|
}
|
package/src/painlessMesh.h
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* @file painlessMesh.h
|
|
6
6
|
* @brief Main header file for Alteriom painlessMesh library
|
|
7
7
|
*
|
|
8
|
-
* @version 1.9.
|
|
9
|
-
* @date 2025-12-
|
|
8
|
+
* @version 1.9.17
|
|
9
|
+
* @date 2025-12-21
|
|
10
10
|
*
|
|
11
11
|
* painlessMesh is a user-friendly library for creating mesh networks with
|
|
12
12
|
* ESP8266 and ESP32 devices. This Alteriom fork includes additional packages
|