@alteriom/painlessmesh 1.9.18 → 1.9.20

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.
Files changed (41) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +82 -63
  3. package/examples/alteriom/README.md +4 -4
  4. package/examples/alteriom/alteriom_custom_package_template.hpp +320 -0
  5. package/examples/alteriom/alteriom_sensor_package.hpp +1 -1
  6. package/examples/alteriom/mppt_example/alteriom_mppt_example.ino +208 -0
  7. package/examples/bridge_failover/bridge_failover.ino +17 -0
  8. package/examples/sendToInternet/CMakeLists.txt +54 -0
  9. package/examples/sendToInternet/PC_NODE_README.md +517 -0
  10. package/examples/sendToInternet/README.md +39 -1
  11. package/examples/sendToInternet/build.sh +153 -0
  12. package/examples/sendToInternet/mock_server_test.ino +361 -0
  13. package/examples/sendToInternet/pc_mesh_node.cpp +361 -0
  14. package/library.json +4 -1
  15. package/library.properties +1 -1
  16. package/package.json +3 -3
  17. package/src/AlteriomPainlessMesh.h +5 -13
  18. package/src/arduino/wifi.hpp +306 -100
  19. package/src/connection.cpp +10 -0
  20. package/src/painlessMesh.h +1 -14
  21. package/src/painlessmesh/connection.hpp +11 -16
  22. package/src/painlessmesh/gateway.hpp +0 -1061
  23. package/src/painlessmesh/mesh.hpp +58 -86
  24. package/src/painlessmesh/message_queue.hpp +1 -2
  25. package/src/painlessmesh/metrics.hpp +2 -262
  26. package/src/painlessmesh/validation.hpp +0 -143
  27. package/docs/README.md +0 -132
  28. package/docs/alteriom/overview.md +0 -531
  29. package/docs/api/core-api.md +0 -607
  30. package/docs/api/shared-gateway.md +0 -1207
  31. package/docs/architecture/mesh-architecture.md +0 -399
  32. package/docs/architecture/plugin-system.md +0 -517
  33. package/docs/getting-started/arduino-manual-install.md +0 -313
  34. package/docs/getting-started/first-mesh.md +0 -410
  35. package/docs/getting-started/installation.md +0 -275
  36. package/docs/getting-started/quickstart.md +0 -158
  37. package/docs/troubleshooting/common-issues.md +0 -679
  38. package/docs/troubleshooting/debugging.md +0 -455
  39. package/docs/troubleshooting/external-device-connection.md +0 -283
  40. package/docs/troubleshooting/faq.md +0 -574
  41. package/docs/tutorials/basic-examples.md +0 -718
