@alteriom/painlessmesh 1.8.2 → 1.8.4
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 +60 -0
- package/README.md +74 -11
- package/RELEASE_GUIDE.md +57 -16
- package/docs/ARDUINO_LIBRARY_MANAGER_SUBMISSION.md +331 -0
- package/docs/features/DIAGNOSTICS_API.md +534 -0
- package/docs/getting-started/arduino-manual-install.md +313 -0
- package/docs/implementation/BRIDGE_ARCHITECTURE_IMPLEMENTATION.md +340 -0
- package/docs/implementation/BRIDGE_HEALTH_MONITORING_IMPLEMENTATION.md +213 -0
- package/docs/implementation/BRIDGE_STATUS_FEATURE.md +635 -0
- package/docs/implementation/DIAGNOSTICS_API_IMPLEMENTATION.md +232 -0
- package/docs/implementation/IMPLEMENTATION_COMPLETE.md +228 -0
- package/docs/implementation/IMPLEMENTATION_NTP_TIME_SYNC.md +325 -0
- package/docs/implementation/IMPLEMENTATION_SUMMARY.md +316 -0
- package/docs/implementation/MESSAGE_QUEUE_IMPLEMENTATION.md +405 -0
- package/docs/implementation/MULTI_BRIDGE_IMPLEMENTATION.md +520 -0
- package/docs/implementation/NTP_TIME_SYNC_FEATURE.md +392 -0
- package/docs/internal/CUSTOM_AGENT_ANALYSIS.md +391 -0
- package/docs/internal/ISSUE_65_VERIFICATION.md +947 -0
- package/docs/internal/ISSUE_66_CLOSURE.md +249 -0
- package/docs/internal/ISSUE_66_STATUS.md +316 -0
- package/docs/internal/PR_SUMMARY.md +315 -0
- package/docs/internal/REVIEW_SUMMARY.md +332 -0
- package/docs/releases/PUBLISH_v1.8.0_INSTRUCTIONS.md +163 -0
- package/docs/releases/QUICK_START_RELEASES.md +113 -0
- package/docs/releases/RELEASE_CHECKLIST_v1.8.0.md +331 -0
- package/docs/releases/RELEASE_CHECKLIST_v1.8.2.md +309 -0
- package/docs/releases/RELEASE_NOTES_v1.8.0.md +685 -0
- package/docs/releases/RELEASE_NOTES_v1.8.1.md +221 -0
- package/docs/releases/RELEASE_NOTES_v1.8.2.md +421 -0
- package/docs/releases/RELEASE_NOTES_v1.8.3.md +292 -0
- package/docs/releases/RELEASE_NOTES_v1.8.4.md +277 -0
- package/docs/troubleshooting/ARDUINO_IDE_VERSION_FIX_SUMMARY.md +229 -0
- package/docs/troubleshooting/ARDUINO_LIBRARY_NAME_FIX.md +197 -0
- package/docs/troubleshooting/NPM_PUBLISHING_ISSUE_SUMMARY.md +110 -0
- package/docs/troubleshooting/station-reconnection-issues.md +172 -0
- package/examples/bridge_failover/README.md +17 -1
- package/examples/priority/README.md +274 -0
- package/examples/priority/priority_basic_example.ino +115 -0
- package/examples/priority/priority_with_queue.ino +249 -0
- package/examples/routing_demo/README.md +172 -0
- package/examples/routing_demo/routing_demo.ino +102 -0
- package/library.json +1 -1
- package/library.properties +3 -3
- package/package.json +1 -1
- package/src/arduino/wifi.hpp +62 -16
- package/src/painlessMesh.h +15 -0
- package/src/painlessMeshSTA.cpp +7 -1
- package/src/painlessmesh/buffer.hpp +218 -37
- package/src/painlessmesh/connection.hpp +21 -1
- package/src/painlessmesh/mesh.hpp +253 -19
- package/src/painlessmesh/router.hpp +31 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,66 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.8.4] - 2025-11-12
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **Bridge Discovery Timing (Issue #108)** - Immediate bridge status broadcast for faster node discovery
|
|
15
|
+
- Bridge nodes now send status broadcast immediately on initialization
|
|
16
|
+
- Bridge status broadcast sent when new nodes connect to mesh
|
|
17
|
+
- Eliminates 30-second discovery delay that caused "No primary bridge available" errors
|
|
18
|
+
- Bridge nodes are now discoverable in <1 second instead of up to 30 seconds
|
|
19
|
+
- Improves user experience in bridge_failover example
|
|
20
|
+
- Resolves @woodlist's issue with bridge discovery in bridge_failover example
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- **Bridge Status Broadcasting** - Enhanced timing for immediate node discovery
|
|
25
|
+
- Added immediate broadcast task on bridge initialization
|
|
26
|
+
- Registered newConnectionCallback to broadcast when nodes join
|
|
27
|
+
- Maintains existing periodic broadcasts (30-second default interval)
|
|
28
|
+
- No breaking changes - fully backward compatible
|
|
29
|
+
|
|
30
|
+
### Documentation
|
|
31
|
+
|
|
32
|
+
- **Bridge Failover Example** - Updated documentation for discovery improvements
|
|
33
|
+
- Added "Bridge Status Monitoring" section documenting new broadcast timing
|
|
34
|
+
- Added "Bridge Not Discovered" troubleshooting section
|
|
35
|
+
- Updated README with immediate discovery behavior
|
|
36
|
+
- Examples: `examples/bridge_failover/`
|
|
37
|
+
|
|
38
|
+
## [1.8.3] - 2025-11-11
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- **Arduino ZIP File Integrity (Issue #89)** - Resolved ZIP file installation issues reported by @woodlist
|
|
43
|
+
- Removed problematic symlink `_codeql_detected_source_root` that caused ZIP file corruption
|
|
44
|
+
- Added comprehensive `.gitattributes export-ignore` rules to exclude development files from releases
|
|
45
|
+
- Improved ZIP file structure for Arduino IDE compatibility
|
|
46
|
+
- Added version timestamp and metadata to main header file `painlessMesh.h`
|
|
47
|
+
- Excluded test files, scripts, and development artifacts from Arduino ZIP packages
|
|
48
|
+
|
|
49
|
+
- **Station Reconnection After Mesh Init (Issue #21)** - Automatic reconnection for bridge mode station connections
|
|
50
|
+
- Fixed bug where manual station connections failed to reconnect after mesh initialization
|
|
51
|
+
- `connectToAP()` now calls `WiFi.begin()` directly for manual connections instead of relying on scan results
|
|
52
|
+
- Added logging for reconnection attempts
|
|
53
|
+
- Resolves ESP32-C6 and all ESP platforms bridge connectivity issues
|
|
54
|
+
- Documentation: `docs/troubleshooting/station-reconnection-issues.md`
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
|
|
58
|
+
- **Library Header Documentation** - Added version timestamp and metadata to `painlessMesh.h`
|
|
59
|
+
- Header now includes version number, release date, and repository URL
|
|
60
|
+
- Improved documentation for library users
|
|
61
|
+
- Addresses @woodlist's request for version timestamp tracking
|
|
62
|
+
|
|
63
|
+
### Improved
|
|
64
|
+
|
|
65
|
+
- **Release Process** - Enhanced ZIP file creation for Arduino IDE
|
|
66
|
+
- Better exclusion of development files from distribution packages
|
|
67
|
+
- Cleaner package structure with only essential library files
|
|
68
|
+
- Improved compatibility with Arduino IDE's "Add .ZIP Library" feature
|
|
69
|
+
|
|
10
70
|
## [1.8.2] - 2025-11-11
|
|
11
71
|
|
|
12
72
|
### Added
|
package/README.md
CHANGED
|
@@ -207,7 +207,7 @@ mesh.setBridgeSelectionStrategy(ROUND_ROBIN);
|
|
|
207
207
|
mesh.onBridgeCoordination(&bridgeCoordinationCallback);
|
|
208
208
|
```
|
|
209
209
|
|
|
210
|
-
See [Multi-Bridge Implementation](MULTI_BRIDGE_IMPLEMENTATION.md), [Issue #65 Verification](ISSUE_65_VERIFICATION.md), and [examples/multi_bridge/](examples/multi_bridge/) for complete documentation.
|
|
210
|
+
See [Multi-Bridge Implementation](docs/implementation/MULTI_BRIDGE_IMPLEMENTATION.md), [Issue #65 Verification](docs/internal/ISSUE_65_VERIFICATION.md), and [examples/multi_bridge/](examples/multi_bridge/) for complete documentation.
|
|
211
211
|
|
|
212
212
|
#### 📬 Message Queue for Offline Mode (v1.8.2)
|
|
213
213
|
|
|
@@ -242,7 +242,7 @@ mesh.onQueueFull(&queueFullCallback);
|
|
|
242
242
|
mesh.onQueueFlushed(&queueFlushedCallback);
|
|
243
243
|
```
|
|
244
244
|
|
|
245
|
-
See [Message Queue Implementation](MESSAGE_QUEUE_IMPLEMENTATION.md), [Issue #66 Closure](ISSUE_66_CLOSURE.md), and [examples/queued_alarms/](examples/queued_alarms/) for complete documentation.
|
|
245
|
+
See [Message Queue Implementation](docs/implementation/MESSAGE_QUEUE_IMPLEMENTATION.md), [Issue #66 Closure](docs/internal/ISSUE_66_CLOSURE.md), and [examples/queued_alarms/](examples/queued_alarms/) for complete documentation.
|
|
246
246
|
|
|
247
247
|
#### MQTT Bridge Commands
|
|
248
248
|
|
|
@@ -294,7 +294,12 @@ painlessMesh does not create a TCP/IP network of nodes. Rather each of the nodes
|
|
|
294
294
|
|
|
295
295
|
### Arduino Library Manager
|
|
296
296
|
|
|
297
|
-
|
|
297
|
+
> **✅ FIXED**: Library name restored to match Arduino Library Manager registry.
|
|
298
|
+
> **Status**: New releases (v1.8.3+) will now be indexed automatically within 24-48 hours.
|
|
299
|
+
> **Issue**: Versions v1.7.0-v1.8.1 had incorrect library name and were not indexed.
|
|
300
|
+
> See [Arduino Library Manager Documentation](docs/ARDUINO_LIBRARY_MANAGER_SUBMISSION.md) for details.
|
|
301
|
+
|
|
302
|
+
**Once registered**, installation will be available via Arduino IDE:
|
|
298
303
|
|
|
299
304
|
1. Open Arduino IDE
|
|
300
305
|
2. Go to **Tools** → **Manage Libraries...**
|
|
@@ -303,6 +308,40 @@ This library is **Arduino Library Manager compliant** and can be installed direc
|
|
|
303
308
|
|
|
304
309
|
The library includes the header file `AlteriomPainlessMesh.h` which provides access to both the core painlessMesh functionality and Alteriom-specific extensions.
|
|
305
310
|
|
|
311
|
+
#### Manual Installation (Current Method)
|
|
312
|
+
|
|
313
|
+
**Option 1: Download ZIP from GitHub Release**
|
|
314
|
+
|
|
315
|
+
1. Go to [Releases](https://github.com/Alteriom/painlessMesh/releases/latest)
|
|
316
|
+
2. Download `painlessMesh-v1.8.3.zip` (or latest version)
|
|
317
|
+
3. In Arduino IDE: **Sketch** → **Include Library** → **Add .ZIP Library...**
|
|
318
|
+
4. Select the downloaded ZIP file
|
|
319
|
+
5. Restart Arduino IDE
|
|
320
|
+
|
|
321
|
+
**Option 2: Create ZIP from Repository**
|
|
322
|
+
|
|
323
|
+
If you need to create a ZIP file from source (e.g., for testing unreleased versions):
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
# Clone and create ZIP
|
|
327
|
+
git clone https://github.com/Alteriom/painlessMesh.git
|
|
328
|
+
cd painlessMesh
|
|
329
|
+
./scripts/create-arduino-zip.sh
|
|
330
|
+
|
|
331
|
+
# Output: dist/painlessMesh-vX.X.X.zip
|
|
332
|
+
# Import this ZIP in Arduino IDE
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
**Option 3: Git Clone**
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
cd ~/Arduino/libraries/
|
|
339
|
+
git clone https://github.com/Alteriom/painlessMesh.git AlteriomPainlessMesh
|
|
340
|
+
# Restart Arduino IDE
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
📖 **Detailed Guide**: See [Manual Arduino IDE Installation](docs/getting-started/arduino-manual-install.md) for complete instructions, troubleshooting, and ZIP creation details.
|
|
344
|
+
|
|
306
345
|
### PlatformIO
|
|
307
346
|
|
|
308
347
|
`painlessMesh` is included in both the Arduino Library Manager and the platformio library registry and can easily be installed via either of those methods.
|
|
@@ -493,7 +532,31 @@ These are the message types used by applications built on painlessMesh:
|
|
|
493
532
|
- **Event Coordination** - Synchronized displays, distributed processing
|
|
494
533
|
- **Bridge Networks** - Connect mesh to WiFi/Internet/MQTT - [📖 Bridge Guide](BRIDGE_TO_INTERNET.md)
|
|
495
534
|
|
|
496
|
-
## Latest Release: v1.8.
|
|
535
|
+
## Latest Release: v1.8.4 (November 12, 2025)
|
|
536
|
+
|
|
537
|
+
**Bridge Discovery Timing Fix for Instant Node Discovery**:
|
|
538
|
+
|
|
539
|
+
- 🚀 **Instant Bridge Discovery** - Bridge nodes now discoverable in <1 second (was up to 30 seconds)
|
|
540
|
+
- 🔧 **Immediate Status Broadcast** - Bridge sends status immediately on initialization
|
|
541
|
+
- 🔗 **Connection-Triggered Broadcast** - Status broadcast when new nodes join mesh
|
|
542
|
+
- ✅ **Fixes "No Primary Bridge Available"** - Eliminates discovery delays in bridge_failover example
|
|
543
|
+
- 🔧 **100% Backward Compatible** - No breaking changes, enhanced timing only
|
|
544
|
+
|
|
545
|
+
**[📋 Full Release Notes](docs/releases/RELEASE_NOTES_v1.8.4.md)** | **[📋 Full CHANGELOG](CHANGELOG.md)**
|
|
546
|
+
|
|
547
|
+
## Previous Release: v1.8.3 (November 11, 2025)
|
|
548
|
+
|
|
549
|
+
**ZIP File Integrity Fix for Arduino IDE Installation**:
|
|
550
|
+
|
|
551
|
+
- 🐛 **Critical Bug Fix** - Resolved Arduino IDE installation crashes caused by symlink in release archives
|
|
552
|
+
- 📦 **Clean ZIP Packages** - 50% smaller packages (420K) with only essential files
|
|
553
|
+
- 📝 **Version Documentation** - Added version timestamp to main header file
|
|
554
|
+
- ✅ **Verified Installation** - Tested and working in Arduino IDE "Add .ZIP Library"
|
|
555
|
+
- 🔧 **100% Backward Compatible** - No code changes, packaging fix only
|
|
556
|
+
|
|
557
|
+
**[📋 Full Release Notes](docs/releases/RELEASE_NOTES_v1.8.3.md)**
|
|
558
|
+
|
|
559
|
+
## Previous Release: v1.8.2 (November 11, 2025)
|
|
497
560
|
|
|
498
561
|
**Multi-Bridge Coordination & Message Queue for Critical Systems**:
|
|
499
562
|
|
|
@@ -502,9 +565,8 @@ These are the message types used by applications built on painlessMesh:
|
|
|
502
565
|
- ⚖️ **Three Load Balancing Strategies** - Priority-Based, Round-Robin, Best Signal (RSSI)
|
|
503
566
|
- 🛡️ **Production Ready** - Battle-tested features for critical deployments (Issues #65 & #66)
|
|
504
567
|
- 📊 **230+ New Test Assertions** - Comprehensive test coverage for both features
|
|
505
|
-
- 🔧 **100% Backward Compatible** - Optional features, no breaking changes
|
|
506
568
|
|
|
507
|
-
**[📋 Full
|
|
569
|
+
**[📋 Full Release Notes](docs/releases/RELEASE_NOTES_v1.8.2.md)**
|
|
508
570
|
|
|
509
571
|
## Previous Release: v1.8.1 (November 10, 2025)
|
|
510
572
|
|
|
@@ -516,7 +578,7 @@ These are the message types used by applications built on painlessMesh:
|
|
|
516
578
|
- 🔧 **Zero Breaking Changes** - Purely additive developer experience improvements
|
|
517
579
|
- 📖 **Complete Documentation** - Agent setup guides and knowledge sources
|
|
518
580
|
|
|
519
|
-
**[📋 Full Release Notes](RELEASE_NOTES_v1.8.1.md)**
|
|
581
|
+
**[📋 Full Release Notes](docs/releases/RELEASE_NOTES_v1.8.1.md)**
|
|
520
582
|
|
|
521
583
|
## Previous Release: v1.8.0 (November 9, 2025)
|
|
522
584
|
|
|
@@ -528,7 +590,7 @@ These are the message types used by applications built on painlessMesh:
|
|
|
528
590
|
- 🔄 **Bridge Failover** - Automatic bridge election and high availability
|
|
529
591
|
- ⚡ **Production Ready** - All features tested, documented, and backward compatible
|
|
530
592
|
|
|
531
|
-
**[📋 Full Release Notes](RELEASE_NOTES_v1.8.0.md)**
|
|
593
|
+
**[📋 Full Release Notes](docs/releases/RELEASE_NOTES_v1.8.0.md)**
|
|
532
594
|
|
|
533
595
|
## Getting Help
|
|
534
596
|
|
|
@@ -629,10 +691,11 @@ We try to follow the [git flow](https://www.atlassian.com/git/tutorials/comparin
|
|
|
629
691
|
|
|
630
692
|
## Funding
|
|
631
693
|
|
|
632
|
-
If you like the library please consider
|
|
633
|
-
|
|
694
|
+
If you like the library please consider supporting its development. Your contributions help me spend more time improving painlessMesh.
|
|
695
|
+
|
|
696
|
+
[](https://www.paypal.com/paypalme/domlavoie)
|
|
634
697
|
|
|
635
|
-
[
|
|
698
|
+
**[Donate via PayPal](https://www.paypal.com/paypalme/domlavoie)** • [dominic.lavoie@gmail.com](mailto:dominic.lavoie@gmail.com)
|
|
636
699
|
|
|
637
700
|
## 📚 Complete Documentation
|
|
638
701
|
|
package/RELEASE_GUIDE.md
CHANGED
|
@@ -217,38 +217,79 @@ pio pkg publish .
|
|
|
217
217
|
|
|
218
218
|
## 🛠️ Arduino Library Manager
|
|
219
219
|
|
|
220
|
+
### ✅ IMPORTANT: Library Name Fixed
|
|
221
|
+
|
|
222
|
+
**Current Status**: ✅ **REGISTERED AND FIXED**
|
|
223
|
+
|
|
224
|
+
The library IS registered in the Arduino Library Manager. The issue was a library name change that prevented new versions from being indexed.
|
|
225
|
+
|
|
226
|
+
**Issue Resolved**: Library name in `library.properties` has been restored to match the original registration.
|
|
227
|
+
|
|
228
|
+
**Result**: New releases will now be automatically indexed by Arduino Library Manager within 24-48 hours.
|
|
229
|
+
|
|
220
230
|
### One-Time Submission Process
|
|
221
231
|
|
|
222
|
-
|
|
232
|
+
**This must be done once** to enable Arduino IDE installation:
|
|
223
233
|
|
|
224
234
|
1. **Go to**: https://github.com/arduino/library-registry
|
|
225
|
-
2. **
|
|
235
|
+
2. **Click**: "Issues" → "New Issue"
|
|
236
|
+
3. **Create issue** with this template:
|
|
226
237
|
|
|
227
|
-
```
|
|
228
|
-
Title: Add
|
|
238
|
+
```markdown
|
|
239
|
+
Title: Add AlteriomPainlessMesh library
|
|
229
240
|
|
|
230
241
|
Repository URL: https://github.com/Alteriom/painlessMesh
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
242
|
+
Library Name: AlteriomPainlessMesh
|
|
243
|
+
Current Version: 1.8.2
|
|
244
|
+
Release Tag: v1.8.2
|
|
245
|
+
|
|
246
|
+
Description:
|
|
247
|
+
AlteriomPainlessMesh is a user-friendly library for creating mesh networks
|
|
248
|
+
with ESP8266 and ESP32 devices. Enhanced fork of painlessMesh with:
|
|
249
|
+
|
|
250
|
+
- SensorPackage (Type 200): Environmental data collection
|
|
251
|
+
- StatusPackage (Type 202): Device health monitoring
|
|
252
|
+
- CommandPackage (Type 400): Remote device control
|
|
253
|
+
- MetricsPackage (Type 204): Performance metrics
|
|
254
|
+
- HealthCheckPackage (Type 605): Proactive monitoring
|
|
255
|
+
- Bridge Coordination: Multi-bridge high availability
|
|
256
|
+
- Message Queue: Offline message queueing
|
|
257
|
+
|
|
258
|
+
Category: Communication
|
|
259
|
+
Architectures: esp8266, esp32
|
|
260
|
+
Dependencies: ArduinoJson (^7.4.2), TaskScheduler (^4.0.0)
|
|
261
|
+
License: LGPL-3.0
|
|
262
|
+
Documentation: https://alteriom.github.io/painlessMesh/
|
|
263
|
+
|
|
264
|
+
All Arduino requirements met. Ready for indexing.
|
|
238
265
|
```
|
|
239
266
|
|
|
240
|
-
|
|
241
|
-
|
|
267
|
+
4. **Monitor** the issue for Arduino team approval (1-2 weeks typical)
|
|
268
|
+
5. **Verify** registration via Arduino IDE Library Manager search
|
|
269
|
+
6. **Future releases** automatically indexed (24-48 hour delay)
|
|
270
|
+
|
|
271
|
+
### Detailed Submission Guide
|
|
272
|
+
|
|
273
|
+
For complete instructions, see: [docs/ARDUINO_LIBRARY_MANAGER_SUBMISSION.md](docs/ARDUINO_LIBRARY_MANAGER_SUBMISSION.md)
|
|
274
|
+
|
|
275
|
+
The guide includes:
|
|
276
|
+
- Pre-submission checklist
|
|
277
|
+
- Detailed submission template
|
|
278
|
+
- Testing procedures
|
|
279
|
+
- Troubleshooting common issues
|
|
280
|
+
- Post-registration maintenance
|
|
242
281
|
|
|
243
282
|
### Arduino Library Compliance
|
|
244
283
|
|
|
245
284
|
The library meets all Arduino Library Manager requirements:
|
|
246
285
|
- ✅ Correct directory structure
|
|
247
|
-
- ✅ Valid `library.properties` file
|
|
286
|
+
- ✅ Valid `library.properties` file (version=1.8.2)
|
|
248
287
|
- ✅ Source files in `src/` directory
|
|
249
|
-
- ✅ Examples compile successfully
|
|
250
|
-
- ✅ Consistent version numbering
|
|
288
|
+
- ✅ Examples compile successfully (19+ examples)
|
|
289
|
+
- ✅ Consistent version numbering across files
|
|
251
290
|
- ✅ Open source license (LGPL-3.0)
|
|
291
|
+
- ✅ Git tags match library versions
|
|
292
|
+
- ✅ Comprehensive documentation
|
|
252
293
|
|
|
253
294
|
## 📚 GitHub Wiki Management
|
|
254
295
|
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
# Arduino Library Manager Submission Guide
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This document explains the Arduino Library Manager indexing issue and provides the solution to restore automatic version updates.
|
|
6
|
+
|
|
7
|
+
## Current Status
|
|
8
|
+
|
|
9
|
+
**Status**: ✅ **Already registered** in Arduino Library Manager
|
|
10
|
+
**Issue**: New releases (v1.7.0 - v1.8.2) not being indexed
|
|
11
|
+
**Last Indexed Version**: 1.6.1
|
|
12
|
+
**Repository**: https://github.com/Alteriom/painlessMesh
|
|
13
|
+
|
|
14
|
+
## Problem Statement
|
|
15
|
+
|
|
16
|
+
Users report that the Arduino IDE:
|
|
17
|
+
- Shows old version (1.6.1) instead of current version (1.8.2)
|
|
18
|
+
- Does not detect new releases (v1.7.0 through v1.8.2)
|
|
19
|
+
- Cannot update to newer versions via Library Manager
|
|
20
|
+
- Has issues when trying to add the library as a ZIP file
|
|
21
|
+
|
|
22
|
+
## Root Cause **[RESOLVED]**
|
|
23
|
+
|
|
24
|
+
The library name in `library.properties` was changed between v1.6.1 and v1.7.0:
|
|
25
|
+
|
|
26
|
+
- **v1.6.1**: `name=Alteriom PainlessMesh` (with space)
|
|
27
|
+
- **v1.7.0+**: `name=AlteriomPainlessMesh` (no space)
|
|
28
|
+
|
|
29
|
+
**Arduino Library Manager requires the library name to remain consistent.** When the name changed, the indexer treated it as a completely different library and stopped indexing new releases under the original name.
|
|
30
|
+
|
|
31
|
+
The library IS registered at: https://github.com/arduino/library-registry (entry: `https://github.com/Alteriom/painlessMesh`)
|
|
32
|
+
|
|
33
|
+
## Solution **[IMPLEMENTED]**
|
|
34
|
+
|
|
35
|
+
Revert the library name in `library.properties` back to the original format with a space:
|
|
36
|
+
|
|
37
|
+
```properties
|
|
38
|
+
name=Alteriom PainlessMesh
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
This will allow Arduino Library Manager to resume indexing new releases as updates to the existing library entry.
|
|
42
|
+
|
|
43
|
+
## Solution: Submit to Arduino Library Registry
|
|
44
|
+
|
|
45
|
+
### Prerequisites Check ✅
|
|
46
|
+
|
|
47
|
+
Before submission, verify that the library meets all Arduino Library Manager requirements.
|
|
48
|
+
|
|
49
|
+
**Automated Validation**:
|
|
50
|
+
|
|
51
|
+
Run the validation script to check all requirements:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
./scripts/validate-arduino-compliance.sh
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
This script verifies:
|
|
58
|
+
|
|
59
|
+
- ✅ **library.properties file**: Present and properly formatted
|
|
60
|
+
- ✅ **Version field**: Set to 1.8.2
|
|
61
|
+
- ✅ **src/ directory**: Contains all library source code
|
|
62
|
+
- ✅ **examples/ directory**: Contains working example sketches (29+ examples)
|
|
63
|
+
- ✅ **Valid license**: LGPL-3.0 (open source)
|
|
64
|
+
- ✅ **README.md**: Comprehensive documentation
|
|
65
|
+
- ✅ **Git tags**: Releases are properly tagged (v1.8.2, etc.)
|
|
66
|
+
- ✅ **GitHub repository**: Public and accessible
|
|
67
|
+
- ✅ **Library name**: Unique (AlteriomPainlessMesh)
|
|
68
|
+
- ✅ **Version consistency**: All package files have matching versions
|
|
69
|
+
- ✅ **Header files**: Present in src/ directory
|
|
70
|
+
- ✅ **keywords.txt**: Present (optional but recommended)
|
|
71
|
+
|
|
72
|
+
**Current Status**: ✅ All checks passing
|
|
73
|
+
|
|
74
|
+
### library.properties Validation
|
|
75
|
+
|
|
76
|
+
Current library.properties contents:
|
|
77
|
+
|
|
78
|
+
```properties
|
|
79
|
+
name=AlteriomPainlessMesh
|
|
80
|
+
version=1.8.2
|
|
81
|
+
author=Coopdis,Scotty Franzyshen,Edwin van Leeuwen,Germán Martín,Maximilian Schwarz,Doanh Doanh,Alteriom
|
|
82
|
+
maintainer=Alteriom
|
|
83
|
+
sentence=A painless way to setup a mesh with ESP8266 and ESP32 devices with Alteriom extensions
|
|
84
|
+
paragraph=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.
|
|
85
|
+
category=Communication
|
|
86
|
+
url=https://github.com/Alteriom/painlessMesh
|
|
87
|
+
architectures=esp8266,esp32
|
|
88
|
+
includes=painlessMesh.h
|
|
89
|
+
depends=ArduinoJson, TaskScheduler
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Status**: ✅ All required fields present and properly formatted
|
|
93
|
+
|
|
94
|
+
### Submission Process
|
|
95
|
+
|
|
96
|
+
#### Step 1: Prepare Submission Information
|
|
97
|
+
|
|
98
|
+
Gather the following information for the submission:
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
Repository URL: https://github.com/Alteriom/painlessMesh
|
|
102
|
+
Library Name: AlteriomPainlessMesh
|
|
103
|
+
Current Version: 1.8.2
|
|
104
|
+
Latest Release Tag: v1.8.2
|
|
105
|
+
Category: Communication
|
|
106
|
+
Architectures: ESP8266, ESP32
|
|
107
|
+
Dependencies: ArduinoJson, TaskScheduler
|
|
108
|
+
License: LGPL-3.0
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
#### Step 2: Create Submission Issue
|
|
112
|
+
|
|
113
|
+
1. Go to: https://github.com/arduino/library-registry
|
|
114
|
+
2. Click on "Issues" tab
|
|
115
|
+
3. Click "New Issue"
|
|
116
|
+
4. Use the template below:
|
|
117
|
+
|
|
118
|
+
```markdown
|
|
119
|
+
## Add AlteriomPainlessMesh to Arduino Library Manager
|
|
120
|
+
|
|
121
|
+
**Repository URL**: https://github.com/Alteriom/painlessMesh
|
|
122
|
+
|
|
123
|
+
**Library Name**: AlteriomPainlessMesh
|
|
124
|
+
|
|
125
|
+
**Current Version**: 1.8.2
|
|
126
|
+
|
|
127
|
+
**Release Tag**: v1.8.2
|
|
128
|
+
|
|
129
|
+
**Description**:
|
|
130
|
+
AlteriomPainlessMesh is a user-friendly library for creating mesh networks with ESP8266 and ESP32 devices. This is an enhanced fork of the original painlessMesh library with additional features:
|
|
131
|
+
|
|
132
|
+
- **SensorPackage** (Type 200): Environmental data collection with temperature, humidity, pressure monitoring
|
|
133
|
+
- **StatusPackage** (Type 202): Device health monitoring with memory, uptime, and WiFi metrics
|
|
134
|
+
- **CommandPackage** (Type 400): Remote device control and automation
|
|
135
|
+
- **MetricsPackage** (Type 204): Comprehensive performance metrics for dashboards
|
|
136
|
+
- **HealthCheckPackage** (Type 605): Proactive problem detection and predictive maintenance
|
|
137
|
+
- **Bridge Coordination** (Type 613): Multi-bridge support for high availability
|
|
138
|
+
- **Message Queue**: Offline message queuing for critical sensor data
|
|
139
|
+
|
|
140
|
+
The library handles mesh routing and network management automatically, uses JSON-based messaging, and syncs time across all nodes. Ideal for IoT sensor networks, smart agriculture, home automation, and industrial monitoring.
|
|
141
|
+
|
|
142
|
+
**Category**: Communication
|
|
143
|
+
|
|
144
|
+
**Architectures**: esp8266, esp32
|
|
145
|
+
|
|
146
|
+
**Dependencies**:
|
|
147
|
+
- ArduinoJson (^7.4.2)
|
|
148
|
+
- TaskScheduler (^4.0.0)
|
|
149
|
+
|
|
150
|
+
**License**: LGPL-3.0
|
|
151
|
+
|
|
152
|
+
**Documentation**: https://alteriom.github.io/painlessMesh/
|
|
153
|
+
|
|
154
|
+
**Maintainer**: Alteriom (https://github.com/Alteriom)
|
|
155
|
+
|
|
156
|
+
**Additional Information**:
|
|
157
|
+
- Comprehensive CI/CD with automated testing
|
|
158
|
+
- 19+ working examples included
|
|
159
|
+
- 710+ unit tests passing
|
|
160
|
+
- Active maintenance and regular releases
|
|
161
|
+
- PlatformIO Registry: https://registry.platformio.org/libraries/sparck75/AlteriomPainlessMesh
|
|
162
|
+
- NPM Package: https://www.npmjs.com/package/@alteriom/painlessmesh
|
|
163
|
+
|
|
164
|
+
This library is ready for Arduino Library Manager indexing. All requirements are met:
|
|
165
|
+
- ✅ Valid library.properties file
|
|
166
|
+
- ✅ Proper directory structure (src/, examples/)
|
|
167
|
+
- ✅ Semantic versioning with git tags
|
|
168
|
+
- ✅ Open source license
|
|
169
|
+
- ✅ Examples compile successfully
|
|
170
|
+
- ✅ Comprehensive documentation
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
#### Step 3: Wait for Review
|
|
174
|
+
|
|
175
|
+
The Arduino team will review the submission:
|
|
176
|
+
|
|
177
|
+
1. **Automated checks**: The Arduino bot will validate the repository structure
|
|
178
|
+
2. **Manual review**: Arduino team will verify library quality
|
|
179
|
+
3. **Approval**: If everything is correct, the library will be added to `repositories.txt`
|
|
180
|
+
4. **Indexing**: The Arduino Library Manager will start indexing new releases
|
|
181
|
+
|
|
182
|
+
**Expected Timeline**: 1-2 weeks (can be longer depending on queue)
|
|
183
|
+
|
|
184
|
+
#### Step 4: Verify Registration
|
|
185
|
+
|
|
186
|
+
Once approved, verify the library is accessible:
|
|
187
|
+
|
|
188
|
+
1. Open Arduino IDE
|
|
189
|
+
2. Go to: Sketch → Include Library → Manage Libraries
|
|
190
|
+
3. Search for "AlteriomPainlessMesh"
|
|
191
|
+
4. Verify version 1.8.2 (or latest) appears
|
|
192
|
+
5. Test installation
|
|
193
|
+
|
|
194
|
+
### Alternative: Direct Pull Request (Advanced)
|
|
195
|
+
|
|
196
|
+
If you prefer to submit via pull request:
|
|
197
|
+
|
|
198
|
+
1. Fork: https://github.com/arduino/library-registry
|
|
199
|
+
2. Edit `repositories.txt`
|
|
200
|
+
3. Add line: `https://github.com/Alteriom/painlessMesh`
|
|
201
|
+
4. Create pull request with description
|
|
202
|
+
5. Wait for review and merge
|
|
203
|
+
|
|
204
|
+
**Note**: The issue submission method is recommended for first-time submissions.
|
|
205
|
+
|
|
206
|
+
## Post-Registration
|
|
207
|
+
|
|
208
|
+
### Automatic Updates
|
|
209
|
+
|
|
210
|
+
Once registered, future releases will be automatically indexed:
|
|
211
|
+
|
|
212
|
+
1. Create new release on GitHub with semantic version tag (e.g., v1.8.3)
|
|
213
|
+
2. Update `library.properties`, `library.json`, `package.json` versions
|
|
214
|
+
3. Arduino Library Manager automatically detects new releases
|
|
215
|
+
4. Users can update via Library Manager
|
|
216
|
+
|
|
217
|
+
**Update Frequency**: Arduino Library Manager checks for updates every 24-48 hours
|
|
218
|
+
|
|
219
|
+
### Maintenance
|
|
220
|
+
|
|
221
|
+
To ensure continued compatibility:
|
|
222
|
+
|
|
223
|
+
- Keep `library.properties` version in sync with git tags
|
|
224
|
+
- Follow semantic versioning (MAJOR.MINOR.PATCH)
|
|
225
|
+
- Test examples before each release
|
|
226
|
+
- Update CHANGELOG.md with changes
|
|
227
|
+
- Maintain backward compatibility when possible
|
|
228
|
+
|
|
229
|
+
## Testing Library Manager Installation
|
|
230
|
+
|
|
231
|
+
Once registered, test the installation process:
|
|
232
|
+
|
|
233
|
+
### Test 1: Fresh Installation
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
1. Open Arduino IDE
|
|
237
|
+
2. Sketch → Include Library → Manage Libraries
|
|
238
|
+
3. Search: "AlteriomPainlessMesh"
|
|
239
|
+
4. Click "Install"
|
|
240
|
+
5. Verify installation completes
|
|
241
|
+
6. Check: Tools → Manage Libraries → Installed
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Test 2: Example Compilation
|
|
245
|
+
|
|
246
|
+
```
|
|
247
|
+
1. File → Examples → AlteriomPainlessMesh → basic
|
|
248
|
+
2. Select board: ESP32 Dev Module or ESP8266 board
|
|
249
|
+
3. Verify/Compile sketch
|
|
250
|
+
4. Confirm compilation succeeds
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### Test 3: Update Detection
|
|
254
|
+
|
|
255
|
+
```
|
|
256
|
+
1. Release new version (e.g., v1.8.3)
|
|
257
|
+
2. Wait 24-48 hours for indexing
|
|
258
|
+
3. Open Library Manager
|
|
259
|
+
4. Search: "AlteriomPainlessMesh"
|
|
260
|
+
5. Verify "Update" button appears
|
|
261
|
+
6. Click Update and verify installation
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
## Troubleshooting
|
|
265
|
+
|
|
266
|
+
### Library Not Appearing in Manager
|
|
267
|
+
|
|
268
|
+
**Cause**: Not yet indexed or submission not approved
|
|
269
|
+
**Solution**:
|
|
270
|
+
- Check submission issue status
|
|
271
|
+
- Wait 24-48 hours after approval
|
|
272
|
+
- Verify `library.properties` has correct format
|
|
273
|
+
|
|
274
|
+
### Version Not Updating
|
|
275
|
+
|
|
276
|
+
**Cause**: Git tag doesn't match library.properties version
|
|
277
|
+
**Solution**:
|
|
278
|
+
- Ensure version in library.properties matches git tag
|
|
279
|
+
- Example: library.properties has `version=1.8.2` → git tag must be `v1.8.2`
|
|
280
|
+
- Push corrected tag to GitHub
|
|
281
|
+
|
|
282
|
+
### Compilation Errors in Library Manager
|
|
283
|
+
|
|
284
|
+
**Cause**: Missing dependencies or platform-specific issues
|
|
285
|
+
**Solution**:
|
|
286
|
+
- Verify `depends=` field in library.properties lists all dependencies
|
|
287
|
+
- Test compilation on target platforms before release
|
|
288
|
+
- Check Arduino forum for reported issues
|
|
289
|
+
|
|
290
|
+
### Old Version Showing (1.6.1 Issue)
|
|
291
|
+
|
|
292
|
+
**Cause**: Library not properly registered or name conflict
|
|
293
|
+
**Solution**:
|
|
294
|
+
- Complete Arduino Library Manager registration
|
|
295
|
+
- Verify library name is unique
|
|
296
|
+
- Check if old library version exists under different name
|
|
297
|
+
|
|
298
|
+
## Reference Links
|
|
299
|
+
|
|
300
|
+
- **Arduino Library Manager**: https://www.arduino.cc/reference/en/libraries/
|
|
301
|
+
- **Library Registry**: https://github.com/arduino/library-registry
|
|
302
|
+
- **Submission Guide**: https://support.arduino.cc/hc/en-us/articles/360012175419
|
|
303
|
+
- **Library Specification**: https://arduino.github.io/arduino-cli/latest/library-specification/
|
|
304
|
+
- **Library Manager FAQ**: https://support.arduino.cc/hc/en-us/articles/360016077340
|
|
305
|
+
|
|
306
|
+
## Support
|
|
307
|
+
|
|
308
|
+
If you encounter issues with the Arduino Library Manager submission:
|
|
309
|
+
|
|
310
|
+
1. **Check Documentation**: Review Arduino's official library submission guide
|
|
311
|
+
2. **Search Issues**: Look for similar submissions in arduino/library-registry issues
|
|
312
|
+
3. **Ask Arduino Forum**: Post questions in Arduino's library development forum
|
|
313
|
+
4. **Contact Maintainer**: Open issue in this repository for help
|
|
314
|
+
|
|
315
|
+
## Summary
|
|
316
|
+
|
|
317
|
+
**Action Required**: Submit the library to Arduino Library Manager registry
|
|
318
|
+
|
|
319
|
+
**Method**: Create issue at https://github.com/arduino/library-registry
|
|
320
|
+
|
|
321
|
+
**Expected Result**: Library becomes installable via Arduino IDE's Library Manager
|
|
322
|
+
|
|
323
|
+
**Timeline**: 1-2 weeks for review and approval
|
|
324
|
+
|
|
325
|
+
**Maintenance**: Future releases automatically indexed every 24-48 hours
|
|
326
|
+
|
|
327
|
+
Once registered, users will be able to:
|
|
328
|
+
- ✅ Search for "AlteriomPainlessMesh" in Arduino IDE
|
|
329
|
+
- ✅ Install with one click
|
|
330
|
+
- ✅ Update to latest versions automatically
|
|
331
|
+
- ✅ Access library documentation and examples
|