node-red-contrib-homekit-bridged 2.0.0-dev.0 → 2.0.0-dev.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.
Files changed (45) hide show
  1. package/build/lib/HAPHostNode.js +59 -64
  2. package/build/lib/HAPServiceNode.js +91 -95
  3. package/build/lib/HAPServiceNode2.js +93 -97
  4. package/build/lib/Storage.d.ts +3 -3
  5. package/build/lib/Storage.js +2 -2
  6. package/build/lib/api.js +26 -29
  7. package/build/lib/hap/HAPCharacteristic.d.ts +1 -1
  8. package/build/lib/hap/HAPService.d.ts +1 -1
  9. package/build/lib/hap/eve-app/EveCharacteristics.d.ts +1 -1
  10. package/build/lib/hap/eve-app/EveCharacteristics.js +10 -10
  11. package/build/lib/types/CustomCharacteristicType.d.ts +1 -1
  12. package/build/lib/types/HAPHostConfigType.d.ts +4 -4
  13. package/build/lib/types/HAPHostNodeType.d.ts +4 -4
  14. package/build/lib/types/HAPService2ConfigType.d.ts +2 -2
  15. package/build/lib/types/HAPService2NodeType.d.ts +3 -3
  16. package/build/lib/types/HAPServiceConfigType.d.ts +3 -3
  17. package/build/lib/types/HAPServiceNodeType.d.ts +10 -10
  18. package/build/lib/types/HAPStatusConfigType.d.ts +1 -1
  19. package/build/lib/types/HAPStatusNodeType.d.ts +5 -5
  20. package/build/lib/types/NodeType.d.ts +1 -1
  21. package/build/lib/types/storage/SerializedHostType.d.ts +2 -2
  22. package/build/lib/utils/AccessoryUtils.js +15 -15
  23. package/build/lib/utils/BridgeUtils.js +5 -5
  24. package/build/lib/utils/CharacteristicUtils.js +6 -6
  25. package/build/lib/utils/CharacteristicUtils2.js +6 -6
  26. package/build/lib/utils/NodeStatusUtils.d.ts +2 -2
  27. package/build/lib/utils/NodeStatusUtils.js +2 -2
  28. package/build/lib/utils/ServiceUtils.js +39 -38
  29. package/build/lib/utils/ServiceUtils2.js +39 -37
  30. package/build/lib/utils/index.js +2 -2
  31. package/build/nodes/nrchkb.js +2 -2
  32. package/build/nodes/status.js +15 -16
  33. package/examples/demo/01 - ALL Demos single import.json +64 -318
  34. package/examples/demo/02 - Air Purifier.json +279 -328
  35. package/examples/demo/03 - Air Quality sensor with Battery.json +254 -282
  36. package/examples/demo/04 - Dimmable Bulb.json +172 -189
  37. package/examples/demo/05 - Color Bulb (HSV).json +195 -216
  38. package/examples/demo/06 - Fan (simple, 3 speeds).json +240 -265
  39. package/examples/demo/07 - Fan (with speed, oscillate, rotation direction).json +175 -192
  40. package/examples/demo/08 - CO2 detector.json +224 -255
  41. package/examples/demo/09 - CO (carbon monoxide) example.json +255 -290
  42. package/examples/demo/10 - Door window contact sensor.json +234 -265
  43. package/examples/demos (advanced)/01 - Television with inputs and speaker.json +541 -607
  44. package/examples/switch/01 - Plain Switch.json +7 -27
  45. package/package.json +83 -81
