node-red-contrib-homekit-bridged 2.0.0-dev.5 → 2.0.0-dev.7

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 (128) hide show
  1. package/build/lib/HAPHostNode.js +183 -141
  2. package/build/lib/HAPServiceNode.js +199 -172
  3. package/build/lib/HAPServiceNode2.js +207 -172
  4. package/build/lib/NRCHKBError.js +23 -2
  5. package/build/lib/PairingQRCode.js +62 -0
  6. package/build/lib/Storage.js +157 -92
  7. package/build/lib/api.js +654 -288
  8. package/build/lib/camera/CameraControl.js +119 -84
  9. package/build/lib/camera/CameraDelegate.js +481 -404
  10. package/build/lib/camera/MP4StreamingServer.js +148 -139
  11. package/build/lib/hap/HAPCharacteristic.js +25 -4
  12. package/build/lib/hap/HAPService.js +25 -4
  13. package/build/lib/hap/eve-app/EveCharacteristics.js +124 -81
  14. package/build/lib/hap/eve-app/EveServices.js +50 -17
  15. package/build/lib/hap/hap-nodejs.js +32 -0
  16. package/build/lib/migration/HomeKitService2Migration.js +34 -0
  17. package/build/lib/migration/NodeMigration.js +75 -0
  18. package/build/lib/types/AccessoryInformationType.js +15 -1
  19. package/build/lib/types/CameraConfigType.js +15 -1
  20. package/build/lib/types/CustomCharacteristicType.js +15 -1
  21. package/build/lib/types/HAPHostConfigType.js +15 -1
  22. package/build/lib/types/HAPHostNodeType.js +15 -1
  23. package/build/lib/types/HAPService2ConfigType.js +15 -1
  24. package/build/lib/types/HAPService2NodeType.js +15 -1
  25. package/build/lib/types/HAPServiceConfigType.js +15 -1
  26. package/build/lib/types/HAPServiceNodeType.js +15 -1
  27. package/build/lib/types/HAPStatusConfigType.js +15 -1
  28. package/build/lib/types/HAPStatusNodeType.js +15 -1
  29. package/build/lib/types/HostType.js +28 -7
  30. package/build/lib/types/NodeType.js +15 -1
  31. package/build/lib/types/PublishTimersType.js +15 -1
  32. package/build/lib/types/UniFiControllerConfigType.js +16 -0
  33. package/build/lib/types/hap-nodejs/HapAdaptiveLightingControllerMode.js +28 -7
  34. package/build/lib/types/hap-nodejs/HapCategories.js +64 -43
  35. package/build/lib/types/storage/SerializedHostType.js +15 -1
  36. package/build/lib/types/storage/StorageType.js +34 -10
  37. package/build/lib/unifi/ProtectDiscovery.js +80 -0
  38. package/build/lib/utils/AccessoryUtils.js +152 -110
  39. package/build/lib/utils/BridgeUtils.js +82 -39
  40. package/build/lib/utils/CharacteristicUtils.js +5 -49
  41. package/build/lib/utils/CharacteristicUtils2.js +5 -49
  42. package/build/lib/utils/CharacteristicUtilsBase.js +81 -0
  43. package/build/lib/utils/NodeStatusUtils.js +89 -40
  44. package/build/lib/utils/ServiceUtils.js +434 -375
  45. package/build/lib/utils/ServiceUtils2.js +514 -309
  46. package/build/lib/utils/index.js +10 -11
  47. package/build/nodes/bridge.html +184 -166
  48. package/build/nodes/bridge.js +27 -9
  49. package/build/nodes/locales/en-US/node-red-contrib-homekit-bridged.json +22 -0
  50. package/build/nodes/nrchkb.html +1601 -88
  51. package/build/nodes/nrchkb.js +66 -88
  52. package/build/nodes/plugin-instance.html +499 -0
  53. package/build/nodes/plugin-instance.js +46 -0
  54. package/build/nodes/service.html +517 -299
  55. package/build/nodes/service.js +5 -6
  56. package/build/nodes/service2.html +1683 -460
  57. package/build/nodes/service2.js +5 -8
  58. package/build/nodes/standalone.html +187 -174
  59. package/build/nodes/standalone.js +27 -9
  60. package/build/nodes/status.html +51 -18
  61. package/build/nodes/status.js +47 -40
  62. package/build/nodes/unifi-controller.html +92 -0
  63. package/build/nodes/unifi-controller.js +20 -0
  64. package/build/plugins/embedded/homebridge-camera-ffmpeg/index.js +479 -0
  65. package/build/plugins/embedded/homebridge-unifi-protect/index.js +521 -0
  66. package/build/plugins/embedded/index.js +58 -0
  67. package/build/plugins/nrchkb-homekit-plugins.js +17 -0
  68. package/build/plugins/registry/index.js +203 -0
  69. package/build/plugins/registry/types.js +16 -0
  70. package/build/scripts/migrate-homekit-service-flows.js +47 -0
  71. package/examples/demo/01 - ALL Demos single import.json +1885 -1885
  72. package/examples/demo/02 - Air Purifier.json +279 -279
  73. package/examples/demo/03 - Air Quality sensor with Battery.json +254 -254
  74. package/examples/demo/04 - Dimmable Bulb.json +172 -172
  75. package/examples/demo/05 - Color Bulb (HSV).json +195 -195
  76. package/examples/demo/06 - Fan (simple, 3 speeds).json +240 -240
  77. package/examples/demo/07 - Fan (with speed, oscillate, rotation direction).json +175 -175
  78. package/examples/demo/08 - CO2 detector.json +224 -224
  79. package/examples/demo/09 - CO (carbon monoxide) example.json +255 -255
  80. package/examples/demo/10 - Door window contact sensor.json +234 -234
  81. package/examples/demos (advanced)/01 - Television with inputs and speaker.json +541 -541
  82. package/examples/switch/01 - Plain Switch.json +178 -178
  83. package/package.json +95 -84
  84. package/build/lib/HAPHostNode.d.ts +0 -1
  85. package/build/lib/HAPServiceNode.d.ts +0 -1
  86. package/build/lib/HAPServiceNode2.d.ts +0 -1
  87. package/build/lib/NRCHKBError.d.ts +0 -3
  88. package/build/lib/Storage.d.ts +0 -30
  89. package/build/lib/api.d.ts +0 -1
  90. package/build/lib/camera/CameraControl.d.ts +0 -3
  91. package/build/lib/camera/CameraDelegate.d.ts +0 -38
  92. package/build/lib/camera/MP4StreamingServer.d.ts +0 -26
  93. package/build/lib/hap/HAPCharacteristic.d.ts +0 -9
  94. package/build/lib/hap/HAPService.d.ts +0 -6
  95. package/build/lib/hap/eve-app/EveCharacteristics.d.ts +0 -20
  96. package/build/lib/hap/eve-app/EveServices.d.ts +0 -5
  97. package/build/lib/types/AccessoryInformationType.d.ts +0 -11
  98. package/build/lib/types/CameraConfigType.d.ts +0 -24
  99. package/build/lib/types/CustomCharacteristicType.d.ts +0 -6
  100. package/build/lib/types/HAPHostConfigType.d.ts +0 -22
  101. package/build/lib/types/HAPHostNodeType.d.ts +0 -14
  102. package/build/lib/types/HAPService2ConfigType.d.ts +0 -6
  103. package/build/lib/types/HAPService2NodeType.d.ts +0 -7
  104. package/build/lib/types/HAPServiceConfigType.d.ts +0 -26
  105. package/build/lib/types/HAPServiceNodeType.d.ts +0 -38
  106. package/build/lib/types/HAPStatusConfigType.d.ts +0 -5
  107. package/build/lib/types/HAPStatusNodeType.d.ts +0 -12
  108. package/build/lib/types/HostType.d.ts +0 -5
  109. package/build/lib/types/NodeType.d.ts +0 -3
  110. package/build/lib/types/PublishTimersType.d.ts +0 -4
  111. package/build/lib/types/hap-nodejs/HapAdaptiveLightingControllerMode.d.ts +0 -5
  112. package/build/lib/types/hap-nodejs/HapCategories.d.ts +0 -41
  113. package/build/lib/types/storage/SerializedHostType.d.ts +0 -5
  114. package/build/lib/types/storage/StorageType.d.ts +0 -8
  115. package/build/lib/utils/AccessoryUtils.d.ts +0 -1
  116. package/build/lib/utils/BridgeUtils.d.ts +0 -1
  117. package/build/lib/utils/CharacteristicUtils.d.ts +0 -1
  118. package/build/lib/utils/CharacteristicUtils2.d.ts +0 -1
  119. package/build/lib/utils/NodeStatusUtils.d.ts +0 -17
  120. package/build/lib/utils/ServiceUtils.d.ts +0 -1
  121. package/build/lib/utils/ServiceUtils2.d.ts +0 -1
  122. package/build/lib/utils/index.d.ts +0 -1
  123. package/build/nodes/bridge.d.ts +0 -1
  124. package/build/nodes/nrchkb.d.ts +0 -1
  125. package/build/nodes/service.d.ts +0 -1
  126. package/build/nodes/service2.d.ts +0 -1
  127. package/build/nodes/standalone.d.ts +0 -1
  128. package/build/nodes/status.d.ts +0 -1
