@alteriom/painlessmesh 1.8.14 → 1.9.0
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/BRIDGE_TO_INTERNET.md +229 -0
- package/CHANGELOG.md +89 -1
- package/CONTRIBUTING.md +79 -0
- package/README.md +70 -143
- package/docs/README.md +1 -0
- package/docs/api/shared-gateway.md +1207 -0
- package/docs/troubleshooting/common-issues.md +28 -0
- package/docs/troubleshooting/faq.md +113 -12
- package/examples/basic/test/simulator/CMakeLists.txt +40 -0
- package/examples/basic/test/simulator/README.md +149 -0
- package/examples/basic/test/simulator/firmware/basic_firmware.hpp +117 -0
- package/examples/basic/test/simulator/scenarios/basic_mesh_test.yaml +81 -0
- package/examples/bridge/bridge.ino +17 -4
- package/examples/bridge_failover/README.md +81 -0
- package/examples/bridge_failover/bridge_failover.ino +51 -6
- package/examples/sharedGateway/README.md +235 -0
- package/examples/{meshCommandNode → sharedGateway}/platformio.ini +3 -2
- package/examples/sharedGateway/sharedGateway.ino +303 -0
- package/library.json +3 -22
- package/library.properties +1 -1
- package/package.json +3 -3
- package/src/arduino/wifi.hpp +380 -13
- package/src/painlessmesh/gateway.hpp +2120 -0
- package/src/painlessmesh/mesh.hpp +1034 -6
- package/src/painlessmesh/message_tracker.hpp +311 -0
- package/src/painlessmesh/protocol.hpp +6 -0
- package/DOCUMENTATION_INDEX.md +0 -146
- package/docs/API_DESIGN_GUIDELINES.md +0 -414
- package/docs/ARDUINO_LIBRARY_MANAGER_SUBMISSION.md +0 -331
- package/docs/BOOLEAN_NAMING_CONVENTION.md +0 -235
- package/docs/BRIDGE_FAILOVER.md +0 -512
- package/docs/BRIDGE_HEALTH_MONITORING.md +0 -293
- package/docs/CHANNEL_SYNCHRONIZATION.md +0 -209
- package/docs/CREATE_MISSING_RELEASES.md +0 -321
- package/docs/DOCUMENTATION_MIGRATION_PLAN.md +0 -176
- package/docs/FAQ_VERSION_NUMBERS.md +0 -152
- package/docs/IMPLEMENTATION_PLAN_MESH_TOPOLOGY.md +0 -1062
- package/docs/MESH_TOPOLOGY_GUIDE.md +0 -992
- package/docs/MESH_TOPOLOGY_PROGRESS.md +0 -422
- package/docs/MQTT_BRIDGE_COMMANDS.md +0 -894
- package/docs/MQTT_BRIDGE_IMPLEMENTATION_SUMMARY.md +0 -324
- package/docs/MQTT_COMMAND_SCHEMA_PROPOSAL.md +0 -576
- package/docs/MQTT_SCHEMA_COMPLIANCE.md +0 -340
- package/docs/MQTT_SCHEMA_PROPOSALS.md +0 -446
- package/docs/MQTT_SCHEMA_REVIEW.md +0 -690
- package/docs/OTA_COMMANDS_REFERENCE.md +0 -554
- package/docs/PHASE1_GUIDE.md +0 -349
- package/docs/PHASE2_GUIDE.md +0 -543
- package/docs/QUICK_REFERENCE_VERSIONING.md +0 -127
- package/docs/RELEASE_AGENT_SUMMARY.md +0 -386
- package/docs/SCHEMA_VALIDATION_CHECKLIST.md +0 -222
- package/docs/VERSION_MANAGEMENT.md +0 -213
- package/docs/archive/DOCUSAURUS_DEPLOYMENT.md +0 -166
- package/docs/archive/FEATURE_PROPOSALS.md +0 -337
- package/docs/archive/LIBRARY_JSON_FIX.md +0 -98
- package/docs/archive/LIBRARY_STRUCTURE_FIX.md +0 -215
- package/docs/archive/PHASE1_IMPLEMENTATION.md +0 -325
- package/docs/archive/PHASE2_IMPLEMENTATION.md +0 -567
- package/docs/archive/RELEASE_SUMMARY.md +0 -173
- package/docs/archive/SCONS_BUILD_FIX.md +0 -313
- package/docs/archive/TRIGGER_RELEASE.md +0 -280
- package/docs/archive/VECTOR_INCLUDE_FIX.md +0 -129
- package/docs/archive/ota-and-status-enhancements.md +0 -911
- package/docs/archive/ota-status-architecture-diagrams.md +0 -658
- package/docs/archive/ota-status-quick-reference.md +0 -284
- package/docs/design/.gitkeep +0 -1
- package/docs/design/STATION_CREDENTIALS_DESIGN.md +0 -182
- package/docs/development/ARDUINO_COMPLIANCE_SUMMARY.md +0 -71
- package/docs/development/CODE_REFACTORING_RECOMMENDATIONS.md +0 -1011
- package/docs/development/DOCKER_TESTING.md +0 -196
- package/docs/development/PLATFORMIO_USAGE.md +0 -180
- package/docs/development/TESTING_SUMMARY.md +0 -126
- package/docs/development/contributing.md +0 -301
- package/docs/development/documentation.md +0 -583
- package/docs/features/DIAGNOSTICS_API.md +0 -534
- package/docs/implementation/BRIDGE_ARCHITECTURE_IMPLEMENTATION.md +0 -340
- package/docs/implementation/BRIDGE_HEALTH_MONITORING_IMPLEMENTATION.md +0 -213
- package/docs/implementation/BRIDGE_STATUS_FEATURE.md +0 -635
- package/docs/implementation/DIAGNOSTICS_API_IMPLEMENTATION.md +0 -232
- package/docs/implementation/IMPLEMENTATION_COMPLETE.md +0 -228
- package/docs/implementation/IMPLEMENTATION_NTP_TIME_SYNC.md +0 -325
- package/docs/implementation/IMPLEMENTATION_SUMMARY.md +0 -316
- package/docs/implementation/MESSAGE_QUEUE_IMPLEMENTATION.md +0 -405
- package/docs/implementation/MULTI_BRIDGE_IMPLEMENTATION.md +0 -520
- package/docs/implementation/NTP_TIME_SYNC_FEATURE.md +0 -392
- package/docs/improvements/FUTURE_PROPOSALS.md +0 -1016
- package/docs/improvements/IMPLEMENTATION_HISTORY.md +0 -1091
- package/docs/improvements/OTA_STATUS_ENHANCEMENTS.md +0 -709
- package/docs/improvements/README.md +0 -212
- package/docs/internal/CUSTOM_AGENT_ANALYSIS.md +0 -391
- package/docs/internal/ISSUE_65_VERIFICATION.md +0 -947
- package/docs/internal/ISSUE_66_CLOSURE.md +0 -249
- package/docs/internal/ISSUE_66_STATUS.md +0 -316
- package/docs/internal/PR_SUMMARY.md +0 -315
- package/docs/internal/REVIEW_SUMMARY.md +0 -332
- package/docs/multi-bridge-setup.md +0 -1025
- package/docs/platformio-publishing.md +0 -255
- package/docs/platformio-setup-summary.md +0 -121
- package/docs/releases/ANNOUNCEMENT_v1.8.6.md +0 -63
- package/docs/releases/ANNOUNCEMENT_v1.8.7.md +0 -113
- package/docs/releases/BRIDGE_STATUS_SELF_REGISTRATION_FIX.md +0 -221
- package/docs/releases/FEATURE_HISTORY.md +0 -543
- package/docs/releases/GITHUB_RELEASE_v1.8.6.md +0 -71
- package/docs/releases/GITHUB_RELEASE_v1.8.7.md +0 -90
- package/docs/releases/PATCH_v1.7.2.md +0 -262
- package/docs/releases/PATCH_v1.7.3.md +0 -262
- package/docs/releases/PATCH_v1.7.4.md +0 -219
- package/docs/releases/PHASE1_SUMMARY.md +0 -246
- package/docs/releases/PHASE2_SUMMARY.md +0 -499
- package/docs/releases/PUBLISH_v1.8.0_INSTRUCTIONS.md +0 -163
- package/docs/releases/QUICK_START_RELEASES.md +0 -113
- package/docs/releases/RELEASE_CHECKLIST_1.8.10.md +0 -331
- package/docs/releases/RELEASE_CHECKLIST_1.8.9.md +0 -207
- package/docs/releases/RELEASE_CHECKLIST_v1.7.4.md +0 -253
- package/docs/releases/RELEASE_CHECKLIST_v1.7.5.md +0 -315
- package/docs/releases/RELEASE_CHECKLIST_v1.7.6.md +0 -389
- package/docs/releases/RELEASE_CHECKLIST_v1.8.0.md +0 -331
- package/docs/releases/RELEASE_CHECKLIST_v1.8.2.md +0 -309
- package/docs/releases/RELEASE_NOTES_1.7.0.md +0 -539
- package/docs/releases/RELEASE_NOTES_1.8.10.md +0 -239
- package/docs/releases/RELEASE_NOTES_1.8.9.md +0 -213
- package/docs/releases/RELEASE_NOTES_v1.8.0.md +0 -685
- package/docs/releases/RELEASE_NOTES_v1.8.1.md +0 -221
- package/docs/releases/RELEASE_NOTES_v1.8.2.md +0 -421
- package/docs/releases/RELEASE_NOTES_v1.8.3.md +0 -292
- package/docs/releases/RELEASE_NOTES_v1.8.4.md +0 -277
- package/docs/releases/RELEASE_NOTES_v1.8.6.md +0 -205
- package/docs/releases/RELEASE_NOTES_v1.8.7.md +0 -184
- package/docs/releases/RELEASE_PLAN_v1.7.6.md +0 -816
- package/docs/releases/RELEASE_SUMMARY_1.8.10.md +0 -193
- package/docs/releases/RELEASE_SUMMARY_v1.7.4.md +0 -276
- package/docs/releases/RELEASE_SUMMARY_v1.7.5.md +0 -322
- package/docs/releases/RELEASE_SUMMARY_v1.7.6.md +0 -436
- package/docs/releases/RELEASE_SUMMARY_v1.7.7.md +0 -391
- package/docs/releases/RELEASE_SUMMARY_v1.7.8.md +0 -523
- package/docs/releases/RELEASE_SUMMARY_v1.7.9.md +0 -542
- package/docs/troubleshooting/ARDUINO_IDE_VERSION_FIX_SUMMARY.md +0 -229
- package/docs/troubleshooting/ARDUINO_LIBRARY_NAME_FIX.md +0 -197
- package/docs/troubleshooting/CRASH_QUICK_REF.md +0 -93
- package/docs/troubleshooting/ESP32_C6_COMPATIBILITY.md +0 -157
- package/docs/troubleshooting/FREERTOS_ASSERTION_FAILURE.md +0 -288
- package/docs/troubleshooting/FREERTOS_FIX_IMPLEMENTATION.md +0 -267
- package/docs/troubleshooting/NPM_PUBLISHING_ISSUE_SUMMARY.md +0 -110
- package/docs/troubleshooting/PAINLESSMESH_V1.7.4_COMPILATION_ISSUES.md +0 -547
- package/docs/troubleshooting/QUICK_FIX_FREERTOS.md +0 -164
- package/docs/troubleshooting/SENSOR_NODE_CONNECTION_CRASH.md +0 -264
- package/docs/troubleshooting/station-reconnection-issues.md +0 -172
- package/docs/v1.7.7_MQTT_IMPROVEMENTS.md +0 -794
- package/docs/wiki/API-Reference.md +0 -246
- package/docs/wiki/Complete-Documentation.md +0 -123
- package/examples/alteriomImproved/alteriom_sensor_package.hpp +0 -224
- package/examples/alteriomImproved/improved_sensor_node.ino +0 -248
- package/examples/alteriomImproved/platformio.ini +0 -32
- package/examples/alteriomMetricsHealth/alteriom_sensor_package.hpp +0 -796
- package/examples/alteriomMetricsHealth/metrics_health_node.ino +0 -429
- package/examples/alteriomMetricsHealth/platformio.ini +0 -26
- package/examples/alteriomPhase1/alteriom_sensor_package.hpp +0 -224
- package/examples/alteriomPhase1/phase1_features.ino +0 -242
- package/examples/alteriomPhase1/platformio.ini +0 -26
- package/examples/alteriomPhase2/alteriom_sensor_package.hpp +0 -224
- package/examples/alteriomPhase2/phase2_features.ino +0 -186
- package/examples/alteriomPhase2/platformio.ini +0 -26
- package/examples/alteriomSensorNode/alteriom_sensor_node.ino +0 -186
- package/examples/alteriomSensorNode/alteriom_sensor_package.hpp +0 -1227
- package/examples/alteriomSensorNode/platformio.ini +0 -26
- package/examples/bridge/alteriom_sensor_package.hpp +0 -1170
- package/examples/bridge/bridge_health_monitoring_example.ino +0 -188
- package/examples/bridge/enhanced_mqtt_bridge.hpp +0 -610
- package/examples/bridge/enhanced_mqtt_bridge_example.ino +0 -226
- package/examples/bridge/mesh_event_publisher.hpp +0 -253
- package/examples/bridge/mesh_topology_reporter.hpp +0 -303
- package/examples/bridge/mqtt_command_bridge.hpp +0 -459
- package/examples/bridge/mqtt_status_bridge.hpp +0 -519
- package/examples/bridgeAwareSensorNode/alteriom_sensor_package.hpp +0 -1227
- package/examples/bridgeAwareSensorNode/bridgeAwareSensorNode.ino +0 -342
- package/examples/bridgeAwareSensorNode/platformio.ini +0 -26
- package/examples/diagnosticsExample/diagnosticsExample.ino +0 -171
- package/examples/diagnosticsExample/platformio.ini +0 -26
- package/examples/echoNode/echoNode.ino +0 -33
- package/examples/echoNode/platformio.ini +0 -26
- package/examples/meshCommandNode/alteriom_sensor_package.hpp +0 -235
- package/examples/meshCommandNode/meshCommandNode.ino +0 -265
- package/examples/mqttCommandBridge/alteriom_sensor_package.hpp +0 -235
- package/examples/mqttCommandBridge/mesh_event_publisher.hpp +0 -253
- package/examples/mqttCommandBridge/mesh_topology_reporter.hpp +0 -303
- package/examples/mqttCommandBridge/mqttCommandBridge.ino +0 -254
- package/examples/mqttCommandBridge/mqtt_command_bridge.hpp +0 -462
- package/examples/mqttCommandBridge/platformio.ini +0 -27
- package/examples/mqttStatusBridge/mqttStatusBridge.ino +0 -218
- package/examples/mqttStatusBridge/mqtt_status_bridge.hpp +0 -522
- package/examples/mqttStatusBridge/platformio.ini +0 -27
- package/examples/mqttTopologyTest/README.md +0 -467
- package/examples/mqttTopologyTest/mqttTopologyTest.ino +0 -754
- package/examples/mqttTopologyTest/platformio.ini +0 -27
- package/examples/multi_bridge/README.md +0 -346
- package/examples/multi_bridge/primary_bridge.ino +0 -96
- package/examples/multi_bridge/regular_node.ino +0 -141
- package/examples/multi_bridge/secondary_bridge.ino +0 -111
- package/examples/ntpTimeSyncBridge/alteriom_sensor_package.hpp +0 -1383
- package/examples/ntpTimeSyncBridge/ntpTimeSyncBridge.ino +0 -86
- package/examples/ntpTimeSyncNode/alteriom_sensor_package.hpp +0 -1383
- package/examples/ntpTimeSyncNode/ntpTimeSyncNode.ino +0 -109
- package/examples/queued_alarms/README.md +0 -390
- package/examples/queued_alarms/queued_alarms.ino +0 -265
- package/examples/routing_demo/README.md +0 -172
- package/examples/routing_demo/routing_demo.ino +0 -102
- package/examples/rtcIntegration/README.md +0 -294
- package/examples/rtcIntegration/rtcIntegration.ino +0 -210
|
@@ -1,331 +0,0 @@
|
|
|
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
|
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
# Boolean Field Naming Convention
|
|
2
|
-
|
|
3
|
-
**Related Issue**: #27
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
This document establishes the standard naming conventions for boolean fields in Alteriom packages, particularly in `StatusPackage`. Consistent naming patterns make the code self-documenting and help developers understand field semantics at a glance.
|
|
8
|
-
|
|
9
|
-
## Three Naming Patterns
|
|
10
|
-
|
|
11
|
-
### Pattern 1: `*Set` Suffix
|
|
12
|
-
|
|
13
|
-
**Purpose**: Indicates that required configuration data has been provided (typically for sensitive data like passwords or secrets).
|
|
14
|
-
|
|
15
|
-
**When to use**:
|
|
16
|
-
- Field represents whether configuration data exists
|
|
17
|
-
- Typically used for passwords, secrets, API keys, server URLs
|
|
18
|
-
- Does NOT indicate if the feature is active or working
|
|
19
|
-
|
|
20
|
-
**Examples**:
|
|
21
|
-
```cpp
|
|
22
|
-
bool deviceSecretSet = false; // Has device secret been configured?
|
|
23
|
-
bool wifiPasswordSet = false; // Has WiFi password been provided?
|
|
24
|
-
bool meshPasswordSet = false; // Has mesh password been provided?
|
|
25
|
-
bool otaServerSet = false; // Has OTA server URL been configured?
|
|
26
|
-
bool mqttBrokerSet = false; // Has MQTT broker been configured?
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
**Semantic meaning**:
|
|
30
|
-
- `true` = Configuration data has been provided
|
|
31
|
-
- `false` = Configuration data is missing or not yet provided
|
|
32
|
-
- Does NOT indicate the feature is enabled or currently working
|
|
33
|
-
|
|
34
|
-
### Pattern 2: `*Enabled` Suffix
|
|
35
|
-
|
|
36
|
-
**Purpose**: Indicates that a feature is currently active or turned on.
|
|
37
|
-
|
|
38
|
-
**When to use**:
|
|
39
|
-
- Field represents a feature toggle (on/off)
|
|
40
|
-
- User or system can enable/disable the feature
|
|
41
|
-
- Feature state is controllable and intentional
|
|
42
|
-
|
|
43
|
-
**Examples**:
|
|
44
|
-
```cpp
|
|
45
|
-
bool displayEnabled = false; // Is display feature enabled?
|
|
46
|
-
bool deepSleepEnabled = false; // Is deep sleep mode enabled?
|
|
47
|
-
bool mqttHourlyRetryEnabled = false; // Is hourly retry feature enabled?
|
|
48
|
-
bool otaEnabled = false; // Are OTA updates enabled?
|
|
49
|
-
bool encryptionEnabled = false; // Is data encryption enabled?
|
|
50
|
-
bool encodingEnabled = false; // Is data encoding enabled?
|
|
51
|
-
bool logTimestampEnabled = false; // Are log timestamps enabled?
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
**Semantic meaning**:
|
|
55
|
-
- `true` = Feature is currently active/turned on
|
|
56
|
-
- `false` = Feature is currently inactive/turned off
|
|
57
|
-
- Independent of whether required configuration exists
|
|
58
|
-
|
|
59
|
-
### Pattern 3: Runtime State (`is*` Prefix or `*Connected`)
|
|
60
|
-
|
|
61
|
-
**Purpose**: Indicates current runtime status or operational state (not configuration).
|
|
62
|
-
|
|
63
|
-
**When to use**:
|
|
64
|
-
- Field represents current operational status
|
|
65
|
-
- Status changes at runtime based on system behavior
|
|
66
|
-
- Not directly controlled by configuration
|
|
67
|
-
|
|
68
|
-
**Examples**:
|
|
69
|
-
```cpp
|
|
70
|
-
bool isConfigured = false; // Has device completed configuration?
|
|
71
|
-
bool mqttConnected = false; // Currently connected to MQTT broker?
|
|
72
|
-
bool meshIsRoot = false; // Is this node currently the mesh root?
|
|
73
|
-
bool isOnline = false; // Is device currently online?
|
|
74
|
-
bool wifiConnected = false; // Currently connected to WiFi?
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
**Semantic meaning**:
|
|
78
|
-
- `true` = Currently in this state
|
|
79
|
-
- `false` = Not currently in this state
|
|
80
|
-
- Reflects actual runtime conditions, not configuration
|
|
81
|
-
|
|
82
|
-
## Combining Patterns
|
|
83
|
-
|
|
84
|
-
A feature may legitimately have multiple boolean fields using different patterns:
|
|
85
|
-
|
|
86
|
-
### Example: OTA (Over-The-Air) Updates
|
|
87
|
-
|
|
88
|
-
```cpp
|
|
89
|
-
bool otaServerSet = false; // Has OTA server URL been configured? (*Set)
|
|
90
|
-
bool otaEnabled = false; // Are OTA updates enabled? (*Enabled)
|
|
91
|
-
bool otaInProgress = false; // Is an OTA update currently running? (is* / runtime state)
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
**Valid states**:
|
|
95
|
-
- `otaServerSet=true, otaEnabled=false` → Server configured but feature disabled
|
|
96
|
-
- `otaServerSet=false, otaEnabled=true` → Feature enabled but no server (invalid/warning state)
|
|
97
|
-
- `otaServerSet=true, otaEnabled=true` → Fully configured and active
|
|
98
|
-
- `otaServerSet=true, otaEnabled=true, otaInProgress=true` → Update in progress
|
|
99
|
-
|
|
100
|
-
### Example: MQTT Connection
|
|
101
|
-
|
|
102
|
-
```cpp
|
|
103
|
-
bool mqttBrokerSet = false; // Has MQTT broker been configured? (*Set)
|
|
104
|
-
bool mqttEnabled = false; // Is MQTT feature enabled? (*Enabled)
|
|
105
|
-
bool mqttConnected = false; // Currently connected to broker? (runtime state)
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
## Current StatusPackage Implementation
|
|
109
|
-
|
|
110
|
-
### Existing `*Set` Fields (Build 8057)
|
|
111
|
-
```cpp
|
|
112
|
-
bool deviceSecretSet = false; // Whether device secret is configured
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
**Potential additions** (if needed):
|
|
116
|
-
```cpp
|
|
117
|
-
bool wifiPasswordSet = false; // Whether WiFi password is configured
|
|
118
|
-
bool meshPasswordSet = false; // Whether mesh password is configured
|
|
119
|
-
bool mqttBrokerSet = false; // Whether MQTT broker is configured
|
|
120
|
-
bool otaServerSet = false; // Whether OTA server URL is configured
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### Existing `*Enabled` Fields
|
|
124
|
-
```cpp
|
|
125
|
-
bool displayEnabled = false; // Display feature enabled
|
|
126
|
-
bool deepSleepEnabled = false; // Deep sleep feature enabled
|
|
127
|
-
bool mqttHourlyRetryEnabled = false; // Hourly retry feature enabled
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
**Potential additions** (if needed):
|
|
131
|
-
```cpp
|
|
132
|
-
bool meshEnabled = false; // Is WiFi mesh feature enabled?
|
|
133
|
-
bool otaEnabled = false; // Are OTA updates enabled?
|
|
134
|
-
bool encryptionEnabled = false; // Is encryption enabled?
|
|
135
|
-
bool encodingEnabled = false; // Is data encoding enabled?
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### Potential Runtime State Fields
|
|
139
|
-
Currently, StatusPackage does not have explicit runtime state fields. If needed in the future:
|
|
140
|
-
|
|
141
|
-
```cpp
|
|
142
|
-
bool isConfigured = false; // Device has complete valid configuration
|
|
143
|
-
bool mqttConnected = false; // Currently connected to MQTT broker
|
|
144
|
-
bool meshIsRoot = false; // Currently acting as mesh root
|
|
145
|
-
bool wifiConnected = false; // Currently connected to WiFi
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
## Best Practices
|
|
149
|
-
|
|
150
|
-
### DO ✅
|
|
151
|
-
|
|
152
|
-
1. **Use `*Set` for configuration presence**
|
|
153
|
-
```cpp
|
|
154
|
-
bool deviceSecretSet = false; // ✅ Indicates if secret is configured
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
2. **Use `*Enabled` for feature toggles**
|
|
158
|
-
```cpp
|
|
159
|
-
bool displayEnabled = false; // ✅ Indicates if feature is on/off
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
3. **Use `is*` or `*Connected` for runtime state**
|
|
163
|
-
```cpp
|
|
164
|
-
bool isConfigured = false; // ✅ Indicates current state
|
|
165
|
-
bool mqttConnected = false; // ✅ Indicates connection status
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
4. **Document field purpose clearly**
|
|
169
|
-
```cpp
|
|
170
|
-
bool otaServerSet = false; // Has OTA server URL been configured? (Build XXXX)
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
### DON'T ❌
|
|
174
|
-
|
|
175
|
-
1. **Don't mix patterns without clear semantics**
|
|
176
|
-
```cpp
|
|
177
|
-
bool wifiSet = false; // ❌ Ambiguous - set to what? On/off or configured?
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
2. **Don't use generic boolean names**
|
|
181
|
-
```cpp
|
|
182
|
-
bool wifi = false; // ❌ Unclear meaning
|
|
183
|
-
bool display = false; // ❌ What about display?
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
3. **Don't use `*Set` for feature toggles**
|
|
187
|
-
```cpp
|
|
188
|
-
bool displaySet = false; // ❌ Confusing - use displayEnabled instead
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
4. **Don't use `*Enabled` for configuration presence**
|
|
192
|
-
```cpp
|
|
193
|
-
bool deviceSecretEnabled = false; // ❌ Confusing - use deviceSecretSet instead
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
## Validation
|
|
197
|
-
|
|
198
|
-
When adding new boolean fields, ask these questions:
|
|
199
|
-
|
|
200
|
-
1. **Does this field indicate configuration presence?**
|
|
201
|
-
- YES → Use `*Set` suffix
|
|
202
|
-
- Example: `mqttBrokerSet`, `deviceSecretSet`
|
|
203
|
-
|
|
204
|
-
2. **Does this field toggle a feature on/off?**
|
|
205
|
-
- YES → Use `*Enabled` suffix
|
|
206
|
-
- Example: `displayEnabled`, `otaEnabled`
|
|
207
|
-
|
|
208
|
-
3. **Does this field reflect current runtime state?**
|
|
209
|
-
- YES → Use `is*` prefix or `*Connected` suffix
|
|
210
|
-
- Example: `isConfigured`, `mqttConnected`
|
|
211
|
-
|
|
212
|
-
4. **Does this field fit multiple categories?**
|
|
213
|
-
- Consider creating separate fields for each semantic meaning
|
|
214
|
-
- Example: `otaServerSet` AND `otaEnabled` AND `otaInProgress`
|
|
215
|
-
|
|
216
|
-
## Benefits
|
|
217
|
-
|
|
218
|
-
1. **Self-Documenting Code**: Field names clearly indicate semantic meaning
|
|
219
|
-
2. **Reduced Confusion**: Developers immediately understand what each boolean represents
|
|
220
|
-
3. **Better API Design**: Consistent patterns across entire codebase
|
|
221
|
-
4. **Easier Onboarding**: New developers can infer meaning from field names
|
|
222
|
-
5. **Fewer Bugs**: Clear semantics reduce misunderstandings and implementation errors
|
|
223
|
-
|
|
224
|
-
## References
|
|
225
|
-
|
|
226
|
-
- StatusPackage implementation: `examples/alteriom/alteriom_sensor_package.hpp`
|
|
227
|
-
- Test validation: `test/catch/catch_alteriom_packages.cpp`
|
|
228
|
-
- Time field conventions: See header documentation in `alteriom_sensor_package.hpp`
|
|
229
|
-
|
|
230
|
-
---
|
|
231
|
-
|
|
232
|
-
**Document Version**: 1.0
|
|
233
|
-
**Last Updated**: 2025-11-04
|
|
234
|
-
**Status**: Active
|
|
235
|
-
**Applies To**: StatusPackage, EnhancedStatusPackage, and all future Alteriom packages
|