node-red-contrib-boolean-logic-ultimate 1.2.3 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,186 @@
1
+ [
2
+ {
3
+ "id": "rws_tab_1",
4
+ "type": "tab",
5
+ "label": "RailwaySwitchUltimate - route by switcher",
6
+ "disabled": false,
7
+ "info": "Esempio: cambia l'uscita attiva inviando un messaggio sul topic di switch (switcher)."
8
+ },
9
+ {
10
+ "id": "rws_cmt_1",
11
+ "type": "comment",
12
+ "z": "rws_tab_1",
13
+ "name": "Switcher topic: switcher (payload 0..4)",
14
+ "info": "1) Invia switcher=0/1/2 per selezionare l'uscita.\n2) Invia DATA e osserva su quale debug arriva.",
15
+ "x": 280,
16
+ "y": 60,
17
+ "wires": []
18
+ },
19
+ {
20
+ "id": "rws_inj_sw0",
21
+ "type": "inject",
22
+ "z": "rws_tab_1",
23
+ "name": "switcher = 0",
24
+ "props": [
25
+ { "p": "payload", "v": "0", "vt": "num" },
26
+ { "p": "topic", "v": "switcher", "vt": "str" }
27
+ ],
28
+ "repeat": "",
29
+ "crontab": "",
30
+ "once": false,
31
+ "onceDelay": 0.1,
32
+ "x": 150,
33
+ "y": 140,
34
+ "wires": [["rws_node_1"]]
35
+ },
36
+ {
37
+ "id": "rws_inj_sw1",
38
+ "type": "inject",
39
+ "z": "rws_tab_1",
40
+ "name": "switcher = 1",
41
+ "props": [
42
+ { "p": "payload", "v": "1", "vt": "num" },
43
+ { "p": "topic", "v": "switcher", "vt": "str" }
44
+ ],
45
+ "repeat": "",
46
+ "crontab": "",
47
+ "once": false,
48
+ "onceDelay": 0.1,
49
+ "x": 150,
50
+ "y": 180,
51
+ "wires": [["rws_node_1"]]
52
+ },
53
+ {
54
+ "id": "rws_inj_sw2",
55
+ "type": "inject",
56
+ "z": "rws_tab_1",
57
+ "name": "switcher = 2",
58
+ "props": [
59
+ { "p": "payload", "v": "2", "vt": "num" },
60
+ { "p": "topic", "v": "switcher", "vt": "str" }
61
+ ],
62
+ "repeat": "",
63
+ "crontab": "",
64
+ "once": false,
65
+ "onceDelay": 0.1,
66
+ "x": 150,
67
+ "y": 220,
68
+ "wires": [["rws_node_1"]]
69
+ },
70
+ {
71
+ "id": "rws_inj_data",
72
+ "type": "inject",
73
+ "z": "rws_tab_1",
74
+ "name": "DATA",
75
+ "props": [
76
+ { "p": "payload", "v": "data", "vt": "str" },
77
+ { "p": "topic", "v": "data", "vt": "str" }
78
+ ],
79
+ "repeat": "",
80
+ "crontab": "",
81
+ "once": false,
82
+ "onceDelay": 0.1,
83
+ "x": 120,
84
+ "y": 300,
85
+ "wires": [["rws_node_1"]]
86
+ },
87
+ {
88
+ "id": "rws_node_1",
89
+ "type": "RailwaySwitchUltimate",
90
+ "z": "rws_tab_1",
91
+ "name": "Railway Switch",
92
+ "triggertopic": "switcher",
93
+ "initializewith": "1",
94
+ "payloadPropName": "payload",
95
+ "translatorConfig": "",
96
+ "x": 370,
97
+ "y": 220,
98
+ "wires": [["rws_dbg_0"], ["rws_dbg_1"], ["rws_dbg_2"], ["rws_dbg_3"], ["rws_dbg_4"]]
99
+ },
100
+ {
101
+ "id": "rws_dbg_0",
102
+ "type": "debug",
103
+ "z": "rws_tab_1",
104
+ "name": "PIN 0",
105
+ "active": true,
106
+ "tosidebar": true,
107
+ "console": false,
108
+ "tostatus": false,
109
+ "complete": "true",
110
+ "targetType": "full",
111
+ "statusVal": "",
112
+ "statusType": "auto",
113
+ "x": 560,
114
+ "y": 140,
115
+ "wires": []
116
+ },
117
+ {
118
+ "id": "rws_dbg_1",
119
+ "type": "debug",
120
+ "z": "rws_tab_1",
121
+ "name": "PIN 1",
122
+ "active": true,
123
+ "tosidebar": true,
124
+ "console": false,
125
+ "tostatus": false,
126
+ "complete": "true",
127
+ "targetType": "full",
128
+ "statusVal": "",
129
+ "statusType": "auto",
130
+ "x": 560,
131
+ "y": 180,
132
+ "wires": []
133
+ },
134
+ {
135
+ "id": "rws_dbg_2",
136
+ "type": "debug",
137
+ "z": "rws_tab_1",
138
+ "name": "PIN 2",
139
+ "active": true,
140
+ "tosidebar": true,
141
+ "console": false,
142
+ "tostatus": false,
143
+ "complete": "true",
144
+ "targetType": "full",
145
+ "statusVal": "",
146
+ "statusType": "auto",
147
+ "x": 560,
148
+ "y": 220,
149
+ "wires": []
150
+ },
151
+ {
152
+ "id": "rws_dbg_3",
153
+ "type": "debug",
154
+ "z": "rws_tab_1",
155
+ "name": "PIN 3",
156
+ "active": true,
157
+ "tosidebar": true,
158
+ "console": false,
159
+ "tostatus": false,
160
+ "complete": "true",
161
+ "targetType": "full",
162
+ "statusVal": "",
163
+ "statusType": "auto",
164
+ "x": 560,
165
+ "y": 260,
166
+ "wires": []
167
+ },
168
+ {
169
+ "id": "rws_dbg_4",
170
+ "type": "debug",
171
+ "z": "rws_tab_1",
172
+ "name": "PIN 4",
173
+ "active": true,
174
+ "tosidebar": true,
175
+ "console": false,
176
+ "tostatus": false,
177
+ "complete": "true",
178
+ "targetType": "full",
179
+ "statusVal": "",
180
+ "statusType": "auto",
181
+ "x": 560,
182
+ "y": 300,
183
+ "wires": []
184
+ }
185
+ ]
186
+
@@ -0,0 +1,178 @@
1
+ [
2
+ {
3
+ "id": "rl_tab_1",
4
+ "type": "tab",
5
+ "label": "RateLimiterUltimate - debounce + control",
6
+ "disabled": false,
7
+ "info": "Esempio: genera un burst di messaggi e limita la frequenza con RateLimiter (debounce)."
8
+ },
9
+ {
10
+ "id": "rl_cmt_1",
11
+ "type": "comment",
12
+ "z": "rl_tab_1",
13
+ "name": "Burst → RateLimiter → Forward/Diagnostics",
14
+ "info": "Clicca BURST per generare messaggi ravvicinati. Output 1 = forward; Output 2 = diagnostica.\nUsa i pulsanti RESET/FLUSH e CHANGE MODE via topic \"rate\".",
15
+ "x": 290,
16
+ "y": 60,
17
+ "wires": []
18
+ },
19
+ {
20
+ "id": "rl_inj_burst",
21
+ "type": "inject",
22
+ "z": "rl_tab_1",
23
+ "name": "BURST (20 msgs)",
24
+ "props": [
25
+ { "p": "count", "v": "20", "vt": "num" },
26
+ { "p": "interval", "v": "50", "vt": "num" }
27
+ ],
28
+ "repeat": "",
29
+ "crontab": "",
30
+ "once": false,
31
+ "onceDelay": 0.1,
32
+ "x": 160,
33
+ "y": 140,
34
+ "wires": [["rl_fn_burst"]]
35
+ },
36
+ {
37
+ "id": "rl_fn_burst",
38
+ "type": "function",
39
+ "z": "rl_tab_1",
40
+ "name": "Burst generator",
41
+ "func": "const count = Number(msg.count || 20);\nconst interval = Number(msg.interval || 50);\nlet i = 0;\n\nconst sendOne = () => {\n node.send({ topic: 'data', payload: i, index: i, ts: Date.now() });\n i += 1;\n if (i < count) {\n setTimeout(sendOne, interval);\n }\n};\n\nsendOne();\nreturn null;",
42
+ "outputs": 1,
43
+ "noerr": 0,
44
+ "initialize": "",
45
+ "finalize": "",
46
+ "libs": [],
47
+ "x": 370,
48
+ "y": 140,
49
+ "wires": [["rl_node_1"]]
50
+ },
51
+ {
52
+ "id": "rl_inj_reset",
53
+ "type": "inject",
54
+ "z": "rl_tab_1",
55
+ "name": "RESET",
56
+ "props": [
57
+ { "p": "topic", "v": "rate", "vt": "str" },
58
+ { "p": "reset", "v": "true", "vt": "bool" }
59
+ ],
60
+ "repeat": "",
61
+ "crontab": "",
62
+ "once": false,
63
+ "onceDelay": 0.1,
64
+ "x": 130,
65
+ "y": 220,
66
+ "wires": [["rl_node_1"]]
67
+ },
68
+ {
69
+ "id": "rl_inj_flush",
70
+ "type": "inject",
71
+ "z": "rl_tab_1",
72
+ "name": "FLUSH",
73
+ "props": [
74
+ { "p": "topic", "v": "rate", "vt": "str" },
75
+ { "p": "flush", "v": "true", "vt": "bool" }
76
+ ],
77
+ "repeat": "",
78
+ "crontab": "",
79
+ "once": false,
80
+ "onceDelay": 0.1,
81
+ "x": 130,
82
+ "y": 260,
83
+ "wires": [["rl_node_1"]]
84
+ },
85
+ {
86
+ "id": "rl_inj_mode_throttle",
87
+ "type": "inject",
88
+ "z": "rl_tab_1",
89
+ "name": "MODE throttle (200ms)",
90
+ "props": [
91
+ { "p": "topic", "v": "rate", "vt": "str" },
92
+ { "p": "mode", "v": "throttle", "vt": "str" },
93
+ { "p": "interval", "v": "200", "vt": "num" }
94
+ ],
95
+ "repeat": "",
96
+ "crontab": "",
97
+ "once": false,
98
+ "onceDelay": 0.1,
99
+ "x": 170,
100
+ "y": 300,
101
+ "wires": [["rl_node_1"]]
102
+ },
103
+ {
104
+ "id": "rl_inj_mode_debounce",
105
+ "type": "inject",
106
+ "z": "rl_tab_1",
107
+ "name": "MODE debounce (500ms trailing)",
108
+ "props": [
109
+ { "p": "topic", "v": "rate", "vt": "str" },
110
+ { "p": "mode", "v": "debounce", "vt": "str" },
111
+ { "p": "wait", "v": "500", "vt": "num" },
112
+ { "p": "emitOn", "v": "trailing", "vt": "str" }
113
+ ],
114
+ "repeat": "",
115
+ "crontab": "",
116
+ "once": false,
117
+ "onceDelay": 0.1,
118
+ "x": 210,
119
+ "y": 340,
120
+ "wires": [["rl_node_1"]]
121
+ },
122
+ {
123
+ "id": "rl_node_1",
124
+ "type": "RateLimiterUltimate",
125
+ "z": "rl_tab_1",
126
+ "name": "RateLimiter",
127
+ "mode": "debounce",
128
+ "wait": 500,
129
+ "emitOn": "trailing",
130
+ "interval": 1000,
131
+ "trailing": false,
132
+ "windowSize": 1000,
133
+ "maxInWindow": 10,
134
+ "dropStrategy": "drop",
135
+ "payloadPropName": "payload",
136
+ "translatorConfig": "",
137
+ "controlTopic": "rate",
138
+ "statInterval": 2,
139
+ "x": 590,
140
+ "y": 220,
141
+ "wires": [["rl_dbg_fwd"], ["rl_dbg_diag"]]
142
+ },
143
+ {
144
+ "id": "rl_dbg_fwd",
145
+ "type": "debug",
146
+ "z": "rl_tab_1",
147
+ "name": "Forward",
148
+ "active": true,
149
+ "tosidebar": true,
150
+ "console": false,
151
+ "tostatus": false,
152
+ "complete": "true",
153
+ "targetType": "full",
154
+ "statusVal": "",
155
+ "statusType": "auto",
156
+ "x": 780,
157
+ "y": 200,
158
+ "wires": []
159
+ },
160
+ {
161
+ "id": "rl_dbg_diag",
162
+ "type": "debug",
163
+ "z": "rl_tab_1",
164
+ "name": "Diagnostics",
165
+ "active": true,
166
+ "tosidebar": true,
167
+ "console": false,
168
+ "tostatus": false,
169
+ "complete": "payload",
170
+ "targetType": "msg",
171
+ "statusVal": "",
172
+ "statusType": "auto",
173
+ "x": 790,
174
+ "y": 240,
175
+ "wires": []
176
+ }
177
+ ]
178
+
@@ -0,0 +1,80 @@
1
+ [
2
+ {
3
+ "id": "sou_tab_1",
4
+ "type": "tab",
5
+ "label": "SimpleOutputUltimate - true/false emit",
6
+ "disabled": false,
7
+ "info": "Esempio: ad ogni input il nodo emette TRUE su output 1 e FALSE su output 2 (indipendentemente dal payload in ingresso)."
8
+ },
9
+ {
10
+ "id": "sou_cmt_1",
11
+ "type": "comment",
12
+ "z": "sou_tab_1",
13
+ "name": "Qualsiasi messaggio in ingresso genera true/false",
14
+ "info": "Utile per generare rapidamente un TRUE/FALSE senza usare due inject separati.",
15
+ "x": 260,
16
+ "y": 60,
17
+ "wires": []
18
+ },
19
+ {
20
+ "id": "sou_inj_1",
21
+ "type": "inject",
22
+ "z": "sou_tab_1",
23
+ "name": "Trigger",
24
+ "props": [
25
+ { "p": "payload", "v": "anything", "vt": "str" },
26
+ { "p": "topic", "v": "trigger", "vt": "str" }
27
+ ],
28
+ "repeat": "",
29
+ "crontab": "",
30
+ "once": false,
31
+ "onceDelay": 0.1,
32
+ "x": 150,
33
+ "y": 160,
34
+ "wires": [["sou_node_1"]]
35
+ },
36
+ {
37
+ "id": "sou_node_1",
38
+ "type": "SimpleOutputUltimate",
39
+ "z": "sou_tab_1",
40
+ "name": "Output",
41
+ "x": 370,
42
+ "y": 160,
43
+ "wires": [["sou_dbg_true"], ["sou_dbg_false"]]
44
+ },
45
+ {
46
+ "id": "sou_dbg_true",
47
+ "type": "debug",
48
+ "z": "sou_tab_1",
49
+ "name": "True",
50
+ "active": true,
51
+ "tosidebar": true,
52
+ "console": false,
53
+ "tostatus": false,
54
+ "complete": "payload",
55
+ "targetType": "msg",
56
+ "statusVal": "",
57
+ "statusType": "auto",
58
+ "x": 540,
59
+ "y": 140,
60
+ "wires": []
61
+ },
62
+ {
63
+ "id": "sou_dbg_false",
64
+ "type": "debug",
65
+ "z": "sou_tab_1",
66
+ "name": "False",
67
+ "active": true,
68
+ "tosidebar": true,
69
+ "console": false,
70
+ "tostatus": false,
71
+ "complete": "payload",
72
+ "targetType": "msg",
73
+ "statusVal": "",
74
+ "statusType": "auto",
75
+ "x": 540,
76
+ "y": 180,
77
+ "wires": []
78
+ }
79
+ ]
80
+
@@ -0,0 +1,145 @@
1
+ [
2
+ {
3
+ "id": "st_tab_1",
4
+ "type": "tab",
5
+ "label": "StaircaseLightUltimate - timed light",
6
+ "disabled": false,
7
+ "info": "Esempio: accende la luce per una durata e la spegne automaticamente, con warning pre-off opzionale."
8
+ },
9
+ {
10
+ "id": "st_cmt_1",
11
+ "type": "comment",
12
+ "z": "st_tab_1",
13
+ "name": "Trigger = payload true, off = payload false (se abilitato)",
14
+ "info": "Il topic di controllo è \"stairs\" (comandi on/off/extend).",
15
+ "x": 300,
16
+ "y": 60,
17
+ "wires": []
18
+ },
19
+ {
20
+ "id": "st_inj_motion",
21
+ "type": "inject",
22
+ "z": "st_tab_1",
23
+ "name": "Motion (true)",
24
+ "props": [
25
+ { "p": "payload", "v": "true", "vt": "bool" },
26
+ { "p": "topic", "v": "sensor", "vt": "str" }
27
+ ],
28
+ "repeat": "",
29
+ "crontab": "",
30
+ "once": false,
31
+ "onceDelay": 0.1,
32
+ "x": 150,
33
+ "y": 140,
34
+ "wires": [["st_node_1"]]
35
+ },
36
+ {
37
+ "id": "st_inj_off_input",
38
+ "type": "inject",
39
+ "z": "st_tab_1",
40
+ "name": "Off input (false)",
41
+ "props": [
42
+ { "p": "payload", "v": "false", "vt": "bool" },
43
+ { "p": "topic", "v": "sensor", "vt": "str" }
44
+ ],
45
+ "repeat": "",
46
+ "crontab": "",
47
+ "once": false,
48
+ "onceDelay": 0.1,
49
+ "x": 160,
50
+ "y": 180,
51
+ "wires": [["st_node_1"]]
52
+ },
53
+ {
54
+ "id": "st_inj_extend",
55
+ "type": "inject",
56
+ "z": "st_tab_1",
57
+ "name": "Extend (topic=stairs)",
58
+ "props": [
59
+ { "p": "topic", "v": "stairs", "vt": "str" },
60
+ { "p": "extend", "v": "true", "vt": "bool" }
61
+ ],
62
+ "repeat": "",
63
+ "crontab": "",
64
+ "once": false,
65
+ "onceDelay": 0.1,
66
+ "x": 170,
67
+ "y": 240,
68
+ "wires": [["st_node_1"]]
69
+ },
70
+ {
71
+ "id": "st_inj_force_off",
72
+ "type": "inject",
73
+ "z": "st_tab_1",
74
+ "name": "Force off (topic=stairs)",
75
+ "props": [
76
+ { "p": "topic", "v": "stairs", "vt": "str" },
77
+ { "p": "command", "v": "off", "vt": "str" }
78
+ ],
79
+ "repeat": "",
80
+ "crontab": "",
81
+ "once": false,
82
+ "onceDelay": 0.1,
83
+ "x": 180,
84
+ "y": 280,
85
+ "wires": [["st_node_1"]]
86
+ },
87
+ {
88
+ "id": "st_node_1",
89
+ "type": "StaircaseLightUltimate",
90
+ "z": "st_tab_1",
91
+ "name": "Stairs",
92
+ "controlTopic": "stairs",
93
+ "payloadPropName": "payload",
94
+ "translatorConfig": "",
95
+ "durationSeconds": 10,
96
+ "warningEnabled": true,
97
+ "warningOffsetSeconds": 3,
98
+ "restartOnTrigger": true,
99
+ "allowOffInput": true,
100
+ "onPayload": true,
101
+ "onPayloadType": "bool",
102
+ "offPayload": false,
103
+ "offPayloadType": "bool",
104
+ "warningPayload": "warning",
105
+ "warningPayloadType": "str",
106
+ "x": 390,
107
+ "y": 200,
108
+ "wires": [["st_dbg_cmd"], ["st_dbg_warn"]]
109
+ },
110
+ {
111
+ "id": "st_dbg_cmd",
112
+ "type": "debug",
113
+ "z": "st_tab_1",
114
+ "name": "Light command",
115
+ "active": true,
116
+ "tosidebar": true,
117
+ "console": false,
118
+ "tostatus": false,
119
+ "complete": "true",
120
+ "targetType": "full",
121
+ "statusVal": "",
122
+ "statusType": "auto",
123
+ "x": 600,
124
+ "y": 180,
125
+ "wires": []
126
+ },
127
+ {
128
+ "id": "st_dbg_warn",
129
+ "type": "debug",
130
+ "z": "st_tab_1",
131
+ "name": "Warning",
132
+ "active": true,
133
+ "tosidebar": true,
134
+ "console": false,
135
+ "tostatus": false,
136
+ "complete": "true",
137
+ "targetType": "full",
138
+ "statusVal": "",
139
+ "statusType": "auto",
140
+ "x": 580,
141
+ "y": 220,
142
+ "wires": []
143
+ }
144
+ ]
145
+
@@ -0,0 +1,61 @@
1
+ [
2
+ {
3
+ "id": "stu_tab_1",
4
+ "type": "tab",
5
+ "label": "StatusUltimate - show msg property",
6
+ "disabled": false,
7
+ "info": "Esempio: mostra il valore di una proprietà del msg nello status del nodo, e lascia passare il msg."
8
+ },
9
+ {
10
+ "id": "stu_cmt_1",
11
+ "type": "comment",
12
+ "z": "stu_tab_1",
13
+ "name": "Lo status mostra msg.payload",
14
+ "info": "Configura la proprietà da mostrare (es. payload, mycar.color, ecc.).",
15
+ "x": 200,
16
+ "y": 60,
17
+ "wires": []
18
+ },
19
+ {
20
+ "id": "stu_inj_1",
21
+ "type": "inject",
22
+ "z": "stu_tab_1",
23
+ "name": "payload = \"Ciao\"",
24
+ "props": [{ "p": "payload", "v": "Ciao", "vt": "str" }],
25
+ "repeat": "",
26
+ "crontab": "",
27
+ "once": false,
28
+ "onceDelay": 0.1,
29
+ "x": 150,
30
+ "y": 140,
31
+ "wires": [["stu_node_1"]]
32
+ },
33
+ {
34
+ "id": "stu_node_1",
35
+ "type": "StatusUltimate",
36
+ "z": "stu_tab_1",
37
+ "name": "Status",
38
+ "property": "payload",
39
+ "x": 340,
40
+ "y": 140,
41
+ "wires": [["stu_dbg_1"]]
42
+ },
43
+ {
44
+ "id": "stu_dbg_1",
45
+ "type": "debug",
46
+ "z": "stu_tab_1",
47
+ "name": "Pass-through",
48
+ "active": true,
49
+ "tosidebar": true,
50
+ "console": false,
51
+ "tostatus": false,
52
+ "complete": "true",
53
+ "targetType": "full",
54
+ "statusVal": "",
55
+ "statusType": "auto",
56
+ "x": 560,
57
+ "y": 140,
58
+ "wires": []
59
+ }
60
+ ]
61
+