@@ -1,258 +1,258 @@
1
1
  [
2
- {
3
- "id": "b3b5156e.cdf988",
4
- "type": "group",
5
- "z": "eeb8b00c.2c18c",
6
- "name": "Air Quality with Battery: input only sensor",
7
- "style": {
8
- "stroke": "#999999",
9
- "fill": "none",
10
- "label": true,
11
- "label-position": "nw",
12
- "color": "#a4a4a4"
2
+ {
3
+ "id": "b3b5156e.cdf988",
4
+ "type": "group",
5
+ "z": "eeb8b00c.2c18c",
6
+ "name": "Air Quality with Battery: 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
+ "8088a797.e1a7c",
16
+ "a70b3192.dfb4f",
17
+ "d5708f5.036c87",
18
+ "90b692e4.b9f6c",
19
+ "54bfafbc.396898",
20
+ "560fc866.6de558",
21
+ "61e113b2.dbb714"
22
+ ],
23
+ "x": 94,
24
+ "y": 239,
25
+ "w": 758,
26
+ "h": 208,
27
+ "info": "# Air Quality Sensor\n\nThis sensor will inject random values for all of the air quality metrics available in the HomeKit spec. It will also inject random values for a linked battery service.\n\nWatch the input and Home app to learn how to see how things are working."
13
28
  },
14
- "nodes": [
15
- "8088a797.e1a7c",
16
- "a70b3192.dfb4f",
17
- "d5708f5.036c87",
18
- "90b692e4.b9f6c",
19
- "54bfafbc.396898",
20
- "560fc866.6de558",
21
- "61e113b2.dbb714"
22
- ],
23
- "x": 94,
24
- "y": 239,
25
- "w": 758,
26
- "h": 208,
27
- "info": "# Air Quality Sensor\n\nThis sensor will inject random values for all of the air quality metrics available in the HomeKit spec. It will also inject random values for a linked battery service.\n\nWatch the input and Home app to learn how to see how things are working."
28
- },
29
- {
30
- "id": "8088a797.e1a7c",
31
- "type": "homekit-service",
32
- "z": "eeb8b00c.2c18c",
33
- "g": "b3b5156e.cdf988",
34
- "isParent": true,
35
- "hostType": "0",
36
- "bridge": "409001a1.3e7a78",
37
- "accessoryId": "",
38
- "parentService": "",
39
- "name": "Air Quality",
40
- "serviceName": "AirQualitySensor",
41
- "topic": "",
42
- "filter": false,
43
- "manufacturer": "Quality",
44
- "model": "Battery",
45
- "serialNo": "777",
46
- "firmwareRev": "8.3",
47
- "hardwareRev": "2.1",
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": "{ \"AirQuality\":true, \"PM2_5Density\":true, \"PM10Density\":true}",
71
- "waitForSetupMsg": false,
72
- "outputs": 2,
73
- "x": 750,
74
- "y": 280,
75
- "wires": [[], []]
76
- },
77
- {
78
- "id": "a70b3192.dfb4f",
79
- "type": "inject",
80
- "z": "eeb8b00c.2c18c",
81
- "g": "b3b5156e.cdf988",
82
- "name": "Air quality random",
83
- "props": [
84
- {
85
- "p": "payload"
86
- }
87
- ],
88
- "repeat": "15",
89
- "crontab": "",
90
- "once": true,
91
- "onceDelay": "5",
92
- "topic": "",
93
- "payload": "{}",
94
- "payloadType": "json",
95
- "x": 230,
96
- "y": 280,
97
- "wires": [["560fc866.6de558"]]
98
- },
99
- {
100
- "id": "d5708f5.036c87",
101
- "type": "inject",
102
- "z": "eeb8b00c.2c18c",
103
- "g": "b3b5156e.cdf988",
104
- "name": "Battery random",
105
- "props": [
106
- {
107
- "p": "payload"
108
- }
109
- ],
110
- "repeat": "30",
111
- "crontab": "",
112
- "once": true,
113
- "onceDelay": "5",
114
- "topic": "",
115
- "payload": "",
116
- "payloadType": "date",
117
- "x": 220,
118
- "y": 380,
119
- "wires": [["90b692e4.b9f6c"]]
120
- },
121
- {
122
- "id": "90b692e4.b9f6c",
123
- "type": "function",
124
- "z": "eeb8b00c.2c18c",
125
- "g": "b3b5156e.cdf988",
126
- "name": "Batt",
127
- "func": "// Define random battery level\nconst level = Math.floor(Math.random() * Math.floor(100))\nvar newMsg = {\n payload: {\n \"BatteryLevel\": level\n }\n};\n\n// Show \"Low Battery\" if less than 10%\nif (level < 10)newMsg.payload.StatusLowBattery = 1;\nelse newMsg.payload.StatusLowBattery = 0;\n\n// Show \"Charging\" if greater than 60%\nif (level > 60) newMsg.payload.ChargingState = 1;\nelse newMsg.payload.ChargingState = 0;\n\nreturn newMsg;",
128
- "outputs": 1,
129
- "noerr": 0,
130
- "initialize": "",
131
- "finalize": "",
132
- "x": 470,
133
- "y": 380,
134
- "wires": [["5cd5342a.cfd72c"]]
135
- },
136
- {
137
- "id": "54bfafbc.396898",
138
- "type": "inject",
139
- "z": "eeb8b00c.2c18c",
140
- "g": "b3b5156e.cdf988",
141
- "name": "NO RESPONSE",
142
- "props": [
143
- {
144
- "p": "payload"
145
- }
146
- ],
147
- "repeat": "",
148
- "crontab": "",
149
- "once": false,
150
- "onceDelay": 0.1,
151
- "topic": "",
152
- "payload": "{\"AirQuality\":\"NO_RESPONSE\"}",
153
- "payloadType": "json",
154
- "x": 500,
155
- "y": 320,
156
- "wires": [["8088a797.e1a7c"]]
157
- },
158
- {
159
- "id": "560fc866.6de558",
160
- "type": "function",
161
- "z": "eeb8b00c.2c18c",
162
- "g": "b3b5156e.cdf988",
163
- "name": "Random values",
164
- "func": "var newMsg = {\n \"payload\":{\n \"AirQuality\":Math.floor(Math.random() * Math.floor(5)),\n \"PM2_5Density\":Math.floor(Math.random() * Math.floor(1000)),\n \"PM10Density\":Math.floor(Math.random() * Math.floor(1000)),\n \"OzoneDensity\":Math.floor(Math.random() * Math.floor(1000)),\n \"NitrogenDioxideDensity\":Math.floor(Math.random() * Math.floor(1000)),\n \"SulphurDioxideDensity\": Math.floor(Math.random() * Math.floor(1000))\n }\n}\n\n\n\nreturn newMsg;",
165
- "outputs": 1,
166
- "noerr": 0,
167
- "initialize": "",
168
- "finalize": "",
169
- "x": 500,
170
- "y": 280,
171
- "wires": [["8088a797.e1a7c"]]
172
- },
173
- {
174
- "id": "61e113b2.dbb714",
175
- "type": "group",
176
- "z": "eeb8b00c.2c18c",
177
- "g": "b3b5156e.cdf988",
178
- "name": "LINKED",
179
- "style": {
180
- "stroke": "#0070c0",
181
- "fill": "#bfdbef",
182
- "label": true
29
+ {
30
+ "id": "8088a797.e1a7c",
31
+ "type": "homekit-service",
32
+ "z": "eeb8b00c.2c18c",
33
+ "g": "b3b5156e.cdf988",
34
+ "isParent": true,
35
+ "hostType": "0",
36
+ "bridge": "409001a1.3e7a78",
37
+ "accessoryId": "",
38
+ "parentService": "",
39
+ "name": "Air Quality",
40
+ "serviceName": "AirQualitySensor",
41
+ "topic": "",
42
+ "filter": false,
43
+ "manufacturer": "Quality",
44
+ "model": "Battery",
45
+ "serialNo": "777",
46
+ "firmwareRev": "8.3",
47
+ "hardwareRev": "2.1",
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": "{ \"AirQuality\":true, \"PM2_5Density\":true, \"PM10Density\":true}",
71
+ "waitForSetupMsg": false,
72
+ "outputs": 2,
73
+ "x": 750,
74
+ "y": 280,
75
+ "wires": [[], []]
183
76
  },
184
- "nodes": ["5cd5342a.cfd72c"],
185
- "x": 654,
186
- "y": 339,
187
- "w": 172,
188
- "h": 82
189
- },
190
- {
191
- "id": "5cd5342a.cfd72c",
192
- "type": "homekit-service",
193
- "z": "eeb8b00c.2c18c",
194
- "g": "61e113b2.dbb714",
195
- "isParent": false,
196
- "hostType": "0",
197
- "bridge": "",
198
- "accessoryId": "",
199
- "parentService": "8088a797.e1a7c",
200
- "name": "Battery",
201
- "serviceName": "Battery",
202
- "topic": "Air Quality",
203
- "filter": false,
204
- "manufacturer": "Default Manufacturer",
205
- "model": "Default Model",
206
- "serialNo": "Default Serial Number",
207
- "firmwareRev": "1.0.0",
208
- "hardwareRev": "1.0.0",
209
- "softwareRev": "1.0.0",
210
- "cameraConfigVideoProcessor": "ffmpeg",
211
- "cameraConfigSource": "",
212
- "cameraConfigStillImageSource": "",
213
- "cameraConfigMaxStreams": 2,
214
- "cameraConfigMaxWidth": 1280,
215
- "cameraConfigMaxHeight": 720,
216
- "cameraConfigMaxFPS": 10,
217
- "cameraConfigMaxBitrate": 300,
218
- "cameraConfigVideoCodec": "libx264",
219
- "cameraConfigAudioCodec": "libfdk_aac",
220
- "cameraConfigAudio": false,
221
- "cameraConfigPacketSize": 1316,
222
- "cameraConfigVerticalFlip": false,
223
- "cameraConfigHorizontalFlip": false,
224
- "cameraConfigMapVideo": "0:0",
225
- "cameraConfigMapAudio": "0:1",
226
- "cameraConfigVideoFilter": "scale=1280:720",
227
- "cameraConfigAdditionalCommandLine": "-tune zerolatency",
228
- "cameraConfigDebug": false,
229
- "cameraConfigSnapshotOutput": "disabled",
230
- "cameraConfigInterfaceName": "",
231
- "characteristicProperties": "{}",
232
- "waitForSetupMsg": false,
233
- "outputs": 2,
234
- "x": 740,
235
- "y": 380,
236
- "wires": [[], []]
237
- },
238
- {
239
- "id": "409001a1.3e7a78",
240
- "type": "homekit-bridge",
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
- }
77
+ {
78
+ "id": "a70b3192.dfb4f",
79
+ "type": "inject",
80
+ "z": "eeb8b00c.2c18c",
81
+ "g": "b3b5156e.cdf988",
82
+ "name": "Air quality random",
83
+ "props": [
84
+ {
85
+ "p": "payload"
86
+ }
87
+ ],
88
+ "repeat": "15",
89
+ "crontab": "",
90
+ "once": true,
91
+ "onceDelay": "5",
92
+ "topic": "",
93
+ "payload": "{}",
94
+ "payloadType": "json",
95
+ "x": 230,
96
+ "y": 280,
97
+ "wires": [["560fc866.6de558"]]
98
+ },
99
+ {
100
+ "id": "d5708f5.036c87",
101
+ "type": "inject",
102
+ "z": "eeb8b00c.2c18c",
103
+ "g": "b3b5156e.cdf988",
104
+ "name": "Battery random",
105
+ "props": [
106
+ {
107
+ "p": "payload"
108
+ }
109
+ ],
110
+ "repeat": "30",
111
+ "crontab": "",
112
+ "once": true,
113
+ "onceDelay": "5",
114
+ "topic": "",
115
+ "payload": "",
116
+ "payloadType": "date",
117
+ "x": 220,
118
+ "y": 380,
119
+ "wires": [["90b692e4.b9f6c"]]
120
+ },
121
+ {
122
+ "id": "90b692e4.b9f6c",
123
+ "type": "function",
124
+ "z": "eeb8b00c.2c18c",
125
+ "g": "b3b5156e.cdf988",
126
+ "name": "Batt",
127
+ "func": "// Define random battery level\nconst level = Math.floor(Math.random() * Math.floor(100))\nvar newMsg = {\n payload: {\n \"BatteryLevel\": level\n }\n};\n\n// Show \"Low Battery\" if less than 10%\nif (level < 10)newMsg.payload.StatusLowBattery = 1;\nelse newMsg.payload.StatusLowBattery = 0;\n\n// Show \"Charging\" if greater than 60%\nif (level > 60) newMsg.payload.ChargingState = 1;\nelse newMsg.payload.ChargingState = 0;\n\nreturn newMsg;",
128
+ "outputs": 1,
129
+ "noerr": 0,
130
+ "initialize": "",
131
+ "finalize": "",
132
+ "x": 470,
133
+ "y": 380,
134
+ "wires": [["5cd5342a.cfd72c"]]
135
+ },
136
+ {
137
+ "id": "54bfafbc.396898",
138
+ "type": "inject",
139
+ "z": "eeb8b00c.2c18c",
140
+ "g": "b3b5156e.cdf988",
141
+ "name": "NO RESPONSE",
142
+ "props": [
143
+ {
144
+ "p": "payload"
145
+ }
146
+ ],
147
+ "repeat": "",
148
+ "crontab": "",
149
+ "once": false,
150
+ "onceDelay": 0.1,
151
+ "topic": "",
152
+ "payload": "{\"AirQuality\":\"NO_RESPONSE\"}",
153
+ "payloadType": "json",
154
+ "x": 500,
155
+ "y": 320,
156
+ "wires": [["8088a797.e1a7c"]]
157
+ },
158
+ {
159
+ "id": "560fc866.6de558",
160
+ "type": "function",
161
+ "z": "eeb8b00c.2c18c",
162
+ "g": "b3b5156e.cdf988",
163
+ "name": "Random values",
164
+ "func": "var newMsg = {\n \"payload\":{\n \"AirQuality\":Math.floor(Math.random() * Math.floor(5)),\n \"PM2_5Density\":Math.floor(Math.random() * Math.floor(1000)),\n \"PM10Density\":Math.floor(Math.random() * Math.floor(1000)),\n \"OzoneDensity\":Math.floor(Math.random() * Math.floor(1000)),\n \"NitrogenDioxideDensity\":Math.floor(Math.random() * Math.floor(1000)),\n \"SulphurDioxideDensity\": Math.floor(Math.random() * Math.floor(1000))\n }\n}\n\n\n\nreturn newMsg;",
165
+ "outputs": 1,
166
+ "noerr": 0,
167
+ "initialize": "",
168
+ "finalize": "",
169
+ "x": 500,
170
+ "y": 280,
171
+ "wires": [["8088a797.e1a7c"]]
172
+ },
173
+ {
174
+ "id": "61e113b2.dbb714",
175
+ "type": "group",
176
+ "z": "eeb8b00c.2c18c",
177
+ "g": "b3b5156e.cdf988",
178
+ "name": "LINKED",
179
+ "style": {
180
+ "stroke": "#0070c0",
181
+ "fill": "#bfdbef",
182
+ "label": true
183
+ },
184
+ "nodes": ["5cd5342a.cfd72c"],
185
+ "x": 654,
186
+ "y": 339,
187
+ "w": 172,
188
+ "h": 82
189
+ },
190
+ {
191
+ "id": "5cd5342a.cfd72c",
192
+ "type": "homekit-service",
193
+ "z": "eeb8b00c.2c18c",
194
+ "g": "61e113b2.dbb714",
195
+ "isParent": false,
196
+ "hostType": "0",
197
+ "bridge": "",
198
+ "accessoryId": "",
199
+ "parentService": "8088a797.e1a7c",
200
+ "name": "Battery",
201
+ "serviceName": "Battery",
202
+ "topic": "Air Quality",
203
+ "filter": false,
204
+ "manufacturer": "Default Manufacturer",
205
+ "model": "Default Model",
206
+ "serialNo": "Default Serial Number",
207
+ "firmwareRev": "1.0.0",
208
+ "hardwareRev": "1.0.0",
209
+ "softwareRev": "1.0.0",
210
+ "cameraConfigVideoProcessor": "ffmpeg",
211
+ "cameraConfigSource": "",
212
+ "cameraConfigStillImageSource": "",
213
+ "cameraConfigMaxStreams": 2,
214
+ "cameraConfigMaxWidth": 1280,
215
+ "cameraConfigMaxHeight": 720,
216
+ "cameraConfigMaxFPS": 10,
217
+ "cameraConfigMaxBitrate": 300,
218
+ "cameraConfigVideoCodec": "libx264",
219
+ "cameraConfigAudioCodec": "libfdk_aac",
220
+ "cameraConfigAudio": false,
221
+ "cameraConfigPacketSize": 1316,
222
+ "cameraConfigVerticalFlip": false,
223
+ "cameraConfigHorizontalFlip": false,
224
+ "cameraConfigMapVideo": "0:0",
225
+ "cameraConfigMapAudio": "0:1",
226
+ "cameraConfigVideoFilter": "scale=1280:720",
227
+ "cameraConfigAdditionalCommandLine": "-tune zerolatency",
228
+ "cameraConfigDebug": false,
229
+ "cameraConfigSnapshotOutput": "disabled",
230
+ "cameraConfigInterfaceName": "",
231
+ "characteristicProperties": "{}",
232
+ "waitForSetupMsg": false,
233
+ "outputs": 2,
234
+ "x": 740,
235
+ "y": 380,
236
+ "wires": [[], []]
237
+ },
238
+ {
239
+ "id": "409001a1.3e7a78",
240
+ "type": "homekit-bridge",
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
+ }
258
258
  ]