@@ -1,293 +1,258 @@
1
1
  [
2
- {
3
- "id": "6eaa9b9e.282734",
4
- "type": "group",
5
- "z": "60b06629.a2ebd",
6
- "name": "CO plus CO2 Sensor: input only sensor",
7
- "style": {
8
- "stroke": "#999999",
9
- "fill": "none",
10
- "label": true,
11
- "label-position": "nw",
12
- "color": "#a4a4a4"
13
- },
14
- "nodes": [
15
- "2e6738a6.ef5dd8",
16
- "79889759.8219c",
17
- "7f53465b.356a68",
18
- "97aff586.786ff8",
19
- "659ff3da.236404",
20
- "e6105066.f8911",
21
- "b433a780.665a7",
22
- "d4b30334.a19e58",
23
- "b0eeeb34.2dde8"
24
- ],
25
- "x": 14,
26
- "y": 1059,
27
- "w": 752,
28
- "h": 282,
29
- "info": "# Combined Sensor\nThis is a sensor which will display both Carbon Monoxide (poisonous, deadly gas) and Carbon Dioxide (what humans exhale) levels.\n\n# CO Sensor\n\nThere are three inputs to this example, one for each level of Carbon Monoxide in the air. Options are:\n\n**0 ppm:** this will assume no CO in the air <br/>\n**Low level:** this will assume a level between 1 and 35 ppm, inclusive. This level is generally assumed to not cause problems in healthy adults <br/>\n**Dangerous level:** this will assume a level between 35 and 5000, inclusive; this will also trigger an alert in Home app\n\n## IF YOU HAVE A CARBON MONOXIDE DETECTOR EVER READING ABOVE 35 PPM, PLEASE EVACUATE THE AREA AND SEEK FRESH AIR IMMEDIATELY TO AVOID RISK OF DEATH ##\n\n# CO2 Sensor\n\nThere are three inputs to this example, one for each level of Carbon Dioxide in the air. Options are:\n\n**0 ppm:** this will assume no CO2 in the air <br/>\n**CO2 Level:** this will assume a level between 1 and 100,000 ppm, inclusive <br/>\n**Dangerous level:** this will assume a level between 1,000 and 100,000, inclusive\n\n"
2
+ {
3
+ "id": "6eaa9b9e.282734",
4
+ "type": "group",
5
+ "z": "60b06629.a2ebd",
6
+ "name": "CO plus CO2 Sensor: input only sensor",
7
+ "style": {
8
+ "stroke": "#999999",
9
+ "fill": "none",
10
+ "label": true,
11
+ "label-position": "nw",
12
+ "color": "#a4a4a4"
30
13
  },
31
- {
32
- "id": "2e6738a6.ef5dd8",
33
- "type": "homekit-service",
34
- "z": "60b06629.a2ebd",
35
- "g": "6eaa9b9e.282734",
36
- "isParent": true,
37
- "bridge": "409001a1.3e7a78",
38
- "parentService": "",
39
- "name": "CO detector",
40
- "serviceName": "CarbonMonoxideSensor",
41
- "topic": "",
42
- "filter": false,
43
- "manufacturer": "MONOxide",
44
- "model": "1",
45
- "serialNo": "2",
46
- "firmwareRev": "2",
47
- "hardwareRev": "2",
48
- "softwareRev": "1.0.0",
49
- "cameraConfigVideoProcessor": "ffmpeg",
50
- "cameraConfigSource": "",
51
- "cameraConfigStillImageSource": "",
52
- "cameraConfigMaxStreams": 2,
53
- "cameraConfigMaxWidth": 1280,
54
- "cameraConfigMaxHeight": 720,
55
- "cameraConfigMaxFPS": 10,
56
- "cameraConfigMaxBitrate": 300,
57
- "cameraConfigVideoCodec": "libx264",
58
- "cameraConfigAudioCodec": "libfdk_aac",
59
- "cameraConfigAudio": false,
60
- "cameraConfigPacketSize": 1316,
61
- "cameraConfigVerticalFlip": false,
62
- "cameraConfigHorizontalFlip": false,
63
- "cameraConfigMapVideo": "0:0",
64
- "cameraConfigMapAudio": "0:1",
65
- "cameraConfigVideoFilter": "scale=1280:720",
66
- "cameraConfigAdditionalCommandLine": "-tune zerolatency",
67
- "cameraConfigDebug": false,
68
- "cameraConfigSnapshotOutput": "disabled",
69
- "cameraConfigInterfaceName": "",
70
- "characteristicProperties": "{\n \"CarbonMonoxideLevel\":{\n \"maxValue\":5000\n },\n \"CarbonMonoxidePeakLevel\":{\n \"maxValue\":5000\n },\n \"CarbonDioxideLevel\":true,\n \"CarbonDioxidePeakLevel\":true\n}",
71
- "outputs": 2,
72
- "x": 670,
73
- "y": 1100,
74
- "wires": [
75
- [],
76
- []
77
- ]
78
- },
79
- {
80
- "id": "79889759.8219c",
81
- "type": "function",
82
- "z": "60b06629.a2ebd",
83
- "g": "6eaa9b9e.282734",
84
- "name": "Carbon DIoxide",
85
- "func": "if(msg.payload === 0){\n context.set('lastPeak',0);\n newMsg = {\n payload: {\n \"CarbonDioxideLevel\":0\n }\n }\n return newMsg;\n}\n\n// Initialize vars\nvar CurrentLevel = 0;\nvar lastPeak = context.get('lastPeak');\n\n// Set random level\nif(msg.payload === \"CO2\"){\n CurrentLevel = Math.floor(Math.random() * (100000 - 1 + 1) + 1);\n}\n\n\n// Formulate output message\nvar newMsg = {\n payload: {\n \"CarbonDioxideLevel\" : CurrentLevel\n }\n};\n\n// Set new peak level\nif(CurrentLevel > lastPeak){\n lastPeak = CurrentLevel;\n context.set('lastPeak',CurrentLevel);\n newMsg.payload.CarbonDioxidePeakLevel = CurrentLevel;\n}\n\nreturn newMsg;",
86
- "outputs": 1,
87
- "noerr": 0,
88
- "initialize": "// Code added here will be run once\n// whenever the node is deployed.\ncontext.set('lastPeak',0);",
89
- "finalize": "",
90
- "x": 380,
91
- "y": 1260,
92
- "wires": [
93
- [
94
- "2e6738a6.ef5dd8"
95
- ]
96
- ]
97
- },
98
- {
99
- "id": "7f53465b.356a68",
100
- "type": "function",
101
- "z": "60b06629.a2ebd",
102
- "g": "6eaa9b9e.282734",
103
- "name": "Carbon MONoxide",
104
- "func": "// Reset all values to 0 if 0ppm input\nif(msg.payload === 0){\n context.set('lastPeak',0);\n newMsg = {\n payload: {\n \"CarbonMonoxideLevel\":0,\n \"CarbonMonoxidePeakLevel\":0,\n \"CarbonMonoxideDetected\":0\n }\n };\n return newMsg;\n}\n\n// Initialize vars\nvar CurrentLevel = 0;\nvar lastPeak = context.get('lastPeak');\n\n// Set random Low or Dangerous levels\nif(msg.payload === \"Low\"){\n CurrentLevel = Math.floor(Math.random() * (35 - 1 + 1) + 1);\n}\nif(msg.payload === \"Danger\"){\n CurrentLevel = Math.floor(Math.random() * (5000 - 35 + 1) + 35);\n}\n\n// Formulate output message\nvar newMsg = {\n payload: {\n \"CarbonMonoxideLevel\" : CurrentLevel,\n \"CarbonMonoxideDetected\" : 0\n }\n};\n\n// Set new peak level\nif(CurrentLevel > lastPeak){\n lastPeak = CurrentLevel;\n context.set('lastPeak',CurrentLevel);\n newMsg.payload.CarbonMonoxidePeakLevel = CurrentLevel;\n}\n\n// Set warning if dangerous\nif (CurrentLevel >= 35) {\n newMsg.payload.CarbonMonoxideDetected = 1;\n} \n\nreturn newMsg;",
105
- "outputs": 1,
106
- "noerr": 0,
107
- "initialize": "",
108
- "finalize": "",
109
- "x": 390,
110
- "y": 1140,
111
- "wires": [
112
- [
113
- "2e6738a6.ef5dd8"
114
- ]
115
- ]
116
- },
117
- {
118
- "id": "97aff586.786ff8",
119
- "type": "inject",
120
- "z": "60b06629.a2ebd",
121
- "g": "6eaa9b9e.282734",
122
- "name": "NO RESPONSE",
123
- "props": [
124
- {
125
- "p": "payload"
126
- },
127
- {
128
- "p": "topic",
129
- "vt": "str"
130
- }
131
- ],
132
- "repeat": "",
133
- "crontab": "",
134
- "once": false,
135
- "onceDelay": 0.1,
136
- "topic": "",
137
- "payload": "{\"CarbonMonoxideLevel\":\"NO_RESPONSE\"}",
138
- "payloadType": "json",
139
- "x": 400,
140
- "y": 1100,
141
- "wires": [
142
- [
143
- "2e6738a6.ef5dd8"
144
- ]
145
- ]
146
- },
147
- {
148
- "id": "659ff3da.236404",
149
- "type": "inject",
150
- "z": "60b06629.a2ebd",
151
- "g": "6eaa9b9e.282734",
152
- "name": "Clear CO2 Peak",
153
- "props": [
154
- {
155
- "p": "payload"
156
- }
157
- ],
158
- "repeat": "",
159
- "crontab": "",
160
- "once": false,
161
- "onceDelay": 0.1,
162
- "topic": "",
163
- "payload": "0",
164
- "payloadType": "num",
165
- "x": 140,
166
- "y": 1260,
167
- "wires": [
168
- [
169
- "79889759.8219c"
170
- ]
171
- ]
172
- },
173
- {
174
- "id": "e6105066.f8911",
175
- "type": "inject",
176
- "z": "60b06629.a2ebd",
177
- "g": "6eaa9b9e.282734",
178
- "name": "0 ppm",
179
- "repeat": "",
180
- "crontab": "",
181
- "once": false,
182
- "onceDelay": 0.1,
183
- "topic": "",
184
- "payload": "0",
185
- "payloadType": "num",
186
- "x": 130,
187
- "y": 1100,
188
- "wires": [
189
- [
190
- "7f53465b.356a68"
191
- ]
192
- ]
193
- },
194
- {
195
- "id": "b433a780.665a7",
196
- "type": "inject",
197
- "z": "60b06629.a2ebd",
198
- "g": "6eaa9b9e.282734",
199
- "name": "CO2 Level",
200
- "props": [
201
- {
202
- "p": "payload"
203
- }
204
- ],
205
- "repeat": "",
206
- "crontab": "",
207
- "once": false,
208
- "onceDelay": 0.1,
209
- "topic": "",
210
- "payload": "CO2",
211
- "payloadType": "str",
212
- "x": 120,
213
- "y": 1300,
214
- "wires": [
215
- [
216
- "79889759.8219c"
217
- ]
218
- ]
219
- },
220
- {
221
- "id": "d4b30334.a19e58",
222
- "type": "inject",
223
- "z": "60b06629.a2ebd",
224
- "g": "6eaa9b9e.282734",
225
- "name": "Low level",
226
- "props": [
227
- {
228
- "p": "payload"
229
- }
230
- ],
231
- "repeat": "",
232
- "crontab": "",
233
- "once": false,
234
- "onceDelay": 0.1,
235
- "topic": "",
236
- "payload": "Low",
237
- "payloadType": "str",
238
- "x": 140,
239
- "y": 1140,
240
- "wires": [
241
- [
242
- "7f53465b.356a68"
243
- ]
244
- ]
245
- },
246
- {
247
- "id": "b0eeeb34.2dde8",
248
- "type": "inject",
249
- "z": "60b06629.a2ebd",
250
- "g": "6eaa9b9e.282734",
251
- "name": "Danger level",
252
- "props": [
253
- {
254
- "p": "payload"
255
- }
256
- ],
257
- "repeat": "",
258
- "crontab": "",
259
- "once": false,
260
- "onceDelay": 0.1,
261
- "topic": "",
262
- "payload": "Danger",
263
- "payloadType": "str",
264
- "x": 150,
265
- "y": 1180,
266
- "wires": [
267
- [
268
- "7f53465b.356a68"
269
- ]
270
- ]
271
- },
272
- {
273
- "id": "409001a1.3e7a78",
274
- "type": "homekit-bridge",
275
- "z": "",
276
- "bridgeName": "Demo 1",
277
- "pinCode": "153-10-538",
278
- "port": "",
279
- "allowInsecureRequest": false,
280
- "manufacturer": "NRCHKB",
281
- "model": "Demo",
282
- "serialNo": "1.1.2",
283
- "customMdnsConfig": false,
284
- "mdnsMulticast": true,
285
- "mdnsInterface": "",
286
- "mdnsPort": "",
287
- "mdnsIp": "",
288
- "mdnsTtl": "",
289
- "mdnsLoopback": true,
290
- "mdnsReuseAddr": true,
291
- "allowMessagePassthrough": true
292
- }
14
+ "nodes": [
15
+ "2e6738a6.ef5dd8",
16
+ "79889759.8219c",
17
+ "7f53465b.356a68",
18
+ "97aff586.786ff8",
19
+ "659ff3da.236404",
20
+ "e6105066.f8911",
21
+ "b433a780.665a7",
22
+ "d4b30334.a19e58",
23
+ "b0eeeb34.2dde8"
24
+ ],
25
+ "x": 14,
26
+ "y": 1059,
27
+ "w": 752,
28
+ "h": 282,
29
+ "info": "# Combined Sensor\nThis is a sensor which will display both Carbon Monoxide (poisonous, deadly gas) and Carbon Dioxide (what humans exhale) levels.\n\n# CO Sensor\n\nThere are three inputs to this example, one for each level of Carbon Monoxide in the air. Options are:\n\n**0 ppm:** this will assume no CO in the air <br/>\n**Low level:** this will assume a level between 1 and 35 ppm, inclusive. This level is generally assumed to not cause problems in healthy adults <br/>\n**Dangerous level:** this will assume a level between 35 and 5000, inclusive; this will also trigger an alert in Home app\n\n## IF YOU HAVE A CARBON MONOXIDE DETECTOR EVER READING ABOVE 35 PPM, PLEASE EVACUATE THE AREA AND SEEK FRESH AIR IMMEDIATELY TO AVOID RISK OF DEATH ##\n\n# CO2 Sensor\n\nThere are three inputs to this example, one for each level of Carbon Dioxide in the air. Options are:\n\n**0 ppm:** this will assume no CO2 in the air <br/>\n**CO2 Level:** this will assume a level between 1 and 100,000 ppm, inclusive <br/>\n**Dangerous level:** this will assume a level between 1,000 and 100,000, inclusive\n\n"
30
+ },
31
+ {
32
+ "id": "2e6738a6.ef5dd8",
33
+ "type": "homekit-service",
34
+ "z": "60b06629.a2ebd",
35
+ "g": "6eaa9b9e.282734",
36
+ "isParent": true,
37
+ "bridge": "409001a1.3e7a78",
38
+ "parentService": "",
39
+ "name": "CO detector",
40
+ "serviceName": "CarbonMonoxideSensor",
41
+ "topic": "",
42
+ "filter": false,
43
+ "manufacturer": "MONOxide",
44
+ "model": "1",
45
+ "serialNo": "2",
46
+ "firmwareRev": "2",
47
+ "hardwareRev": "2",
48
+ "softwareRev": "1.0.0",
49
+ "cameraConfigVideoProcessor": "ffmpeg",
50
+ "cameraConfigSource": "",
51
+ "cameraConfigStillImageSource": "",
52
+ "cameraConfigMaxStreams": 2,
53
+ "cameraConfigMaxWidth": 1280,
54
+ "cameraConfigMaxHeight": 720,
55
+ "cameraConfigMaxFPS": 10,
56
+ "cameraConfigMaxBitrate": 300,
57
+ "cameraConfigVideoCodec": "libx264",
58
+ "cameraConfigAudioCodec": "libfdk_aac",
59
+ "cameraConfigAudio": false,
60
+ "cameraConfigPacketSize": 1316,
61
+ "cameraConfigVerticalFlip": false,
62
+ "cameraConfigHorizontalFlip": false,
63
+ "cameraConfigMapVideo": "0:0",
64
+ "cameraConfigMapAudio": "0:1",
65
+ "cameraConfigVideoFilter": "scale=1280:720",
66
+ "cameraConfigAdditionalCommandLine": "-tune zerolatency",
67
+ "cameraConfigDebug": false,
68
+ "cameraConfigSnapshotOutput": "disabled",
69
+ "cameraConfigInterfaceName": "",
70
+ "characteristicProperties": "{\n \"CarbonMonoxideLevel\":{\n \"maxValue\":5000\n },\n \"CarbonMonoxidePeakLevel\":{\n \"maxValue\":5000\n },\n \"CarbonDioxideLevel\":true,\n \"CarbonDioxidePeakLevel\":true\n}",
71
+ "outputs": 2,
72
+ "x": 670,
73
+ "y": 1100,
74
+ "wires": [[], []]
75
+ },
76
+ {
77
+ "id": "79889759.8219c",
78
+ "type": "function",
79
+ "z": "60b06629.a2ebd",
80
+ "g": "6eaa9b9e.282734",
81
+ "name": "Carbon DIoxide",
82
+ "func": "if(msg.payload === 0){\n context.set('lastPeak',0);\n newMsg = {\n payload: {\n \"CarbonDioxideLevel\":0\n }\n }\n return newMsg;\n}\n\n// Initialize vars\nvar CurrentLevel = 0;\nvar lastPeak = context.get('lastPeak');\n\n// Set random level\nif(msg.payload === \"CO2\"){\n CurrentLevel = Math.floor(Math.random() * (100000 - 1 + 1) + 1);\n}\n\n\n// Formulate output message\nvar newMsg = {\n payload: {\n \"CarbonDioxideLevel\" : CurrentLevel\n }\n};\n\n// Set new peak level\nif(CurrentLevel > lastPeak){\n lastPeak = CurrentLevel;\n context.set('lastPeak',CurrentLevel);\n newMsg.payload.CarbonDioxidePeakLevel = CurrentLevel;\n}\n\nreturn newMsg;",
83
+ "outputs": 1,
84
+ "noerr": 0,
85
+ "initialize": "// Code added here will be run once\n// whenever the node is deployed.\ncontext.set('lastPeak',0);",
86
+ "finalize": "",
87
+ "x": 380,
88
+ "y": 1260,
89
+ "wires": [["2e6738a6.ef5dd8"]]
90
+ },
91
+ {
92
+ "id": "7f53465b.356a68",
93
+ "type": "function",
94
+ "z": "60b06629.a2ebd",
95
+ "g": "6eaa9b9e.282734",
96
+ "name": "Carbon MONoxide",
97
+ "func": "// Reset all values to 0 if 0ppm input\nif(msg.payload === 0){\n context.set('lastPeak',0);\n newMsg = {\n payload: {\n \"CarbonMonoxideLevel\":0,\n \"CarbonMonoxidePeakLevel\":0,\n \"CarbonMonoxideDetected\":0\n }\n };\n return newMsg;\n}\n\n// Initialize vars\nvar CurrentLevel = 0;\nvar lastPeak = context.get('lastPeak');\n\n// Set random Low or Dangerous levels\nif(msg.payload === \"Low\"){\n CurrentLevel = Math.floor(Math.random() * (35 - 1 + 1) + 1);\n}\nif(msg.payload === \"Danger\"){\n CurrentLevel = Math.floor(Math.random() * (5000 - 35 + 1) + 35);\n}\n\n// Formulate output message\nvar newMsg = {\n payload: {\n \"CarbonMonoxideLevel\" : CurrentLevel,\n \"CarbonMonoxideDetected\" : 0\n }\n};\n\n// Set new peak level\nif(CurrentLevel > lastPeak){\n lastPeak = CurrentLevel;\n context.set('lastPeak',CurrentLevel);\n newMsg.payload.CarbonMonoxidePeakLevel = CurrentLevel;\n}\n\n// Set warning if dangerous\nif (CurrentLevel >= 35) {\n newMsg.payload.CarbonMonoxideDetected = 1;\n} \n\nreturn newMsg;",
98
+ "outputs": 1,
99
+ "noerr": 0,
100
+ "initialize": "",
101
+ "finalize": "",
102
+ "x": 390,
103
+ "y": 1140,
104
+ "wires": [["2e6738a6.ef5dd8"]]
105
+ },
106
+ {
107
+ "id": "97aff586.786ff8",
108
+ "type": "inject",
109
+ "z": "60b06629.a2ebd",
110
+ "g": "6eaa9b9e.282734",
111
+ "name": "NO RESPONSE",
112
+ "props": [
113
+ {
114
+ "p": "payload"
115
+ },
116
+ {
117
+ "p": "topic",
118
+ "vt": "str"
119
+ }
120
+ ],
121
+ "repeat": "",
122
+ "crontab": "",
123
+ "once": false,
124
+ "onceDelay": 0.1,
125
+ "topic": "",
126
+ "payload": "{\"CarbonMonoxideLevel\":\"NO_RESPONSE\"}",
127
+ "payloadType": "json",
128
+ "x": 400,
129
+ "y": 1100,
130
+ "wires": [["2e6738a6.ef5dd8"]]
131
+ },
132
+ {
133
+ "id": "659ff3da.236404",
134
+ "type": "inject",
135
+ "z": "60b06629.a2ebd",
136
+ "g": "6eaa9b9e.282734",
137
+ "name": "Clear CO2 Peak",
138
+ "props": [
139
+ {
140
+ "p": "payload"
141
+ }
142
+ ],
143
+ "repeat": "",
144
+ "crontab": "",
145
+ "once": false,
146
+ "onceDelay": 0.1,
147
+ "topic": "",
148
+ "payload": "0",
149
+ "payloadType": "num",
150
+ "x": 140,
151
+ "y": 1260,
152
+ "wires": [["79889759.8219c"]]
153
+ },
154
+ {
155
+ "id": "e6105066.f8911",
156
+ "type": "inject",
157
+ "z": "60b06629.a2ebd",
158
+ "g": "6eaa9b9e.282734",
159
+ "name": "0 ppm",
160
+ "repeat": "",
161
+ "crontab": "",
162
+ "once": false,
163
+ "onceDelay": 0.1,
164
+ "topic": "",
165
+ "payload": "0",
166
+ "payloadType": "num",
167
+ "x": 130,
168
+ "y": 1100,
169
+ "wires": [["7f53465b.356a68"]]
170
+ },
171
+ {
172
+ "id": "b433a780.665a7",
173
+ "type": "inject",
174
+ "z": "60b06629.a2ebd",
175
+ "g": "6eaa9b9e.282734",
176
+ "name": "CO2 Level",
177
+ "props": [
178
+ {
179
+ "p": "payload"
180
+ }
181
+ ],
182
+ "repeat": "",
183
+ "crontab": "",
184
+ "once": false,
185
+ "onceDelay": 0.1,
186
+ "topic": "",
187
+ "payload": "CO2",
188
+ "payloadType": "str",
189
+ "x": 120,
190
+ "y": 1300,
191
+ "wires": [["79889759.8219c"]]
192
+ },
193
+ {
194
+ "id": "d4b30334.a19e58",
195
+ "type": "inject",
196
+ "z": "60b06629.a2ebd",
197
+ "g": "6eaa9b9e.282734",
198
+ "name": "Low level",
199
+ "props": [
200
+ {
201
+ "p": "payload"
202
+ }
203
+ ],
204
+ "repeat": "",
205
+ "crontab": "",
206
+ "once": false,
207
+ "onceDelay": 0.1,
208
+ "topic": "",
209
+ "payload": "Low",
210
+ "payloadType": "str",
211
+ "x": 140,
212
+ "y": 1140,
213
+ "wires": [["7f53465b.356a68"]]
214
+ },
215
+ {
216
+ "id": "b0eeeb34.2dde8",
217
+ "type": "inject",
218
+ "z": "60b06629.a2ebd",
219
+ "g": "6eaa9b9e.282734",
220
+ "name": "Danger level",
221
+ "props": [
222
+ {
223
+ "p": "payload"
224
+ }
225
+ ],
226
+ "repeat": "",
227
+ "crontab": "",
228
+ "once": false,
229
+ "onceDelay": 0.1,
230
+ "topic": "",
231
+ "payload": "Danger",
232
+ "payloadType": "str",
233
+ "x": 150,
234
+ "y": 1180,
235
+ "wires": [["7f53465b.356a68"]]
236
+ },
237
+ {
238
+ "id": "409001a1.3e7a78",
239
+ "type": "homekit-bridge",
240
+ "z": "",
241
+ "bridgeName": "Demo 1",
242
+ "pinCode": "153-10-538",
243
+ "port": "",
244
+ "allowInsecureRequest": false,
245
+ "manufacturer": "NRCHKB",
246
+ "model": "Demo",
247
+ "serialNo": "1.1.2",
248
+ "customMdnsConfig": false,
249
+ "mdnsMulticast": true,
250
+ "mdnsInterface": "",
251
+ "mdnsPort": "",
252
+ "mdnsIp": "",
253
+ "mdnsTtl": "",
254
+ "mdnsLoopback": true,
255
+ "mdnsReuseAddr": true,
256
+ "allowMessagePassthrough": true
257
+ }
293
258
  ]