nodejs-poolcontroller 8.3.0 → 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 (105) 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 -63
  7. package/.github/workflows/ghcr-publish.yml +67 -67
  8. package/AGENTS.md +597 -0
  9. package/CONTRIBUTING.md +74 -74
  10. package/Changelog +292 -284
  11. package/Dockerfile +62 -62
  12. package/Gruntfile.js +40 -40
  13. package/LICENSE +661 -661
  14. package/README.md +318 -309
  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 +0 -0
  23. package/config/VersionCheck.ts +0 -0
  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 -3701
  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 -1944
  36. package/controller/boards/SunTouchBoard.ts +400 -400
  37. package/controller/boards/SystemBoard.ts +5268 -5268
  38. package/controller/comms/Comms.ts +1272 -1255
  39. package/controller/comms/ScreenLogic.ts +1665 -1665
  40. package/controller/comms/messages/Messages.ts +1433 -1406
  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 +410 -410
  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 +1193 -1193
  77. package/controller/nixie/schedules/Schedule.ts +401 -401
  78. package/controller/nixie/valves/Valve.ts +170 -170
  79. package/defaultConfig.json +352 -352
  80. package/docker-compose.yml +31 -31
  81. package/logger/DataLogger.ts +448 -448
  82. package/logger/Logger.ts +448 -436
  83. package/package.json +58 -58
  84. package/sendSocket.js +32 -32
  85. package/tsconfig.json +25 -25
  86. package/types/express-multer.d.ts +32 -32
  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
@@ -1,352 +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
- "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
- }
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
+ }