@@ -1,313 +0,0 @@
1
- # Manual Arduino IDE Installation (ZIP Import)
2
-
3
- This guide explains how to manually install painlessMesh in Arduino IDE using a ZIP file. This method is useful when:
4
- - The Arduino Library Manager hasn't indexed the latest version yet
5
- - You want to test unreleased versions from GitHub
6
- - You need a specific version that's not in the Library Manager
7
-
8
- ## Quick Start
9
-
10
- ### Method 1: Download Release ZIP
11
-
12
- 1. **Download** the latest release ZIP from:
13
- - [GitHub Releases](https://github.com/Alteriom/painlessMesh/releases)
14
- - Look for `painlessMesh-vX.X.X.zip`
15
-
16
- 2. **Install in Arduino IDE**:
17
- - Open Arduino IDE
18
- - Go to **Sketch → Include Library → Add .ZIP Library...**
19
- - Select the downloaded `painlessMesh-vX.X.X.zip` file
20
- - Wait for "Library installed" message
21
-
22
- 3. **Install Dependencies**:
23
- - Go to **Sketch → Include Library → Manage Libraries...**
24
- - Search and install:
25
- - **ArduinoJson** (v6.21.x or v7.x)
26
- - **TaskScheduler** (v3.7.0+)
27
-
28
- 4. **Verify Installation**:
29
- - Go to **File → Examples → painlessMesh**
30
- - Open any example (e.g., `basic`)
31
- - Verify it compiles
32
-
33
- ### Method 2: Create ZIP from Repository
34
-
35
- If you need to create a ZIP file from the repository source:
36
-
37
- ```bash
38
- # Clone the repository
39
- git clone https://github.com/Alteriom/painlessMesh.git
40
- cd painlessMesh
41
-
42
- # Create Arduino IDE compatible ZIP
43
- ./scripts/create-arduino-zip.sh
44
- ```
45
-
46
- This creates `dist/painlessMesh-vX.X.X.zip` ready for Arduino IDE import.
47
-
48
- ## What's Included in the ZIP
49
-
50
- The ZIP file contains:
51
- - ✅ `src/` - Complete library source code
52
- - ✅ `examples/` - All Arduino examples (19+ sketches)
53
- - ✅ `library.properties` - Arduino library metadata
54
- - ✅ `README.md` - Documentation
55
- - ✅ `LICENSE` - LGPL-3.0 license
56
- - ✅ `CHANGELOG.md` - Version history
57
- - ✅ `keywords.txt` - Syntax highlighting
58
-
59
- ## Directory Structure
60
-
61
- After installation, the library will be in:
62
- - **Windows**: `Documents\Arduino\libraries\painlessMesh\`
63
- - **macOS**: `~/Documents/Arduino/libraries/painlessMesh/`
64
- - **Linux**: `~/Arduino/libraries/painlessMesh/`
65
-
66
- ```
67
- painlessMesh/
68
- ├── src/ # Library source files
69
- │ ├── painlessMesh.h # Main header
70
- │ ├── painlessmesh/ # Core implementation
71
- │ └── arduino/ # Arduino-specific code
72
- ├── examples/ # Example sketches
73
- │ ├── basic/
74
- │ ├── bridge/
75
- │ ├── mqtt/
76
- │ └── ...
77
- ├── library.properties # Library metadata
78
- ├── README.md
79
- ├── LICENSE
80
- └── keywords.txt
81
- ```
82
-
83
- ## Creating ZIP Files
84
-
85
- ### Automated Script
86
-
87
- Use the provided script for consistent ZIP creation:
88
-
89
- ```bash
90
- # From repository root
91
- ./scripts/create-arduino-zip.sh
92
- ```
93
-
94
- **Output**: `dist/painlessMesh-vX.X.X.zip`
95
-
96
- **Features**:
97
- - ✅ Proper directory structure for Arduino IDE
98
- - ✅ Includes all required files
99
- - ✅ Excludes development files (.git, test/, .github/)
100
- - ✅ Matches GitHub release format
101
- - ✅ Version number from library.properties
102
-
103
- ### Manual ZIP Creation
104
-
105
- If you need to create a ZIP manually:
106
-
107
- 1. **Create directory structure**:
108
- ```bash
109
- mkdir -p painlessMesh-package/painlessMesh
110
- cd painlessMesh-package/painlessMesh
111
- ```
112
-
113
- 2. **Copy required files**:
114
- ```bash
115
- # From your painlessMesh repository
116
- cp -r src examples library.properties README.md LICENSE .
117
- ```
118
-
119
- 3. **Optional additions**:
120
- ```bash
121
- cp CHANGELOG.md keywords.txt .
122
- ```
123
-
124
- 4. **Create ZIP**:
125
- ```bash
126
- cd ..
127
- zip -r painlessMesh-v1.8.3.zip painlessMesh/
128
- ```
129
-
130
- 5. **Important**: The ZIP must contain a folder named `painlessMesh` with the library files inside. Do NOT zip the files directly.
131
-
132
- ## Verification
133
-
134
- After installation, verify it works:
135
-
136
- ### Test Compilation
137
-
138
- ```cpp
139
- #include "painlessMesh.h"
140
-
141
- painlessMesh mesh;
142
-
143
- void setup() {
144
- Serial.begin(115200);
145
- Serial.println("painlessMesh test");
146
-
147
- mesh.init("TestNetwork", "password", 5555);
148
- Serial.println("Initialized successfully!");
149
- }
150
-
151
- void loop() {
152
- mesh.update();
153
- }
154
- ```
155
-
156
- If this compiles without errors, installation is successful!
157
-
158
- ### Check Examples
159
-
160
- The examples should appear in:
161
- **File → Examples → painlessMesh**
162
-
163
- Available examples:
164
- - basic - Simple mesh network
165
- - bridge - Internet bridge mode
166
- - startHere - Quick start template
167
- - namedMesh - Named mesh networks
168
- - And 15+ more examples
169
-
170
- ## Troubleshooting
171
-
172
- ### "Library not found" Error
173
-
174
- **Problem**: Arduino IDE can't find the library after installation.
175
-
176
- **Solutions**:
177
- 1. Restart Arduino IDE
178
- 2. Check installation directory:
179
- - Windows: `Documents\Arduino\libraries\`
180
- - macOS: `~/Documents/Arduino/libraries/`
181
- - Linux: `~/Arduino/libraries/`
182
- 3. Verify folder name is exactly `painlessMesh` (case-sensitive on Linux/macOS)
183
- 4. Check that `library.properties` exists in the painlessMesh folder
184
-
185
- ### "No such file or directory" Compilation Error
186
-
187
- **Problem**: Missing dependency headers like `ArduinoJson.h` or `TaskScheduler.h`.
188
-
189
- **Solution**:
190
- Install dependencies via Library Manager:
191
- 1. **Sketch → Include Library → Manage Libraries...**
192
- 2. Search for:
193
- - **ArduinoJson** → Install version 6.21.x or 7.x
194
- - **TaskScheduler** → Install version 3.7.0+
195
-
196
- ### Version Mismatch
197
-
198
- **Problem**: Old version still being used after installing new ZIP.
199
-
200
- **Solution**:
201
- 1. Delete old version:
202
- - Go to `Arduino/libraries/` folder
203
- - Delete `painlessMesh` folder
204
- 2. Restart Arduino IDE
205
- 3. Install new ZIP file
206
-
207
- ### ZIP Structure Error
208
-
209
- **Problem**: "Invalid library" error when importing ZIP.
210
-
211
- **Cause**: Incorrect ZIP structure.
212
-
213
- **Solution**:
214
- Ensure ZIP contains:
215
- ```
216
- painlessMesh-v1.8.3.zip
217
- └── painlessMesh/ ← Must have this folder
218
- ├── src/
219
- ├── examples/
220
- └── library.properties ← Must have this file
221
- ```
222
-
223
- **Common mistake**: Zipping files directly without the `painlessMesh` folder.
224
-
225
- ## Comparing with Library Manager
226
-
227
- | Feature | Manual ZIP Install | Library Manager |
228
- |---------|-------------------|-----------------|
229
- | **Latest Version** | ✅ Immediate | ⏱️ 24-48h delay |
230
- | **Pre-release Testing** | ✅ Yes | ❌ No |
231
- | **Custom Versions** | ✅ Yes | ❌ No |
232
- | **Ease of Use** | ⚠️ Manual | ✅ Automatic |
233
- | **Updates** | ⚠️ Manual | ✅ One-click |
234
- | **Dependencies** | ⚠️ Manual | ✅ Auto-install |
235
-
236
- ## When to Use Each Method
237
-
238
- ### Use Manual ZIP Installation When:
239
- - 🔧 Testing unreleased features from GitHub
240
- - 🚀 Need the absolute latest version immediately
241
- - 🐛 Testing a bug fix before official release
242
- - 📦 Library Manager hasn't indexed latest version
243
- - 🔬 Developing or contributing to painlessMesh
244
-
245
- ### Use Library Manager When:
246
- - 📱 Installing for the first time
247
- - 🔄 Need easy updates
248
- - 👥 Stable production deployments
249
- - 🎓 Learning or following tutorials
250
- - 📚 Standard development workflow
251
-
252
- ## Automated Releases
253
-
254
- The repository automatically creates proper ZIP files on each release:
255
-
256
- 1. **GitHub Actions** workflow builds ZIP on every release
257
- 2. **ZIP file** uploaded to GitHub Releases page
258
- 3. **Format** matches Arduino IDE requirements exactly
259
- 4. **Naming**: `painlessMesh-vX.X.X.zip`
260
-
261
- Download from: https://github.com/Alteriom/painlessMesh/releases
262
-
263
- ## For Library Maintainers
264
-
265
- ### Creating Release ZIPs
266
-
267
- The release workflow automatically creates proper ZIP files:
268
-
269
- ```yaml
270
- # .github/workflows/release.yml
271
- - name: Prepare library package
272
- run: |
273
- mkdir -p package/painlessMesh
274
- cp -r src examples library.properties README.md LICENSE package/painlessMesh/
275
- cd package
276
- zip -r ../painlessMesh-v${{ steps.version.outputs.version }}.zip painlessMesh/
277
- ```
278
-
279
- ### Script Usage
280
-
281
- For local testing before release:
282
-
283
- ```bash
284
- # Create ZIP for current version
285
- ./scripts/create-arduino-zip.sh
286
-
287
- # Output: dist/painlessMesh-vX.X.X.zip
288
- # Ready for testing in Arduino IDE
289
- ```
290
-
291
- ### Testing Installation
292
-
293
- Before releasing:
294
-
295
- 1. Create ZIP with script
296
- 2. Install in fresh Arduino IDE
297
- 3. Test compilation of examples
298
- 4. Verify examples menu shows all sketches
299
- 5. Check dependency resolution
300
-
301
- ## Additional Resources
302
-
303
- - 📚 [Full Installation Guide](../../website/docs/getting-started/installation.md)
304
- - 🎯 [Quick Start Tutorial](../../website/docs/getting-started/quickstart.md)
305
- - 🔧 [PlatformIO Installation](../../website/docs/getting-started/installation.md#platformio-installation)
306
- - 🐛 [Troubleshooting Guide](../../website/docs/troubleshooting/common-issues.md)
307
- - 📖 [API Reference](https://alteriom.github.io/painlessMesh/#/api/doxygen)
308
-
309
- ## Questions or Issues?
310
-
311
- - 💬 [GitHub Discussions](https://github.com/Alteriom/painlessMesh/discussions)
312
- - 🐛 [Report Issues](https://github.com/Alteriom/painlessMesh/issues)
313
- - 📚 [Documentation](https://alteriom.github.io/painlessMesh/)