@skylord123/node-red-pebble-timeline 1.0.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Skylar Sadlier
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,73 @@
1
+ # node-red-pebble-timeline
2
+
3
+ Node-RED nodes for interacting with the Pebble Timeline API, allowing you to add, delete, and list timeline pins for Pebble smartwatches using the Rebble Timeline service.
4
+
5
+ This package provides nodes that make it easy to create and manage timeline pins for Pebble smartwatches through the Rebble Timeline API, which maintains Pebble functionality after the official Pebble service was discontinued.
6
+
7
+ ![example.png](examples/example.png)
8
+
9
+ ## Features
10
+
11
+ - **Add Timeline Pins**: Create pins with various layouts (generic, calendar, sports, weather)
12
+ - **Delete Timeline Pins**: Remove pins from the timeline
13
+ - **List Timeline Pins**: View pins that have been added to the timeline
14
+ - **Token-based Organization**: Pins are organized by timeline token, allowing you to manage pins for multiple apps
15
+ - **Automatic Cleanup**: Pins older than one month are automatically removed to prevent storage bloat
16
+ - **Comprehensive Configuration**: Full support for all pin properties and layouts
17
+
18
+ ## Installation
19
+
20
+ Install from your Node-RED Manage Palette or run the following command in your Node-RED user directory:
21
+
22
+ ```
23
+ npm install node-red-pebble-timeline
24
+ ```
25
+
26
+ ## Usage
27
+
28
+ ### Configuration
29
+
30
+ 1. Add a "Pebble Timeline Config" node to your flow
31
+ 2. Configure the API URL (defaults to https://timeline-api.rebble.io)
32
+ 3. Add your timeline token
33
+ - You can obtain this by installing the [Generate Token](https://apps.rebble.io/en_US/application/5d9ac26dc393f54d6b5f5445?query=timeline%2520token&section=watchapps) app on your Pebble watch and following the instructions to generate a token
34
+ - Another method is using the [Home Assistant WS](https://github.com/skylord123/pebble-home-assistant-ws) app. It will give you the timeline token in the config page on the mobile phone.
35
+
36
+ ### Adding Pins
37
+
38
+ 1. Add a "Add Timeline Pin" node to your flow
39
+ 2. Configure the pin properties (ID, time, layout, etc.)
40
+ 3. Connect it to a trigger node or other input
41
+ 4. Deploy and run your flow
42
+
43
+ ### Deleting Pins
44
+
45
+ 1. Add a "Delete Timeline Pin" node to your flow
46
+ 2. Configure the pin ID to delete
47
+ 3. Connect it to a trigger node or other input
48
+ 4. Deploy and run your flow
49
+
50
+ ### Listing Pins
51
+
52
+ 1. Add a "List Timeline Pins" node to your flow
53
+ 2. Configure any filter options (start time, end time)
54
+ 3. Connect it to a trigger node or other input
55
+ 4. Deploy and run your flow
56
+
57
+ ## Pin Storage
58
+
59
+ Pins are stored locally in the Node-RED user directory, organized by timeline token. Each token has its own separate list of pins, and pins older than one month are automatically cleaned up to prevent the storage file from growing too large.
60
+
61
+ ## Example Flows
62
+
63
+ Check out the [examples](examples) directory for sample flows that demonstrate how to use these nodes.
64
+
65
+ ## API Documentation
66
+
67
+ For detailed information about the Pebble Timeline API and pin structure, refer to:
68
+ - [Pebble Timeline Developer Guide](https://developer.pebble.com/guides/pebble-timeline/)
69
+ - [Pebble Timeline Pin Structure](https://developer.pebble.com/guides/pebble-timeline/pin-structure/)
70
+
71
+ ## License
72
+
73
+ This project is licensed under the MIT License.
@@ -0,0 +1,7 @@
1
+ Examples
2
+ ---
3
+
4
+ ![example.png](example.png)
5
+ [JSON](example.json)
6
+
7
+ Click the JSON link above and copy the contents of the file and useee the hamburger menu in Node-RED to import.
@@ -0,0 +1,598 @@
1
+ [
2
+ {
3
+ "id": "fac7e2cd3fa24b5c",
4
+ "type": "group",
5
+ "z": "01b0a9aca17246f3",
6
+ "name": "Add basic timeline pin 1 hour in future",
7
+ "style": {
8
+ "label": true
9
+ },
10
+ "nodes": [
11
+ "c1460b7f25bc5f74",
12
+ "983dd7c84dda8673",
13
+ "49a7fc32dee16d02",
14
+ "3640e4ac216f5608",
15
+ "9b3b5f43620e4cf5",
16
+ "5c29bdc37973d3f0"
17
+ ],
18
+ "x": 234,
19
+ "y": 139,
20
+ "w": 852,
21
+ "h": 122
22
+ },
23
+ {
24
+ "id": "c1460b7f25bc5f74",
25
+ "type": "pebble-timeline-add",
26
+ "z": "01b0a9aca17246f3",
27
+ "g": "fac7e2cd3fa24b5c",
28
+ "name": "",
29
+ "config": "c94cbbf4395a9abe",
30
+ "apiUrl": "null",
31
+ "apiUrlType": "jsonata",
32
+ "token": "null",
33
+ "tokenType": "jsonata",
34
+ "pinId": "payload.id",
35
+ "pinIdType": "msg",
36
+ "time": "payload.time",
37
+ "timeType": "msg",
38
+ "duration": "payload.duration",
39
+ "durationType": "msg",
40
+ "layoutType": "genericPin",
41
+ "title": "topic",
42
+ "titleType": "msg",
43
+ "subtitle": "payload.subtitle",
44
+ "subtitleType": "msg",
45
+ "body": "payload.body",
46
+ "bodyType": "msg",
47
+ "tinyIcon": "payload.tinyIcon",
48
+ "tinyIconType": "msg",
49
+ "smallIcon": "payload.smallIcon",
50
+ "smallIconType": "msg",
51
+ "largeIcon": "payload.largeIcon",
52
+ "largeIconType": "msg",
53
+ "primaryColor": "payload.primaryColor",
54
+ "primaryColorType": "msg",
55
+ "secondaryColor": "payload.secondaryColor",
56
+ "secondaryColorType": "msg",
57
+ "backgroundColor": "payload.backgroundColor",
58
+ "backgroundColorType": "msg",
59
+ "createNotification": false,
60
+ "updateNotification": false,
61
+ "headings": "null",
62
+ "headingsType": "jsonata",
63
+ "paragraphs": "null",
64
+ "paragraphsType": "jsonata",
65
+ "lastUpdated": "null",
66
+ "lastUpdatedType": "jsonata",
67
+ "createNotificationTitle": "payload.createNotification.title",
68
+ "createNotificationTitleType": "msg",
69
+ "createNotificationBody": "payload.createNotification.body",
70
+ "createNotificationBodyType": "msg",
71
+ "createNotificationTinyIcon": "payload.createNotification.tinyIcon",
72
+ "createNotificationTinyIconType": "msg",
73
+ "updateNotificationTime": "payload.updateNotification.time",
74
+ "updateNotificationTimeType": "msg",
75
+ "updateNotificationTitle": "payload.updateNotification.title",
76
+ "updateNotificationTitleType": "msg",
77
+ "updateNotificationBody": "payload.updateNotification.body",
78
+ "updateNotificationBodyType": "msg",
79
+ "updateNotificationTinyIcon": "payload.updateNotification.tinyIcon",
80
+ "updateNotificationTinyIconType": "msg",
81
+ "locationName": "payload.locationName",
82
+ "locationNameType": "msg",
83
+ "shortTitle": "payload.shortTitle",
84
+ "shortTitleType": "msg",
85
+ "shortSubtitle": "payload.shortSubtitle",
86
+ "shortSubtitleType": "msg",
87
+ "displayTime": "pin",
88
+ "rankAway": "payload.rankAway",
89
+ "rankAwayType": "msg",
90
+ "rankHome": "payload.rankHome",
91
+ "rankHomeType": "msg",
92
+ "nameAway": "payload.nameAway",
93
+ "nameAwayType": "msg",
94
+ "nameHome": "payload.nameHome",
95
+ "nameHomeType": "msg",
96
+ "recordAway": "payload.recordAway",
97
+ "recordAwayType": "msg",
98
+ "recordHome": "payload.recordHome",
99
+ "recordHomeType": "msg",
100
+ "scoreAway": "payload.scoreAway",
101
+ "scoreAwayType": "msg",
102
+ "scoreHome": "payload.scoreHome",
103
+ "scoreHomeType": "msg",
104
+ "sportsGameState": "pre-game",
105
+ "reminders": false,
106
+ "reminderData": "payload.reminders",
107
+ "reminderDataType": "msg",
108
+ "actions": false,
109
+ "actionData": "payload.actions",
110
+ "actionDataType": "msg",
111
+ "x": 790,
112
+ "y": 180,
113
+ "wires": [
114
+ [
115
+ "3640e4ac216f5608"
116
+ ]
117
+ ]
118
+ },
119
+ {
120
+ "id": "983dd7c84dda8673",
121
+ "type": "inject",
122
+ "z": "01b0a9aca17246f3",
123
+ "g": "fac7e2cd3fa24b5c",
124
+ "name": "",
125
+ "props": [
126
+ {
127
+ "p": "payload"
128
+ },
129
+ {
130
+ "p": "topic",
131
+ "vt": "str"
132
+ },
133
+ {
134
+ "p": "payload"
135
+ },
136
+ {
137
+ "p": "payload.id",
138
+ "v": "",
139
+ "vt": "date"
140
+ },
141
+ {
142
+ "p": "payload.body",
143
+ "v": "Test message body",
144
+ "vt": "str"
145
+ },
146
+ {
147
+ "p": "payload.tinyIcon",
148
+ "v": "system://images/NOTIFICATION_GENERIC",
149
+ "vt": "str"
150
+ }
151
+ ],
152
+ "repeat": "",
153
+ "crontab": "",
154
+ "once": false,
155
+ "onceDelay": 0.1,
156
+ "topic": "Hey buddy!",
157
+ "payload": "{}",
158
+ "payloadType": "json",
159
+ "x": 350,
160
+ "y": 180,
161
+ "wires": [
162
+ [
163
+ "49a7fc32dee16d02"
164
+ ]
165
+ ]
166
+ },
167
+ {
168
+ "id": "49a7fc32dee16d02",
169
+ "type": "function",
170
+ "z": "01b0a9aca17246f3",
171
+ "g": "fac7e2cd3fa24b5c",
172
+ "name": "30 mins in future",
173
+ "func": "\nconst futureTime = new Date();\nfutureTime.setHours(futureTime.getHours() + 1);\n\nmsg.payload.time = futureTime.toISOString();\nreturn msg;",
174
+ "outputs": 1,
175
+ "timeout": 0,
176
+ "noerr": 0,
177
+ "initialize": "",
178
+ "finalize": "",
179
+ "libs": [],
180
+ "x": 560,
181
+ "y": 180,
182
+ "wires": [
183
+ [
184
+ "c1460b7f25bc5f74"
185
+ ]
186
+ ]
187
+ },
188
+ {
189
+ "id": "3640e4ac216f5608",
190
+ "type": "debug",
191
+ "z": "01b0a9aca17246f3",
192
+ "g": "fac7e2cd3fa24b5c",
193
+ "name": "debug 1",
194
+ "active": true,
195
+ "tosidebar": true,
196
+ "console": false,
197
+ "tostatus": false,
198
+ "complete": "true",
199
+ "targetType": "full",
200
+ "statusVal": "",
201
+ "statusType": "auto",
202
+ "x": 980,
203
+ "y": 180,
204
+ "wires": []
205
+ },
206
+ {
207
+ "id": "9b3b5f43620e4cf5",
208
+ "type": "catch",
209
+ "z": "01b0a9aca17246f3",
210
+ "g": "fac7e2cd3fa24b5c",
211
+ "name": "",
212
+ "scope": [
213
+ "c1460b7f25bc5f74"
214
+ ],
215
+ "uncaught": false,
216
+ "x": 830,
217
+ "y": 220,
218
+ "wires": [
219
+ [
220
+ "5c29bdc37973d3f0"
221
+ ]
222
+ ]
223
+ },
224
+ {
225
+ "id": "5c29bdc37973d3f0",
226
+ "type": "debug",
227
+ "z": "01b0a9aca17246f3",
228
+ "g": "fac7e2cd3fa24b5c",
229
+ "name": "debug 2",
230
+ "active": true,
231
+ "tosidebar": true,
232
+ "console": false,
233
+ "tostatus": false,
234
+ "complete": "true",
235
+ "targetType": "full",
236
+ "statusVal": "",
237
+ "statusType": "auto",
238
+ "x": 980,
239
+ "y": 220,
240
+ "wires": []
241
+ },
242
+ {
243
+ "id": "c94cbbf4395a9abe",
244
+ "type": "pebble-timeline-config",
245
+ "name": "Rebble - Home Assistant",
246
+ "apiUrl": "https://timeline-api.rebble.io"
247
+ },
248
+ {
249
+ "id": "768cfc3cc4b69809",
250
+ "type": "group",
251
+ "z": "01b0a9aca17246f3",
252
+ "name": "List timeline pins between two dates",
253
+ "style": {
254
+ "label": true
255
+ },
256
+ "nodes": [
257
+ "278520b03bca0675",
258
+ "b25eb2fafa9c4839",
259
+ "e8d4424760cea039"
260
+ ],
261
+ "x": 234,
262
+ "y": 299,
263
+ "w": 612,
264
+ "h": 82
265
+ },
266
+ {
267
+ "id": "278520b03bca0675",
268
+ "type": "pebble-timeline-list",
269
+ "z": "01b0a9aca17246f3",
270
+ "g": "768cfc3cc4b69809",
271
+ "name": "",
272
+ "config": "c94cbbf4395a9abe",
273
+ "apiUrl": "null",
274
+ "apiUrlType": "jsonata",
275
+ "token": "null",
276
+ "tokenType": "jsonata",
277
+ "startTime": "payload.startTime",
278
+ "startTimeType": "msg",
279
+ "endTime": "payload.endTime",
280
+ "endTimeType": "msg",
281
+ "x": 530,
282
+ "y": 340,
283
+ "wires": [
284
+ [
285
+ "e8d4424760cea039"
286
+ ]
287
+ ]
288
+ },
289
+ {
290
+ "id": "b25eb2fafa9c4839",
291
+ "type": "inject",
292
+ "z": "01b0a9aca17246f3",
293
+ "g": "768cfc3cc4b69809",
294
+ "name": "",
295
+ "props": [],
296
+ "repeat": "",
297
+ "crontab": "",
298
+ "once": false,
299
+ "onceDelay": 0.1,
300
+ "topic": "",
301
+ "x": 330,
302
+ "y": 340,
303
+ "wires": [
304
+ [
305
+ "278520b03bca0675"
306
+ ]
307
+ ]
308
+ },
309
+ {
310
+ "id": "e8d4424760cea039",
311
+ "type": "debug",
312
+ "z": "01b0a9aca17246f3",
313
+ "g": "768cfc3cc4b69809",
314
+ "name": "debug 3",
315
+ "active": true,
316
+ "tosidebar": true,
317
+ "console": false,
318
+ "tostatus": false,
319
+ "complete": "true",
320
+ "targetType": "full",
321
+ "statusVal": "",
322
+ "statusType": "auto",
323
+ "x": 740,
324
+ "y": 340,
325
+ "wires": []
326
+ },
327
+ {
328
+ "id": "12155e565c317627",
329
+ "type": "group",
330
+ "z": "01b0a9aca17246f3",
331
+ "name": "Add a pin, wait 5 seconds, then delete it",
332
+ "style": {
333
+ "label": true
334
+ },
335
+ "nodes": [
336
+ "b9fddb67e699a9f1",
337
+ "8608dae8af0df939",
338
+ "b6a976f5b0ccc2da",
339
+ "dec794e031149a0b",
340
+ "41033d14e0113dc9",
341
+ "412e2507beb7a53d",
342
+ "6fccd60cc41bb38d"
343
+ ],
344
+ "x": 234,
345
+ "y": 419,
346
+ "w": 872,
347
+ "h": 142
348
+ },
349
+ {
350
+ "id": "b9fddb67e699a9f1",
351
+ "type": "pebble-timeline-add",
352
+ "z": "01b0a9aca17246f3",
353
+ "g": "12155e565c317627",
354
+ "name": "",
355
+ "config": "c94cbbf4395a9abe",
356
+ "apiUrl": "null",
357
+ "apiUrlType": "jsonata",
358
+ "token": "null",
359
+ "tokenType": "jsonata",
360
+ "pinId": "payload.id",
361
+ "pinIdType": "msg",
362
+ "time": "payload.time",
363
+ "timeType": "msg",
364
+ "duration": "payload.duration",
365
+ "durationType": "msg",
366
+ "layoutType": "genericPin",
367
+ "title": "topic",
368
+ "titleType": "msg",
369
+ "subtitle": "payload.subtitle",
370
+ "subtitleType": "msg",
371
+ "body": "payload.body",
372
+ "bodyType": "msg",
373
+ "tinyIcon": "payload.tinyIcon",
374
+ "tinyIconType": "msg",
375
+ "smallIcon": "payload.smallIcon",
376
+ "smallIconType": "msg",
377
+ "largeIcon": "payload.largeIcon",
378
+ "largeIconType": "msg",
379
+ "primaryColor": "payload.primaryColor",
380
+ "primaryColorType": "msg",
381
+ "secondaryColor": "payload.secondaryColor",
382
+ "secondaryColorType": "msg",
383
+ "backgroundColor": "payload.backgroundColor",
384
+ "backgroundColorType": "msg",
385
+ "createNotification": false,
386
+ "updateNotification": false,
387
+ "headings": "null",
388
+ "headingsType": "jsonata",
389
+ "paragraphs": "null",
390
+ "paragraphsType": "jsonata",
391
+ "lastUpdated": "null",
392
+ "lastUpdatedType": "jsonata",
393
+ "createNotificationTitle": "payload.createNotification.title",
394
+ "createNotificationTitleType": "msg",
395
+ "createNotificationBody": "payload.createNotification.body",
396
+ "createNotificationBodyType": "msg",
397
+ "createNotificationTinyIcon": "payload.createNotification.tinyIcon",
398
+ "createNotificationTinyIconType": "msg",
399
+ "updateNotificationTime": "payload.updateNotification.time",
400
+ "updateNotificationTimeType": "msg",
401
+ "updateNotificationTitle": "payload.updateNotification.title",
402
+ "updateNotificationTitleType": "msg",
403
+ "updateNotificationBody": "payload.updateNotification.body",
404
+ "updateNotificationBodyType": "msg",
405
+ "updateNotificationTinyIcon": "payload.updateNotification.tinyIcon",
406
+ "updateNotificationTinyIconType": "msg",
407
+ "locationName": "payload.locationName",
408
+ "locationNameType": "msg",
409
+ "shortTitle": "payload.shortTitle",
410
+ "shortTitleType": "msg",
411
+ "shortSubtitle": "payload.shortSubtitle",
412
+ "shortSubtitleType": "msg",
413
+ "displayTime": "pin",
414
+ "rankAway": "payload.rankAway",
415
+ "rankAwayType": "msg",
416
+ "rankHome": "payload.rankHome",
417
+ "rankHomeType": "msg",
418
+ "nameAway": "payload.nameAway",
419
+ "nameAwayType": "msg",
420
+ "nameHome": "payload.nameHome",
421
+ "nameHomeType": "msg",
422
+ "recordAway": "payload.recordAway",
423
+ "recordAwayType": "msg",
424
+ "recordHome": "payload.recordHome",
425
+ "recordHomeType": "msg",
426
+ "scoreAway": "payload.scoreAway",
427
+ "scoreAwayType": "msg",
428
+ "scoreHome": "payload.scoreHome",
429
+ "scoreHomeType": "msg",
430
+ "sportsGameState": "pre-game",
431
+ "reminders": false,
432
+ "reminderData": "payload.reminders",
433
+ "reminderDataType": "msg",
434
+ "actions": false,
435
+ "actionData": "payload.actions",
436
+ "actionDataType": "msg",
437
+ "x": 750,
438
+ "y": 460,
439
+ "wires": [
440
+ [
441
+ "41033d14e0113dc9",
442
+ "6fccd60cc41bb38d"
443
+ ]
444
+ ]
445
+ },
446
+ {
447
+ "id": "8608dae8af0df939",
448
+ "type": "inject",
449
+ "z": "01b0a9aca17246f3",
450
+ "g": "12155e565c317627",
451
+ "name": "",
452
+ "props": [
453
+ {
454
+ "p": "payload"
455
+ },
456
+ {
457
+ "p": "topic",
458
+ "vt": "str"
459
+ },
460
+ {
461
+ "p": "payload"
462
+ },
463
+ {
464
+ "p": "payload.id",
465
+ "v": "",
466
+ "vt": "date"
467
+ },
468
+ {
469
+ "p": "payload.body",
470
+ "v": "This is just a pin deletion test. You can safely ignore me.",
471
+ "vt": "str"
472
+ },
473
+ {
474
+ "p": "payload.tinyIcon",
475
+ "v": "system://images/NOTIFICATION_GENERIC",
476
+ "vt": "str"
477
+ }
478
+ ],
479
+ "repeat": "",
480
+ "crontab": "",
481
+ "once": false,
482
+ "onceDelay": 0.1,
483
+ "topic": "Delete me!",
484
+ "payload": "{}",
485
+ "payloadType": "json",
486
+ "x": 350,
487
+ "y": 460,
488
+ "wires": [
489
+ [
490
+ "b6a976f5b0ccc2da"
491
+ ]
492
+ ]
493
+ },
494
+ {
495
+ "id": "b6a976f5b0ccc2da",
496
+ "type": "function",
497
+ "z": "01b0a9aca17246f3",
498
+ "g": "12155e565c317627",
499
+ "name": "30 mins in future",
500
+ "func": "\nconst futureTime = new Date();\nfutureTime.setHours(futureTime.getHours() + 1);\n\nmsg.payload.time = futureTime.toISOString();\nreturn msg;",
501
+ "outputs": 1,
502
+ "timeout": 0,
503
+ "noerr": 0,
504
+ "initialize": "",
505
+ "finalize": "",
506
+ "libs": [],
507
+ "x": 540,
508
+ "y": 460,
509
+ "wires": [
510
+ [
511
+ "b9fddb67e699a9f1"
512
+ ]
513
+ ]
514
+ },
515
+ {
516
+ "id": "dec794e031149a0b",
517
+ "type": "pebble-timeline-delete",
518
+ "z": "01b0a9aca17246f3",
519
+ "g": "12155e565c317627",
520
+ "name": "",
521
+ "config": "c94cbbf4395a9abe",
522
+ "apiUrl": "null",
523
+ "apiUrlType": "jsonata",
524
+ "token": "null",
525
+ "tokenType": "jsonata",
526
+ "pinId": "payload.pin.id",
527
+ "pinIdType": "msg",
528
+ "x": 750,
529
+ "y": 520,
530
+ "wires": [
531
+ [
532
+ "412e2507beb7a53d"
533
+ ]
534
+ ]
535
+ },
536
+ {
537
+ "id": "41033d14e0113dc9",
538
+ "type": "delay",
539
+ "z": "01b0a9aca17246f3",
540
+ "g": "12155e565c317627",
541
+ "name": "",
542
+ "pauseType": "delay",
543
+ "timeout": "5",
544
+ "timeoutUnits": "seconds",
545
+ "rate": "1",
546
+ "nbRateUnits": "1",
547
+ "rateUnits": "second",
548
+ "randomFirst": "1",
549
+ "randomLast": "5",
550
+ "randomUnits": "seconds",
551
+ "drop": false,
552
+ "allowrate": false,
553
+ "outputs": 1,
554
+ "x": 560,
555
+ "y": 520,
556
+ "wires": [
557
+ [
558
+ "dec794e031149a0b"
559
+ ]
560
+ ]
561
+ },
562
+ {
563
+ "id": "412e2507beb7a53d",
564
+ "type": "debug",
565
+ "z": "01b0a9aca17246f3",
566
+ "g": "12155e565c317627",
567
+ "name": "Debug pin deletion",
568
+ "active": true,
569
+ "tosidebar": true,
570
+ "console": false,
571
+ "tostatus": false,
572
+ "complete": "true",
573
+ "targetType": "full",
574
+ "statusVal": "",
575
+ "statusType": "auto",
576
+ "x": 970,
577
+ "y": 520,
578
+ "wires": []
579
+ },
580
+ {
581
+ "id": "6fccd60cc41bb38d",
582
+ "type": "debug",
583
+ "z": "01b0a9aca17246f3",
584
+ "g": "12155e565c317627",
585
+ "name": "Debug pin added",
586
+ "active": true,
587
+ "tosidebar": true,
588
+ "console": false,
589
+ "tostatus": false,
590
+ "complete": "true",
591
+ "targetType": "full",
592
+ "statusVal": "",
593
+ "statusType": "auto",
594
+ "x": 970,
595
+ "y": 460,
596
+ "wires": []
597
+ }
598
+ ]
Binary file