nodejs-poolcontroller 8.1.2 → 8.4.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.
Files changed (106) hide show
  1. package/.eslintrc.json +36 -36
  2. package/.github/ISSUE_TEMPLATE/1-bug-report.yml +84 -84
  3. package/.github/ISSUE_TEMPLATE/2-docs.md +12 -12
  4. package/.github/ISSUE_TEMPLATE/3-proposal.md +28 -28
  5. package/.github/ISSUE_TEMPLATE/config.yml +8 -8
  6. package/.github/copilot-instructions.md +63 -0
  7. package/.github/workflows/ghcr-publish.yml +67 -0
  8. package/AGENTS.md +597 -0
  9. package/CONTRIBUTING.md +74 -74
  10. package/Changelog +292 -257
  11. package/Dockerfile +62 -19
  12. package/Gruntfile.js +40 -40
  13. package/LICENSE +661 -661
  14. package/README.md +318 -191
  15. package/anslq25/MessagesMock.ts +221 -221
  16. package/anslq25/boards/MockBoardFactory.ts +49 -49
  17. package/anslq25/boards/MockEasyTouchBoard.ts +696 -696
  18. package/anslq25/boards/MockSystemBoard.ts +216 -216
  19. package/anslq25/chemistry/MockChlorinator.ts +98 -98
  20. package/anslq25/pumps/MockPump.ts +83 -83
  21. package/app.ts +115 -115
  22. package/config/Config.ts +57 -7
  23. package/config/VersionCheck.ts +63 -35
  24. package/controller/Constants.ts +809 -805
  25. package/controller/Equipment.ts +2688 -2664
  26. package/controller/Errors.ts +181 -181
  27. package/controller/Lockouts.ts +549 -549
  28. package/controller/State.ts +3738 -3690
  29. package/controller/boards/AquaLinkBoard.ts +1003 -1003
  30. package/controller/boards/BoardFactory.ts +53 -53
  31. package/controller/boards/EasyTouchBoard.ts +3202 -3202
  32. package/controller/boards/IntelliCenterBoard.ts +4393 -3899
  33. package/controller/boards/IntelliComBoard.ts +69 -69
  34. package/controller/boards/IntelliTouchBoard.ts +382 -382
  35. package/controller/boards/NixieBoard.ts +1944 -1929
  36. package/controller/boards/SunTouchBoard.ts +400 -400
  37. package/controller/boards/SystemBoard.ts +5268 -5268
  38. package/controller/comms/Comms.ts +1272 -1214
  39. package/controller/comms/ScreenLogic.ts +1665 -1665
  40. package/controller/comms/messages/Messages.ts +1433 -1243
  41. package/controller/comms/messages/config/ChlorinatorMessage.ts +5 -0
  42. package/controller/comms/messages/config/CircuitGroupMessage.ts +0 -0
  43. package/controller/comms/messages/config/CircuitMessage.ts +0 -0
  44. package/controller/comms/messages/config/ConfigMessage.ts +6 -0
  45. package/controller/comms/messages/config/CoverMessage.ts +0 -0
  46. package/controller/comms/messages/config/CustomNameMessage.ts +31 -31
  47. package/controller/comms/messages/config/EquipmentMessage.ts +216 -210
  48. package/controller/comms/messages/config/ExternalMessage.ts +96 -10
  49. package/controller/comms/messages/config/FeatureMessage.ts +0 -0
  50. package/controller/comms/messages/config/GeneralMessage.ts +0 -0
  51. package/controller/comms/messages/config/HeaterMessage.ts +0 -0
  52. package/controller/comms/messages/config/IntellichemMessage.ts +0 -0
  53. package/controller/comms/messages/config/OptionsMessage.ts +194 -174
  54. package/controller/comms/messages/config/PumpMessage.ts +0 -0
  55. package/controller/comms/messages/config/RemoteMessage.ts +0 -0
  56. package/controller/comms/messages/config/ScheduleMessage.ts +401 -390
  57. package/controller/comms/messages/config/SecurityMessage.ts +0 -0
  58. package/controller/comms/messages/config/ValveMessage.ts +0 -0
  59. package/controller/comms/messages/status/ChlorinatorStateMessage.ts +0 -0
  60. package/controller/comms/messages/status/EquipmentStateMessage.ts +1158 -822
  61. package/controller/comms/messages/status/HeaterStateMessage.ts +135 -135
  62. package/controller/comms/messages/status/IntelliChemStateMessage.ts +448 -448
  63. package/controller/comms/messages/status/IntelliValveStateMessage.ts +36 -36
  64. package/controller/comms/messages/status/PumpStateMessage.ts +0 -0
  65. package/controller/comms/messages/status/RegalModbusStateMessage.ts +411 -0
  66. package/controller/comms/messages/status/VersionMessage.ts +103 -41
  67. package/controller/nixie/Nixie.ts +173 -173
  68. package/controller/nixie/NixieEquipment.ts +104 -104
  69. package/controller/nixie/bodies/Body.ts +120 -120
  70. package/controller/nixie/bodies/Filter.ts +135 -135
  71. package/controller/nixie/chemistry/ChemController.ts +2724 -2724
  72. package/controller/nixie/chemistry/ChemDoser.ts +806 -806
  73. package/controller/nixie/chemistry/Chlorinator.ts +367 -367
  74. package/controller/nixie/circuits/Circuit.ts +478 -478
  75. package/controller/nixie/heaters/Heater.ts +834 -834
  76. package/controller/nixie/pumps/Pump.ts +1194 -996
  77. package/controller/nixie/schedules/Schedule.ts +401 -401
  78. package/controller/nixie/valves/Valve.ts +170 -170
  79. package/defaultConfig.json +352 -347
  80. package/docker-compose.yml +32 -0
  81. package/logger/DataLogger.ts +448 -448
  82. package/logger/Logger.ts +448 -436
  83. package/package.json +58 -60
  84. package/sendSocket.js +32 -32
  85. package/tsconfig.json +25 -25
  86. package/types/express-multer.d.ts +32 -0
  87. package/web/Server.ts +1937 -1927
  88. package/web/bindings/aqualinkD.json +559 -559
  89. package/web/bindings/influxDB.json +1066 -1066
  90. package/web/bindings/mqtt.json +721 -721
  91. package/web/bindings/mqttAlt.json +746 -746
  92. package/web/bindings/rulesManager.json +54 -54
  93. package/web/bindings/smartThings-Hubitat.json +31 -31
  94. package/web/bindings/valveRelays.json +20 -20
  95. package/web/bindings/vera.json +25 -25
  96. package/web/interfaces/baseInterface.ts +188 -188
  97. package/web/interfaces/httpInterface.ts +148 -148
  98. package/web/interfaces/influxInterface.ts +283 -283
  99. package/web/interfaces/mqttInterface.ts +695 -695
  100. package/web/interfaces/ruleInterface.ts +101 -87
  101. package/web/services/config/Config.ts +1063 -1053
  102. package/web/services/config/ConfigSocket.ts +0 -0
  103. package/web/services/state/State.ts +0 -0
  104. package/web/services/state/StateSocket.ts +0 -0
  105. package/web/services/utilities/Utilities.ts +233 -233
  106. package/.github/workflows/docker-publish-njsPC-linux.yml +0 -50
