@alteriom/painlessmesh 1.6.1 → 1.7.2
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 +380 -143
- package/LICENSE +674 -674
- package/README.md +477 -434
- package/RELEASE_GUIDE.md +504 -418
- package/docs/DOCUMENTATION_MIGRATION_PLAN.md +175 -175
- package/docs/IMPLEMENTATION_PLAN_MESH_TOPOLOGY.md +1062 -0
- package/docs/MESH_TOPOLOGY_GUIDE.md +992 -0
- package/docs/MESH_TOPOLOGY_PROGRESS.md +422 -0
- package/docs/MQTT_BRIDGE_COMMANDS.md +894 -0
- package/docs/MQTT_BRIDGE_IMPLEMENTATION_SUMMARY.md +324 -0
- package/docs/MQTT_COMMAND_SCHEMA_PROPOSAL.md +576 -0
- package/docs/MQTT_SCHEMA_COMPLIANCE.md +285 -0
- package/docs/MQTT_SCHEMA_PROPOSALS.md +446 -0
- package/docs/MQTT_SCHEMA_REVIEW.md +690 -0
- package/docs/OTA_COMMANDS_REFERENCE.md +554 -0
- package/docs/PHASE1_GUIDE.md +349 -0
- package/docs/PHASE2_GUIDE.md +543 -0
- package/docs/README.md +77 -70
- package/docs/SCHEMA_VALIDATION_CHECKLIST.md +222 -0
- package/docs/alteriom/overview.md +507 -507
- package/docs/api/core-api.md +606 -606
- package/docs/architecture/mesh-architecture.md +378 -378
- package/docs/architecture/plugin-system.md +516 -516
- package/docs/getting-started/first-mesh.md +409 -409
- package/docs/getting-started/installation.md +274 -274
- package/docs/getting-started/quickstart.md +157 -157
- package/docs/improvements/FEATURE_PROPOSALS.md +337 -0
- package/docs/improvements/PHASE1_IMPLEMENTATION.md +325 -0
- package/docs/improvements/PHASE2_IMPLEMENTATION.md +567 -0
- package/docs/improvements/README.md +86 -68
- package/docs/improvements/ota-and-status-enhancements.md +911 -0
- package/docs/improvements/ota-status-architecture-diagrams.md +658 -0
- package/docs/improvements/ota-status-quick-reference.md +284 -0
- package/docs/platformio-publishing.md +255 -0
- package/docs/platformio-setup-summary.md +121 -0
- package/docs/troubleshooting/common-issues.md +520 -520
- package/docs/troubleshooting/faq.md +472 -472
- package/docs/tutorials/basic-examples.md +717 -717
- package/docs/wiki/API-Reference.md +245 -245
- package/docs/wiki/Complete-Documentation.md +122 -122
- package/examples/alteriom/README.md +139 -81
- package/examples/alteriom/alteriom.ino +186 -185
- package/examples/alteriom/alteriom_sensor_package.hpp +240 -127
- package/examples/alteriom/platformio.ini +24 -24
- package/examples/alteriomImproved/alteriom_sensor_package.hpp +224 -0
- package/examples/{alteriom → alteriomImproved}/improved_sensor_node.ino +245 -245
- package/examples/alteriomImproved/platformio.ini +25 -0
- package/examples/alteriomPhase1/alteriom_sensor_package.hpp +224 -0
- package/examples/alteriomPhase1/phase1_features.ino +242 -0
- package/examples/alteriomPhase1/platformio.ini +25 -0
- package/examples/alteriomPhase2/alteriom_sensor_package.hpp +224 -0
- package/examples/alteriomPhase2/phase2_features.ino +186 -0
- package/examples/alteriomPhase2/platformio.ini +25 -0
- package/examples/{alteriom → alteriomSensorNode}/alteriom_sensor_node.ino +183 -183
- package/examples/alteriomSensorNode/alteriom_sensor_package.hpp +224 -0
- package/examples/alteriomSensorNode/platformio.ini +25 -0
- package/examples/basic/basic.ino +66 -66
- package/examples/basic/platformio.ini +25 -25
- package/examples/bridge/bridge.ino +51 -51
- package/examples/bridge/mesh_event_publisher.hpp +253 -0
- package/examples/bridge/mesh_topology_reporter.hpp +303 -0
- package/examples/bridge/mqtt_command_bridge.hpp +459 -0
- package/examples/bridge/mqtt_status_bridge.hpp +519 -0
- package/examples/bridge/platformio.ini +25 -25
- package/examples/echoNode/echoNode.ino +33 -33
- package/examples/echoNode/platformio.ini +25 -25
- package/examples/logClient/logClient.ino +109 -109
- package/examples/logClient/platformio.ini +25 -25
- package/examples/logServer/logServer.ino +81 -81
- package/examples/logServer/platformio.ini +25 -25
- package/examples/meshCommandNode/alteriom_sensor_package.hpp +235 -0
- package/examples/meshCommandNode/meshCommandNode.ino +263 -0
- package/examples/meshCommandNode/platformio.ini +25 -0
- package/examples/mqttBridge/mqttBridge.ino +118 -118
- package/examples/mqttBridge/platformio.ini +26 -26
- package/examples/mqttCommandBridge/alteriom_sensor_package.hpp +235 -0
- package/examples/mqttCommandBridge/mesh_event_publisher.hpp +253 -0
- package/examples/mqttCommandBridge/mesh_topology_reporter.hpp +303 -0
- package/examples/mqttCommandBridge/mqttCommandBridge.ino +252 -0
- package/examples/mqttCommandBridge/mqtt_command_bridge.hpp +459 -0
- package/examples/mqttCommandBridge/platformio.ini +26 -0
- package/examples/mqttStatusBridge/mqttStatusBridge.ino +216 -0
- package/examples/mqttStatusBridge/mqtt_status_bridge.hpp +522 -0
- package/examples/mqttStatusBridge/platformio.ini +26 -0
- package/examples/mqttTopologyTest/README.md +467 -0
- package/examples/mqttTopologyTest/mqttTopologyTest.ino +748 -0
- package/examples/mqttTopologyTest/platformio.ini +26 -0
- package/examples/namedMesh/namedMesh.ino +97 -97
- package/examples/namedMesh/platformio.ini +25 -25
- package/examples/otaReceiver/otaReceiver.ino +79 -79
- package/examples/otaReceiver/platformio.ini +25 -25
- package/examples/otaSender/otaSender.ino +160 -151
- package/examples/otaSender/platformio.ini +25 -25
- package/examples/startHere/platformio.ini +25 -25
- package/examples/startHere/startHere.ino +159 -159
- package/examples/webServer/platformio.ini +27 -27
- package/examples/webServer/webServer.ino +89 -89
- package/keywords.txt +48 -48
- package/library.json +55 -34
- package/library.properties +10 -10
- package/package.json +86 -78
- package/src/AlteriomPainlessMesh.h +97 -97
- package/src/arduino/wifi.hpp +365 -365
- package/src/boost/asynctcp.hpp +279 -279
- package/src/painlessMesh.h +70 -70
- package/src/painlessMeshSTA.cpp +236 -236
- package/src/painlessMeshSTA.h +58 -58
- package/src/painlessTaskOptions.h +4 -4
- package/src/painlessmesh/base64.hpp +111 -111
- package/src/painlessmesh/buffer.hpp +229 -229
- package/src/painlessmesh/callback.hpp +91 -91
- package/src/painlessmesh/configuration.hpp +77 -77
- package/src/painlessmesh/connection.hpp +192 -192
- package/src/painlessmesh/layout.hpp +188 -188
- package/src/painlessmesh/logger.hpp +158 -158
- package/src/painlessmesh/memory.hpp +119 -119
- package/src/painlessmesh/mesh.hpp +761 -560
- package/src/painlessmesh/metrics.hpp +322 -322
- package/src/painlessmesh/ntp.hpp +263 -263
- package/src/painlessmesh/ota.hpp +582 -553
- package/src/painlessmesh/plugin.hpp +188 -188
- package/src/painlessmesh/protocol.hpp +813 -813
- package/src/painlessmesh/router.hpp +322 -322
- package/src/painlessmesh/tcp.hpp +71 -71
- package/src/painlessmesh/validation.hpp +238 -238
- package/src/plugin/performance.hpp +214 -214
- package/src/plugin/remote.hpp +64 -64
- package/src/scheduler.cpp +10 -10
- package/src/wifi.cpp +2 -2
|
@@ -1,275 +1,275 @@
|
|
|
1
|
-
# Installation Guide
|
|
2
|
-
|
|
3
|
-
This guide covers all the different ways to install and set up painlessMesh for your development environment.
|
|
4
|
-
|
|
5
|
-
## Arduino IDE Installation
|
|
6
|
-
|
|
7
|
-
### Method 1: Library Manager (Recommended)
|
|
8
|
-
|
|
9
|
-
1. Open Arduino IDE
|
|
10
|
-
2. Go to **Sketch → Include Library → Manage Libraries**
|
|
11
|
-
3. Search for "painlessMesh"
|
|
12
|
-
4. Install the latest version by "Coopdis"
|
|
13
|
-
5. Install dependencies when prompted:
|
|
14
|
-
- ArduinoJson
|
|
15
|
-
- TaskScheduler
|
|
16
|
-
|
|
17
|
-
### Method 2: Manual Installation
|
|
18
|
-
|
|
19
|
-
1. Download the latest release from [GitHub](https://github.com/Alteriom/painlessMesh/releases)
|
|
20
|
-
2. Extract the ZIP file
|
|
21
|
-
3. Copy the `painlessMesh` folder to your Arduino libraries directory:
|
|
22
|
-
- **Windows**: `Documents\Arduino\libraries\`
|
|
23
|
-
- **macOS**: `~/Documents/Arduino/libraries/`
|
|
24
|
-
- **Linux**: `~/Arduino/libraries/`
|
|
25
|
-
4. Restart Arduino IDE
|
|
26
|
-
|
|
27
|
-
## PlatformIO Installation
|
|
28
|
-
|
|
29
|
-
### Method 1: platformio.ini (Recommended)
|
|
30
|
-
|
|
31
|
-
Add to your `platformio.ini` file:
|
|
32
|
-
|
|
33
|
-
```ini
|
|
34
|
-
[env:esp32dev]
|
|
35
|
-
platform = espressif32
|
|
36
|
-
board = esp32dev
|
|
37
|
-
framework = arduino
|
|
38
|
-
lib_deps =
|
|
39
|
-
painlessMesh
|
|
40
|
-
bblanchon/ArduinoJson@^6.21.3
|
|
41
|
-
arkhipenko/TaskScheduler@^3.7.0
|
|
42
|
-
|
|
43
|
-
# For ESP8266
|
|
44
|
-
[env:esp8266]
|
|
45
|
-
platform = espressif8266
|
|
46
|
-
board = nodemcuv2
|
|
47
|
-
framework = arduino
|
|
48
|
-
lib_deps =
|
|
49
|
-
painlessMesh
|
|
50
|
-
bblanchon/ArduinoJson@^6.21.3
|
|
51
|
-
arkhipenko/TaskScheduler@^3.7.0
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Method 2: PlatformIO Library Manager
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
# Install via PlatformIO CLI
|
|
58
|
-
pio lib install "painlessMesh"
|
|
59
|
-
|
|
60
|
-
# Or install specific version
|
|
61
|
-
pio lib install "painlessMesh@1.5.0"
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
## Board Support
|
|
65
|
-
|
|
66
|
-
### ESP32 Boards
|
|
67
|
-
painlessMesh supports all ESP32 variants:
|
|
68
|
-
- ESP32 DevKit
|
|
69
|
-
- ESP32-S2
|
|
70
|
-
- ESP32-S3
|
|
71
|
-
- ESP32-C3
|
|
72
|
-
- ESP32-WROOM
|
|
73
|
-
- ESP32-WROVER
|
|
74
|
-
|
|
75
|
-
### ESP8266 Boards
|
|
76
|
-
All ESP8266 boards are supported:
|
|
77
|
-
- NodeMCU
|
|
78
|
-
- Wemos D1 Mini
|
|
79
|
-
- ESP-12E/F
|
|
80
|
-
- ESP-01 (with limitations due to memory)
|
|
81
|
-
|
|
82
|
-
## Dependencies
|
|
83
|
-
|
|
84
|
-
painlessMesh requires these libraries:
|
|
85
|
-
|
|
86
|
-
### Core Dependencies
|
|
87
|
-
- **ArduinoJson** (v6.x) - JSON parsing and generation
|
|
88
|
-
- **TaskScheduler** (v3.x) - Task scheduling system
|
|
89
|
-
|
|
90
|
-
### Platform Dependencies
|
|
91
|
-
- **ESP32 Arduino Core** (v2.0.0+) for ESP32 boards
|
|
92
|
-
- **ESP8266 Arduino Core** (v3.0.0+) for ESP8266 boards
|
|
93
|
-
|
|
94
|
-
## Development Environment Setup
|
|
95
|
-
|
|
96
|
-
### For Library Development
|
|
97
|
-
|
|
98
|
-
If you plan to contribute to painlessMesh or need the latest development version:
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
# Clone the repository
|
|
102
|
-
git clone https://github.com/Alteriom/painlessMesh.git
|
|
103
|
-
cd painlessMesh
|
|
104
|
-
|
|
105
|
-
# Initialize submodules
|
|
106
|
-
git submodule init
|
|
107
|
-
git submodule update
|
|
108
|
-
|
|
109
|
-
# Install test dependencies (for desktop testing)
|
|
110
|
-
cd test
|
|
111
|
-
git clone https://github.com/bblanchon/ArduinoJson.git
|
|
112
|
-
git clone https://github.com/arkhipenko/TaskScheduler.git
|
|
113
|
-
cd ..
|
|
114
|
-
|
|
115
|
-
# Build tests (requires CMake and Ninja)
|
|
116
|
-
cmake -G Ninja .
|
|
117
|
-
ninja
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### Desktop Testing (Linux/macOS/Windows)
|
|
121
|
-
|
|
122
|
-
For development and testing on your computer:
|
|
123
|
-
|
|
124
|
-
#### Requirements
|
|
125
|
-
- CMake 3.10+
|
|
126
|
-
- Ninja build system
|
|
127
|
-
- Boost libraries
|
|
128
|
-
- C++14 compatible compiler
|
|
129
|
-
|
|
130
|
-
#### Ubuntu/Debian
|
|
131
|
-
```bash
|
|
132
|
-
sudo apt update
|
|
133
|
-
sudo apt install cmake ninja-build libboost-all-dev build-essential
|
|
134
|
-
|
|
135
|
-
# Clone and build
|
|
136
|
-
git clone https://github.com/Alteriom/painlessMesh.git
|
|
137
|
-
cd painlessMesh
|
|
138
|
-
git submodule update --init
|
|
139
|
-
cmake -G Ninja .
|
|
140
|
-
ninja
|
|
141
|
-
|
|
142
|
-
# Run tests
|
|
143
|
-
run-parts --regex catch_ bin/
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
#### macOS
|
|
147
|
-
```bash
|
|
148
|
-
# Install dependencies
|
|
149
|
-
brew install cmake ninja boost
|
|
150
|
-
|
|
151
|
-
# Clone and build
|
|
152
|
-
git clone https://github.com/Alteriom/painlessMesh.git
|
|
153
|
-
cd painlessMesh
|
|
154
|
-
git submodule update --init
|
|
155
|
-
cmake -G Ninja .
|
|
156
|
-
ninja
|
|
157
|
-
|
|
158
|
-
# Run tests
|
|
159
|
-
run-parts --regex catch_ bin/
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
#### Windows
|
|
163
|
-
Use Visual Studio with CMake support or install dependencies via vcpkg:
|
|
164
|
-
|
|
165
|
-
```powershell
|
|
166
|
-
# Install vcpkg first, then:
|
|
167
|
-
vcpkg install boost:x64-windows
|
|
168
|
-
cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=path/to/vcpkg.cmake .
|
|
169
|
-
ninja
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
## Version Compatibility
|
|
173
|
-
|
|
174
|
-
### Current Stable Version
|
|
175
|
-
- **painlessMesh**: 1.5.x
|
|
176
|
-
- **ArduinoJson**: 6.21.x
|
|
177
|
-
- **TaskScheduler**: 3.7.x
|
|
178
|
-
|
|
179
|
-
### Legacy Support
|
|
180
|
-
- painlessMesh 1.4.x - Compatible with older ESP cores
|
|
181
|
-
- ArduinoJson 5.x - No longer supported
|
|
182
|
-
|
|
183
|
-
## Memory Requirements
|
|
184
|
-
|
|
185
|
-
### ESP32
|
|
186
|
-
- **RAM**: ~50KB minimum for basic mesh functionality
|
|
187
|
-
- **Flash**: ~200KB for core library + your application
|
|
188
|
-
- **Recommended**: 320KB+ RAM for complex applications
|
|
189
|
-
|
|
190
|
-
### ESP8266
|
|
191
|
-
- **RAM**: ~20KB minimum for basic mesh functionality
|
|
192
|
-
- **Flash**: ~150KB for core library + your application
|
|
193
|
-
- **Recommended**: 80KB+ RAM for stable operation
|
|
194
|
-
- **Note**: ESP-01 (512KB flash) may have limitations
|
|
195
|
-
|
|
196
|
-
## Configuration Options
|
|
197
|
-
|
|
198
|
-
### Build Flags
|
|
199
|
-
|
|
200
|
-
Add these to your build configuration if needed:
|
|
201
|
-
|
|
202
|
-
```ini
|
|
203
|
-
# platformio.ini
|
|
204
|
-
build_flags =
|
|
205
|
-
-DPAINLESSMESH_ENABLE_DEBUG=1 # Enable debug output
|
|
206
|
-
-DPAINLESSMESH_MAX_CONNECTIONS=10 # Maximum connections
|
|
207
|
-
-DTASK_SCHEDULER_DEBUG=1 # TaskScheduler debug
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
### Arduino IDE Defines
|
|
211
|
-
|
|
212
|
-
Add at the top of your sketch:
|
|
213
|
-
|
|
214
|
-
```cpp
|
|
215
|
-
#define PAINLESSMESH_ENABLE_DEBUG 1
|
|
216
|
-
#define PAINLESSMESH_MAX_CONNECTIONS 10
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
## IDE-Specific Setup
|
|
220
|
-
|
|
221
|
-
### Visual Studio Code + PlatformIO
|
|
222
|
-
|
|
223
|
-
1. Install the PlatformIO IDE extension
|
|
224
|
-
2. Create new project or open existing
|
|
225
|
-
3. Add library dependencies to `platformio.ini`
|
|
226
|
-
4. Use Ctrl+Shift+P → "PlatformIO: Build" to compile
|
|
227
|
-
|
|
228
|
-
### Arduino IDE 2.0
|
|
229
|
-
|
|
230
|
-
1. Install via Library Manager (same as Arduino IDE 1.x)
|
|
231
|
-
2. Use the new autocomplete features for better development experience
|
|
232
|
-
3. Debugging support available with compatible boards
|
|
233
|
-
|
|
234
|
-
## Verification
|
|
235
|
-
|
|
236
|
-
Test your installation with this minimal example:
|
|
237
|
-
|
|
238
|
-
```cpp
|
|
239
|
-
#include "painlessMesh.h"
|
|
240
|
-
|
|
241
|
-
painlessMesh mesh;
|
|
242
|
-
|
|
243
|
-
void setup() {
|
|
244
|
-
Serial.begin(115200);
|
|
245
|
-
Serial.println("painlessMesh installation test");
|
|
246
|
-
|
|
247
|
-
// If this compiles and uploads successfully, installation is correct
|
|
248
|
-
mesh.init("TestNetwork", "password", 5555);
|
|
249
|
-
Serial.println("painlessMesh initialized successfully!");
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
void loop() {
|
|
253
|
-
mesh.update();
|
|
254
|
-
}
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
If this compiles and uploads without errors, your installation is complete!
|
|
258
|
-
|
|
259
|
-
## Next Steps
|
|
260
|
-
|
|
261
|
-
- Try the [Quick Start Guide](quickstart.md) to create your first mesh
|
|
262
|
-
- Explore [Basic Examples](../tutorials/basic-examples.md)
|
|
263
|
-
- Read about [Mesh Architecture](../architecture/mesh-architecture.md)
|
|
264
|
-
|
|
265
|
-
## Troubleshooting Installation
|
|
266
|
-
|
|
267
|
-
**Library not found errors?**
|
|
268
|
-
- Check that ArduinoJson and TaskScheduler are installed
|
|
269
|
-
- Verify library versions are compatible
|
|
270
|
-
- Try cleaning and rebuilding your project
|
|
271
|
-
|
|
272
|
-
**Compilation errors?**
|
|
273
|
-
- Ensure you're using a supported ESP32/ESP8266 core version
|
|
274
|
-
- Check that your board selection matches your hardware
|
|
1
|
+
# Installation Guide
|
|
2
|
+
|
|
3
|
+
This guide covers all the different ways to install and set up painlessMesh for your development environment.
|
|
4
|
+
|
|
5
|
+
## Arduino IDE Installation
|
|
6
|
+
|
|
7
|
+
### Method 1: Library Manager (Recommended)
|
|
8
|
+
|
|
9
|
+
1. Open Arduino IDE
|
|
10
|
+
2. Go to **Sketch → Include Library → Manage Libraries**
|
|
11
|
+
3. Search for "painlessMesh"
|
|
12
|
+
4. Install the latest version by "Coopdis"
|
|
13
|
+
5. Install dependencies when prompted:
|
|
14
|
+
- ArduinoJson
|
|
15
|
+
- TaskScheduler
|
|
16
|
+
|
|
17
|
+
### Method 2: Manual Installation
|
|
18
|
+
|
|
19
|
+
1. Download the latest release from [GitHub](https://github.com/Alteriom/painlessMesh/releases)
|
|
20
|
+
2. Extract the ZIP file
|
|
21
|
+
3. Copy the `painlessMesh` folder to your Arduino libraries directory:
|
|
22
|
+
- **Windows**: `Documents\Arduino\libraries\`
|
|
23
|
+
- **macOS**: `~/Documents/Arduino/libraries/`
|
|
24
|
+
- **Linux**: `~/Arduino/libraries/`
|
|
25
|
+
4. Restart Arduino IDE
|
|
26
|
+
|
|
27
|
+
## PlatformIO Installation
|
|
28
|
+
|
|
29
|
+
### Method 1: platformio.ini (Recommended)
|
|
30
|
+
|
|
31
|
+
Add to your `platformio.ini` file:
|
|
32
|
+
|
|
33
|
+
```ini
|
|
34
|
+
[env:esp32dev]
|
|
35
|
+
platform = espressif32
|
|
36
|
+
board = esp32dev
|
|
37
|
+
framework = arduino
|
|
38
|
+
lib_deps =
|
|
39
|
+
painlessMesh
|
|
40
|
+
bblanchon/ArduinoJson@^6.21.3
|
|
41
|
+
arkhipenko/TaskScheduler@^3.7.0
|
|
42
|
+
|
|
43
|
+
# For ESP8266
|
|
44
|
+
[env:esp8266]
|
|
45
|
+
platform = espressif8266
|
|
46
|
+
board = nodemcuv2
|
|
47
|
+
framework = arduino
|
|
48
|
+
lib_deps =
|
|
49
|
+
painlessMesh
|
|
50
|
+
bblanchon/ArduinoJson@^6.21.3
|
|
51
|
+
arkhipenko/TaskScheduler@^3.7.0
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Method 2: PlatformIO Library Manager
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Install via PlatformIO CLI
|
|
58
|
+
pio lib install "painlessMesh"
|
|
59
|
+
|
|
60
|
+
# Or install specific version
|
|
61
|
+
pio lib install "painlessMesh@1.5.0"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Board Support
|
|
65
|
+
|
|
66
|
+
### ESP32 Boards
|
|
67
|
+
painlessMesh supports all ESP32 variants:
|
|
68
|
+
- ESP32 DevKit
|
|
69
|
+
- ESP32-S2
|
|
70
|
+
- ESP32-S3
|
|
71
|
+
- ESP32-C3
|
|
72
|
+
- ESP32-WROOM
|
|
73
|
+
- ESP32-WROVER
|
|
74
|
+
|
|
75
|
+
### ESP8266 Boards
|
|
76
|
+
All ESP8266 boards are supported:
|
|
77
|
+
- NodeMCU
|
|
78
|
+
- Wemos D1 Mini
|
|
79
|
+
- ESP-12E/F
|
|
80
|
+
- ESP-01 (with limitations due to memory)
|
|
81
|
+
|
|
82
|
+
## Dependencies
|
|
83
|
+
|
|
84
|
+
painlessMesh requires these libraries:
|
|
85
|
+
|
|
86
|
+
### Core Dependencies
|
|
87
|
+
- **ArduinoJson** (v6.x) - JSON parsing and generation
|
|
88
|
+
- **TaskScheduler** (v3.x) - Task scheduling system
|
|
89
|
+
|
|
90
|
+
### Platform Dependencies
|
|
91
|
+
- **ESP32 Arduino Core** (v2.0.0+) for ESP32 boards
|
|
92
|
+
- **ESP8266 Arduino Core** (v3.0.0+) for ESP8266 boards
|
|
93
|
+
|
|
94
|
+
## Development Environment Setup
|
|
95
|
+
|
|
96
|
+
### For Library Development
|
|
97
|
+
|
|
98
|
+
If you plan to contribute to painlessMesh or need the latest development version:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
# Clone the repository
|
|
102
|
+
git clone https://github.com/Alteriom/painlessMesh.git
|
|
103
|
+
cd painlessMesh
|
|
104
|
+
|
|
105
|
+
# Initialize submodules
|
|
106
|
+
git submodule init
|
|
107
|
+
git submodule update
|
|
108
|
+
|
|
109
|
+
# Install test dependencies (for desktop testing)
|
|
110
|
+
cd test
|
|
111
|
+
git clone https://github.com/bblanchon/ArduinoJson.git
|
|
112
|
+
git clone https://github.com/arkhipenko/TaskScheduler.git
|
|
113
|
+
cd ..
|
|
114
|
+
|
|
115
|
+
# Build tests (requires CMake and Ninja)
|
|
116
|
+
cmake -G Ninja .
|
|
117
|
+
ninja
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Desktop Testing (Linux/macOS/Windows)
|
|
121
|
+
|
|
122
|
+
For development and testing on your computer:
|
|
123
|
+
|
|
124
|
+
#### Requirements
|
|
125
|
+
- CMake 3.10+
|
|
126
|
+
- Ninja build system
|
|
127
|
+
- Boost libraries
|
|
128
|
+
- C++14 compatible compiler
|
|
129
|
+
|
|
130
|
+
#### Ubuntu/Debian
|
|
131
|
+
```bash
|
|
132
|
+
sudo apt update
|
|
133
|
+
sudo apt install cmake ninja-build libboost-all-dev build-essential
|
|
134
|
+
|
|
135
|
+
# Clone and build
|
|
136
|
+
git clone https://github.com/Alteriom/painlessMesh.git
|
|
137
|
+
cd painlessMesh
|
|
138
|
+
git submodule update --init
|
|
139
|
+
cmake -G Ninja .
|
|
140
|
+
ninja
|
|
141
|
+
|
|
142
|
+
# Run tests
|
|
143
|
+
run-parts --regex catch_ bin/
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
#### macOS
|
|
147
|
+
```bash
|
|
148
|
+
# Install dependencies
|
|
149
|
+
brew install cmake ninja boost
|
|
150
|
+
|
|
151
|
+
# Clone and build
|
|
152
|
+
git clone https://github.com/Alteriom/painlessMesh.git
|
|
153
|
+
cd painlessMesh
|
|
154
|
+
git submodule update --init
|
|
155
|
+
cmake -G Ninja .
|
|
156
|
+
ninja
|
|
157
|
+
|
|
158
|
+
# Run tests
|
|
159
|
+
run-parts --regex catch_ bin/
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
#### Windows
|
|
163
|
+
Use Visual Studio with CMake support or install dependencies via vcpkg:
|
|
164
|
+
|
|
165
|
+
```powershell
|
|
166
|
+
# Install vcpkg first, then:
|
|
167
|
+
vcpkg install boost:x64-windows
|
|
168
|
+
cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=path/to/vcpkg.cmake .
|
|
169
|
+
ninja
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Version Compatibility
|
|
173
|
+
|
|
174
|
+
### Current Stable Version
|
|
175
|
+
- **painlessMesh**: 1.5.x
|
|
176
|
+
- **ArduinoJson**: 6.21.x
|
|
177
|
+
- **TaskScheduler**: 3.7.x
|
|
178
|
+
|
|
179
|
+
### Legacy Support
|
|
180
|
+
- painlessMesh 1.4.x - Compatible with older ESP cores
|
|
181
|
+
- ArduinoJson 5.x - No longer supported
|
|
182
|
+
|
|
183
|
+
## Memory Requirements
|
|
184
|
+
|
|
185
|
+
### ESP32
|
|
186
|
+
- **RAM**: ~50KB minimum for basic mesh functionality
|
|
187
|
+
- **Flash**: ~200KB for core library + your application
|
|
188
|
+
- **Recommended**: 320KB+ RAM for complex applications
|
|
189
|
+
|
|
190
|
+
### ESP8266
|
|
191
|
+
- **RAM**: ~20KB minimum for basic mesh functionality
|
|
192
|
+
- **Flash**: ~150KB for core library + your application
|
|
193
|
+
- **Recommended**: 80KB+ RAM for stable operation
|
|
194
|
+
- **Note**: ESP-01 (512KB flash) may have limitations
|
|
195
|
+
|
|
196
|
+
## Configuration Options
|
|
197
|
+
|
|
198
|
+
### Build Flags
|
|
199
|
+
|
|
200
|
+
Add these to your build configuration if needed:
|
|
201
|
+
|
|
202
|
+
```ini
|
|
203
|
+
# platformio.ini
|
|
204
|
+
build_flags =
|
|
205
|
+
-DPAINLESSMESH_ENABLE_DEBUG=1 # Enable debug output
|
|
206
|
+
-DPAINLESSMESH_MAX_CONNECTIONS=10 # Maximum connections
|
|
207
|
+
-DTASK_SCHEDULER_DEBUG=1 # TaskScheduler debug
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Arduino IDE Defines
|
|
211
|
+
|
|
212
|
+
Add at the top of your sketch:
|
|
213
|
+
|
|
214
|
+
```cpp
|
|
215
|
+
#define PAINLESSMESH_ENABLE_DEBUG 1
|
|
216
|
+
#define PAINLESSMESH_MAX_CONNECTIONS 10
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## IDE-Specific Setup
|
|
220
|
+
|
|
221
|
+
### Visual Studio Code + PlatformIO
|
|
222
|
+
|
|
223
|
+
1. Install the PlatformIO IDE extension
|
|
224
|
+
2. Create new project or open existing
|
|
225
|
+
3. Add library dependencies to `platformio.ini`
|
|
226
|
+
4. Use Ctrl+Shift+P → "PlatformIO: Build" to compile
|
|
227
|
+
|
|
228
|
+
### Arduino IDE 2.0
|
|
229
|
+
|
|
230
|
+
1. Install via Library Manager (same as Arduino IDE 1.x)
|
|
231
|
+
2. Use the new autocomplete features for better development experience
|
|
232
|
+
3. Debugging support available with compatible boards
|
|
233
|
+
|
|
234
|
+
## Verification
|
|
235
|
+
|
|
236
|
+
Test your installation with this minimal example:
|
|
237
|
+
|
|
238
|
+
```cpp
|
|
239
|
+
#include "painlessMesh.h"
|
|
240
|
+
|
|
241
|
+
painlessMesh mesh;
|
|
242
|
+
|
|
243
|
+
void setup() {
|
|
244
|
+
Serial.begin(115200);
|
|
245
|
+
Serial.println("painlessMesh installation test");
|
|
246
|
+
|
|
247
|
+
// If this compiles and uploads successfully, installation is correct
|
|
248
|
+
mesh.init("TestNetwork", "password", 5555);
|
|
249
|
+
Serial.println("painlessMesh initialized successfully!");
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
void loop() {
|
|
253
|
+
mesh.update();
|
|
254
|
+
}
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
If this compiles and uploads without errors, your installation is complete!
|
|
258
|
+
|
|
259
|
+
## Next Steps
|
|
260
|
+
|
|
261
|
+
- Try the [Quick Start Guide](quickstart.md) to create your first mesh
|
|
262
|
+
- Explore [Basic Examples](../tutorials/basic-examples.md)
|
|
263
|
+
- Read about [Mesh Architecture](../architecture/mesh-architecture.md)
|
|
264
|
+
|
|
265
|
+
## Troubleshooting Installation
|
|
266
|
+
|
|
267
|
+
**Library not found errors?**
|
|
268
|
+
- Check that ArduinoJson and TaskScheduler are installed
|
|
269
|
+
- Verify library versions are compatible
|
|
270
|
+
- Try cleaning and rebuilding your project
|
|
271
|
+
|
|
272
|
+
**Compilation errors?**
|
|
273
|
+
- Ensure you're using a supported ESP32/ESP8266 core version
|
|
274
|
+
- Check that your board selection matches your hardware
|
|
275
275
|
- See [Common Issues](../troubleshooting/common-issues.md) for more help
|