@@ -1,347 +1,352 @@
1
- {
2
- "controller": {
3
- "comms": {
4
- "type": "local",
5
- "portId": 0,
6
- "enabled": true,
7
- "rs485Port": "/dev/ttyUSB0",
8
- "mock": false,
9
- "netConnect": false,
10
- "netHost": "raspberrypi",
11
- "netPort": 9801,
12
- "inactivityRetry": 10,
13
- "portSettings": {
14
- "baudRate": 9600,
15
- "dataBits": 8,
16
- "parity": "none",
17
- "stopBits": 1,
18
- "rtscts": false,
19
- "autoOpen": false,
20
- "lock": false
21
- },
22
- "netSettings": {
23
- "allowHalfOpen": false,
24
- "keepAlive": false,
25
- "keepAliveInitialDelay": 5
26
- },
27
- "screenlogic": {
28
- "connectionType": "local",
29
- "systemName": "Pentair: 00-00-00",
30
- "password": 1234
31
- }
32
- },
33
- "backups": {
34
- "automatic": false,
35
- "interval": {
36
- "days": 30,
37
- "hours": 0
38
- },
39
- "keepCount": 5,
40
- "njsPC": true,
41
- "servers": []
42
- }
43
- },
44
- "web": {
45
- "servers": {
46
- "http2": {
47
- "enabled": false
48
- },
49
- "http": {
50
- "enabled": true,
51
- "ip": "0.0.0.0",
52
- "port": 4200,
53
- "httpsRedirect": false,
54
- "authentication": "none",
55
- "authFile": "/users.htpasswd"
56
- },
57
- "https": {
58
- "enabled": false,
59
- "ip": "0.0.0.0",
60
- "port": 4201,
61
- "authentication": "none",
62
- "authFile": "/users.htpasswd",
63
- "sslKeyFile": "",
64
- "sslCertFile": ""
65
- },
66
- "mdns": {
67
- "enabled": false
68
- },
69
- "ssdp": {
70
- "enabled": true
71
- }
72
- },
73
- "services": {},
74
- "interfaces": {
75
- "smartThings": {
76
- "name": "SmartThings",
77
- "type": "rest",
78
- "enabled": false,
79
- "fileName": "smartThings-Hubitat.json",
80
- "globals": {},
81
- "options": {
82
- "host": "0.0.0.0",
83
- "port": 39500
84
- }
85
- },
86
- "hubitat": {
87
- "name": "Hubitat",
88
- "type": "rest",
89
- "enabled": false,
90
- "fileName": "smartThings-Hubitat.json",
91
- "globals": {},
92
- "options": {
93
- "host": "0.0.0.0",
94
- "port": 39501
95
- }
96
- },
97
- "vera": {
98
- "name": "Vera",
99
- "type": "rest",
100
- "enabled": false,
101
- "fileName": "vera.json",
102
- "vars": {
103
- "deviceId": 0
104
- },
105
- "options": {
106
- "host": "",
107
- "port": 3480
108
- }
109
- },
110
- "valveRelay": {
111
- "type": "rest",
112
- "name": "Valve Relays",
113
- "enabled": false,
114
- "fileName": "valveRelays.json",
115
- "vars": {
116
- "valveIds": []
117
- },
118
- "options": {
119
- "host": "0.0.0.0",
120
- "port": 8081
121
- }
122
- },
123
- "influxDB": {
124
- "name": "InfluxDB",
125
- "type": "influx",
126
- "enabled": false,
127
- "fileName": "influxDB.json",
128
- "options": {
129
- "version": 1,
130
- "protocol": "http",
131
- "host": "192.168.0.1",
132
- "port": 9999,
133
- "username": "",
134
- "password": "",
135
- "database": "pool",
136
- "retentionPolicy": "autogen"
137
- }
138
- },
139
- "influxDBv2": {
140
- "name": "InfluxDBv2",
141
- "type": "influx",
142
- "enabled": false,
143
- "fileName": "influxDB.json",
144
- "options": {
145
- "version": 2,
146
- "protocol": "http",
147
- "host": "192.168.0.1",
148
- "port": 9999,
149
- "token": "...LuyM84JJx93Qvc7tfaXPbI_mFFjRBjaA==",
150
- "org": "example-org",
151
- "bucket": "57ec4eed2d90a50b"
152
- }
153
- },
154
- "mqtt": {
155
- "name": "MQTT",
156
- "type": "mqtt",
157
- "enabled": false,
158
- "fileName": "mqtt.json",
159
- "globals": {},
160
- "options": {
161
- "protocol": "mqtt://",
162
- "host": "192.168.0.1",
163
- "port": 1883,
164
- "username": "",
165
- "password": "",
166
- "selfSignedCertificate": false,
167
- "rootTopic": "@bind=(state.equipment.model).replace(/ /g,'-').replace('/','').toLowerCase();",
168
- "retain": true,
169
- "qos": 0,
170
- "changesOnly": true
171
- }
172
- },
173
- "aqualinkD": {
174
- "name": "AquaLinkD",
175
- "type": "mqtt",
176
- "enabled": false,
177
- "fileName": "aqualinkD.json",
178
- "globals": {},
179
- "options": {
180
- "protocol": "mqtt://",
181
- "host": "192.168.0.1",
182
- "port": 1883,
183
- "username": "",
184
- "password": "",
185
- "rootTopic": "aqualinkd",
186
- "retain": true,
187
- "qos": 0,
188
- "changesOnly": true
189
- },
190
- "vars": {
191
- "tempPrecision": 2,
192
- "tempUnits": "@bind=sys.board.valueMaps.tempUnits.getName(state.temps.units);"
193
- }
194
- },
195
- "mqttAlt": {
196
- "name": "MQTTAlt",
197
- "type": "mqtt",
198
- "enabled": false,
199
- "fileName": "mqttAlt.json",
200
- "globals": {},
201
- "options": {
202
- "protocol": "mqtt://",
203
- "host": "192.168.0.1",
204
- "port": 1883,
205
- "username": "",
206
- "password": "",
207
- "rootTopic": "@bind=(state.equipment.model).replace(/ /,'-').replace('/','').toLowerCase();Alt",
208
- "retain": true,
209
- "qos": 0,
210
- "changesOnly": true
211
- }
212
- },
213
- "homeAssistant": {
214
- "name": "Home Assistant",
215
- "type": "mqtt",
216
- "enabled": false,
217
- "fileName": "homeassistant.json",
218
- "globals": {},
219
- "options": {
220
- "protocol": "mqtt://",
221
- "host": "192.168.0.1",
222
- "port": 1883,
223
- "username": "",
224
- "password": "",
225
- "selfSignedCertificate": false,
226
- "retain": true,
227
- "qos": 0,
228
- "changesOnly": true
229
- },
230
- "vars": {
231
- "_note": "hassTopic is the topic that HASS reads for configuration and should not be changed. mqttTopic should match the topic in the MQTT binding (do not use MQTTAlt for HASS).",
232
- "hassTopic": "homeassistant",
233
- "mqttTopic": "@bind=(state.equipment.model).replace(/ /g,'-').replace('/','').toLowerCase();"
234
- }
235
- },
236
- "rem": {
237
- "name": "Relay Equipment Manager",
238
- "type": "rem",
239
- "enabled": false,
240
- "options": {
241
- "protocol": "http://",
242
- "host": "raspberrypi",
243
- "port": 8080,
244
- "headers": {
245
- "content-type": "application/json"
246
- }
247
- },
248
- "socket": {
249
- "transports": [
250
- "websocket"
251
- ],
252
- "upgrade": false,
253
- "reconnectionDelay": 2000,
254
- "reconnection": true,
255
- "reconnectionDelayMax": 20000
256
- }
257
- }
258
- }
259
- },
260
- "log": {
261
- "screenlogic": {
262
- "enabled": false,
263
- "logToConsole": false,
264
- "logToFile": false
265
- },
266
- "packet": {
267
- "logToConsole": false,
268
- "logToFile": false,
269
- "enabled": false,
270
- "filename": "packetLog",
271
- "invalid": true,
272
- "broadcast": {
273
- "enabled": true,
274
- "includeActions": [],
275
- "includeSource": [],
276
- "includeDest": [],
277
- "excludeActions": [],
278
- "excludeSource": [],
279
- "excludeDest": []
280
- },
281
- "pump": {
282
- "enabled": true,
283
- "includeActions": [],
284
- "includeSource": [],
285
- "includeDest": [],
286
- "excludeActions": [],
287
- "excludeSource": [],
288
- "excludeDest": []
289
- },
290
- "chlorinator": {
291
- "enabled": true,
292
- "includeSource": [],
293
- "includeDest": [],
294
- "excludeSource": [],
295
- "excludeDest": []
296
- },
297
- "intellichem": {
298
- "enabled": true,
299
- "includeActions": [],
300
- "excludeActions": [],
301
- "includeSource": [],
302
- "includeDest": [],
303
- "excludeSource": [],
304
- "excludeDest": []
305
- },
306
- "intellivalve": {
307
- "enabled": true,
308
- "includeActions": [],
309
- "excludeActions": [],
310
- "includeSource": [],
311
- "includeDest": [],
312
- "excludeSource": [],
313
- "excludeDest": []
314
- },
315
- "heater": {
316
- "enabled": true,
317
- "includeActions": [],
318
- "excludeActions": [],
319
- "includeSource": [],
320
- "includeDest": [],
321
- "excludeSource": [],
322
- "excludeDest": []
323
- },
324
- "unidentified": {
325
- "enabled": true,
326
- "includeSource": [],
327
- "includeDest": [],
328
- "excludeSource": [],
329
- "excludeDest": []
330
- },
331
- "unknown": {
332
- "enabled": true,
333
- "includeSource": [],
334
- "includeDest": [],
335
- "excludeSource": [],
336
- "excludeDest": []
337
- }
338
- },
339
- "app": {
340
- "enabled": true,
341
- "level": "info",
342
- "captureForReplay": false,
343
- "logToFile": false
344
- }
345
- },
346
- "appVersion": "0.0.1"
347
- }
1
+ {
2
+ "controller": {
3
+ "comms": {
4
+ "type": "local",
5
+ "portId": 0,
6
+ "enabled": true,
7
+ "rs485Port": "/dev/ttyUSB0",
8
+ "mock": false,
9
+ "netConnect": false,
10
+ "netHost": "raspberrypi",
11
+ "netPort": 9801,
12
+ "inactivityRetry": 10,
13
+ "portSettings": {
14
+ "baudRate": 9600,
15
+ "dataBits": 8,
16
+ "parity": "none",
17
+ "stopBits": 1,
18
+ "rtscts": false,
19
+ "autoOpen": false,
20
+ "lock": false
21
+ },
22
+ "netSettings": {
23
+ "allowHalfOpen": false,
24
+ "keepAlive": false,
25
+ "keepAliveInitialDelay": 5
26
+ },
27
+ "screenlogic": {
28
+ "connectionType": "local",
29
+ "systemName": "Pentair: 00-00-00",
30
+ "password": 1234
31
+ }
32
+ },
33
+ "txDelays": {
34
+ "idleBeforeTxMs": 0,
35
+ "interFrameDelayMs": 100,
36
+ "interByteDelayMs": 0
37
+ },
38
+ "backups": {
39
+ "automatic": false,
40
+ "interval": {
41
+ "days": 30,
42
+ "hours": 0
43
+ },
44
+ "keepCount": 5,
45
+ "njsPC": true,
46
+ "servers": []
47
+ }
48
+ },
49
+ "web": {
50
+ "servers": {
51
+ "http2": {
52
+ "enabled": false
53
+ },
54
+ "http": {
55
+ "enabled": true,
56
+ "ip": "0.0.0.0",
57
+ "port": 4200,
58
+ "httpsRedirect": false,
59
+ "authentication": "none",
60
+ "authFile": "/users.htpasswd"
61
+ },
62
+ "https": {
63
+ "enabled": false,
64
+ "ip": "0.0.0.0",
65
+ "port": 4201,
66
+ "authentication": "none",
67
+ "authFile": "/users.htpasswd",
68
+ "sslKeyFile": "",
69
+ "sslCertFile": ""
70
+ },
71
+ "mdns": {
72
+ "enabled": false
73
+ },
74
+ "ssdp": {
75
+ "enabled": true
76
+ }
77
+ },
78
+ "services": {},
79
+ "interfaces": {
80
+ "smartThings": {
81
+ "name": "SmartThings",
82
+ "type": "rest",
83
+ "enabled": false,
84
+ "fileName": "smartThings-Hubitat.json",
85
+ "globals": {},
86
+ "options": {
87
+ "host": "0.0.0.0",
88
+ "port": 39500
89
+ }
90
+ },
91
+ "hubitat": {
92
+ "name": "Hubitat",
93
+ "type": "rest",
94
+ "enabled": false,
95
+ "fileName": "smartThings-Hubitat.json",
96
+ "globals": {},
97
+ "options": {
98
+ "host": "0.0.0.0",
99
+ "port": 39501
100
+ }
101
+ },
102
+ "vera": {
103
+ "name": "Vera",
104
+ "type": "rest",
105
+ "enabled": false,
106
+ "fileName": "vera.json",
107
+ "vars": {
108
+ "deviceId": 0
109
+ },
110
+ "options": {
111
+ "host": "",
112
+ "port": 3480
113
+ }
114
+ },
115
+ "valveRelay": {
116
+ "type": "rest",
117
+ "name": "Valve Relays",
118
+ "enabled": false,
119
+ "fileName": "valveRelays.json",
120
+ "vars": {
121
+ "valveIds": []
122
+ },
123
+ "options": {
124
+ "host": "0.0.0.0",
125
+ "port": 8081
126
+ }
127
+ },
128
+ "influxDB": {
129
+ "name": "InfluxDB",
130
+ "type": "influx",
131
+ "enabled": false,
132
+ "fileName": "influxDB.json",
133
+ "options": {
134
+ "version": 1,
135
+ "protocol": "http",
136
+ "host": "192.168.0.1",
137
+ "port": 9999,
138
+ "username": "",
139
+ "password": "",
140
+ "database": "pool",
141
+ "retentionPolicy": "autogen"
142
+ }
143
+ },
144
+ "influxDBv2": {
145
+ "name": "InfluxDBv2",
146
+ "type": "influx",
147
+ "enabled": false,
148
+ "fileName": "influxDB.json",
149
+ "options": {
150
+ "version": 2,
151
+ "protocol": "http",
152
+ "host": "192.168.0.1",
153
+ "port": 9999,
154
+ "token": "...LuyM84JJx93Qvc7tfaXPbI_mFFjRBjaA==",
155
+ "org": "example-org",
156
+ "bucket": "57ec4eed2d90a50b"
157
+ }
158
+ },
159
+ "mqtt": {
160
+ "name": "MQTT",
161
+ "type": "mqtt",
162
+ "enabled": false,
163
+ "fileName": "mqtt.json",
164
+ "globals": {},
165
+ "options": {
166
+ "protocol": "mqtt://",
167
+ "host": "192.168.0.1",
168
+ "port": 1883,
169
+ "username": "",
170
+ "password": "",
171
+ "selfSignedCertificate": false,
172
+ "rootTopic": "@bind=(state.equipment.model).replace(/ /g,'-').replace('/','').toLowerCase();",
173
+ "retain": true,
174
+ "qos": 0,
175
+ "changesOnly": true
176
+ }
177
+ },
178
+ "aqualinkD": {
179
+ "name": "AquaLinkD",
180
+ "type": "mqtt",
181
+ "enabled": false,
182
+ "fileName": "aqualinkD.json",
183
+ "globals": {},
184
+ "options": {
185
+ "protocol": "mqtt://",
186
+ "host": "192.168.0.1",
187
+ "port": 1883,
188
+ "username": "",
189
+ "password": "",
190
+ "rootTopic": "aqualinkd",
191
+ "retain": true,
192
+ "qos": 0,
193
+ "changesOnly": true
194
+ },
195
+ "vars": {
196
+ "tempPrecision": 2,
197
+ "tempUnits": "@bind=sys.board.valueMaps.tempUnits.getName(state.temps.units);"
198
+ }
199
+ },
200
+ "mqttAlt": {
201
+ "name": "MQTTAlt",
202
+ "type": "mqtt",
203
+ "enabled": false,
204
+ "fileName": "mqttAlt.json",
205
+ "globals": {},
206
+ "options": {
207
+ "protocol": "mqtt://",
208
+ "host": "192.168.0.1",
209
+ "port": 1883,
210
+ "username": "",
211
+ "password": "",
212
+ "rootTopic": "@bind=(state.equipment.model).replace(/ /,'-').replace('/','').toLowerCase();Alt",
213
+ "retain": true,
214
+ "qos": 0,
215
+ "changesOnly": true
216
+ }
217
+ },
218
+ "homeAssistant": {
219
+ "name": "Home Assistant",
220
+ "type": "mqtt",
221
+ "enabled": false,
222
+ "fileName": "homeassistant.json",
223
+ "globals": {},
224
+ "options": {
225
+ "protocol": "mqtt://",
226
+ "host": "192.168.0.1",
227
+ "port": 1883,
228
+ "username": "",
229
+ "password": "",
230
+ "selfSignedCertificate": false,
231
+ "retain": true,
232
+ "qos": 0,
233
+ "changesOnly": true
234
+ },
235
+ "vars": {
236
+ "_note": "hassTopic is the topic that HASS reads for configuration and should not be changed. mqttTopic should match the topic in the MQTT binding (do not use MQTTAlt for HASS).",
237
+ "hassTopic": "homeassistant",
238
+ "mqttTopic": "@bind=(state.equipment.model).replace(/ /g,'-').replace('/','').toLowerCase();"
239
+ }
240
+ },
241
+ "rem": {
242
+ "name": "Relay Equipment Manager",
243
+ "type": "rem",
244
+ "enabled": false,
245
+ "options": {
246
+ "protocol": "http://",
247
+ "host": "raspberrypi",
248
+ "port": 8080,
249
+ "headers": {
250
+ "content-type": "application/json"
251
+ }
252
+ },
253
+ "socket": {
254
+ "transports": [
255
+ "websocket"
256
+ ],
257
+ "upgrade": false,
258
+ "reconnectionDelay": 2000,
259
+ "reconnection": true,
260
+ "reconnectionDelayMax": 20000
261
+ }
262
+ }
263
+ }
264
+ },
265
+ "log": {
266
+ "screenlogic": {
267
+ "enabled": false,
268
+ "logToConsole": false,
269
+ "logToFile": false
270
+ },
271
+ "packet": {
272
+ "logToConsole": false,
273
+ "logToFile": false,
274
+ "enabled": false,
275
+ "filename": "packetLog",
276
+ "invalid": true,
277
+ "broadcast": {
278
+ "enabled": true,
279
+ "includeActions": [],
280
+ "includeSource": [],
281
+ "includeDest": [],
282
+ "excludeActions": [],
283
+ "excludeSource": [],
284
+ "excludeDest": []
285
+ },
286
+ "pump": {
287
+ "enabled": true,
288
+ "includeActions": [],
289
+ "includeSource": [],
290
+ "includeDest": [],
291
+ "excludeActions": [],
292
+ "excludeSource": [],
293
+ "excludeDest": []
294
+ },
295
+ "chlorinator": {
296
+ "enabled": true,
297
+ "includeSource": [],
298
+ "includeDest": [],
299
+ "excludeSource": [],
300
+ "excludeDest": []
301
+ },
302
+ "intellichem": {
303
+ "enabled": true,
304
+ "includeActions": [],
305
+ "excludeActions": [],
306
+ "includeSource": [],
307
+ "includeDest": [],
308
+ "excludeSource": [],
309
+ "excludeDest": []
310
+ },
311
+ "intellivalve": {
312
+ "enabled": true,
313
+ "includeActions": [],
314
+ "excludeActions": [],
315
+ "includeSource": [],
316
+ "includeDest": [],
317
+ "excludeSource": [],
318
+ "excludeDest": []
319
+ },
320
+ "heater": {
321
+ "enabled": true,
322
+ "includeActions": [],
323
+ "excludeActions": [],
324
+ "includeSource": [],
325
+ "includeDest": [],
326
+ "excludeSource": [],
327
+ "excludeDest": []
328
+ },
329
+ "unidentified": {
330
+ "enabled": true,
331
+ "includeSource": [],
332
+ "includeDest": [],
333
+ "excludeSource": [],
334
+ "excludeDest": []
335
+ },
336
+ "unknown": {
337
+ "enabled": true,
338
+ "includeSource": [],
339
+ "includeDest": [],
340
+ "excludeSource": [],
341
+ "excludeDest": []
342
+ }
343
+ },
344
+ "app": {
345
+ "enabled": true,
346
+ "level": "info",
347
+ "captureForReplay": false,
348
+ "logToFile": false
349
+ }
350
+ },
351
+ "appVersion": "0.0.1"
352
+ }