nodejs-poolcontroller 7.3.1 → 7.6.1

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 (85) hide show
  1. package/.eslintrc.json +44 -44
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +52 -52
  3. package/CONTRIBUTING.md +74 -74
  4. package/Changelog +215 -195
  5. package/Dockerfile +17 -17
  6. package/Gruntfile.js +40 -40
  7. package/LICENSE +661 -661
  8. package/README.md +191 -186
  9. package/app.ts +2 -0
  10. package/config/Config.ts +27 -2
  11. package/config/VersionCheck.ts +33 -14
  12. package/config copy.json +299 -299
  13. package/controller/Constants.ts +88 -0
  14. package/controller/Equipment.ts +2459 -2225
  15. package/controller/Errors.ts +180 -157
  16. package/controller/Lockouts.ts +437 -0
  17. package/controller/State.ts +364 -79
  18. package/controller/boards/BoardFactory.ts +45 -45
  19. package/controller/boards/EasyTouchBoard.ts +2653 -2489
  20. package/controller/boards/IntelliCenterBoard.ts +4230 -3973
  21. package/controller/boards/IntelliComBoard.ts +63 -63
  22. package/controller/boards/IntelliTouchBoard.ts +241 -167
  23. package/controller/boards/NixieBoard.ts +1675 -1105
  24. package/controller/boards/SystemBoard.ts +4697 -3201
  25. package/controller/comms/Comms.ts +222 -10
  26. package/controller/comms/messages/Messages.ts +13 -9
  27. package/controller/comms/messages/config/ChlorinatorMessage.ts +13 -4
  28. package/controller/comms/messages/config/CircuitGroupMessage.ts +6 -0
  29. package/controller/comms/messages/config/CircuitMessage.ts +0 -0
  30. package/controller/comms/messages/config/ConfigMessage.ts +0 -0
  31. package/controller/comms/messages/config/CoverMessage.ts +1 -0
  32. package/controller/comms/messages/config/CustomNameMessage.ts +30 -30
  33. package/controller/comms/messages/config/EquipmentMessage.ts +4 -0
  34. package/controller/comms/messages/config/ExternalMessage.ts +53 -33
  35. package/controller/comms/messages/config/FeatureMessage.ts +8 -1
  36. package/controller/comms/messages/config/GeneralMessage.ts +8 -0
  37. package/controller/comms/messages/config/HeaterMessage.ts +14 -28
  38. package/controller/comms/messages/config/IntellichemMessage.ts +4 -1
  39. package/controller/comms/messages/config/OptionsMessage.ts +38 -2
  40. package/controller/comms/messages/config/PumpMessage.ts +4 -20
  41. package/controller/comms/messages/config/RemoteMessage.ts +4 -0
  42. package/controller/comms/messages/config/ScheduleMessage.ts +347 -331
  43. package/controller/comms/messages/config/SecurityMessage.ts +1 -0
  44. package/controller/comms/messages/config/ValveMessage.ts +13 -3
  45. package/controller/comms/messages/status/ChlorinatorStateMessage.ts +2 -3
  46. package/controller/comms/messages/status/EquipmentStateMessage.ts +79 -25
  47. package/controller/comms/messages/status/HeaterStateMessage.ts +86 -53
  48. package/controller/comms/messages/status/IntelliChemStateMessage.ts +445 -386
  49. package/controller/comms/messages/status/IntelliValveStateMessage.ts +35 -35
  50. package/controller/comms/messages/status/PumpStateMessage.ts +0 -0
  51. package/controller/comms/messages/status/VersionMessage.ts +0 -0
  52. package/controller/nixie/Nixie.ts +162 -160
  53. package/controller/nixie/NixieEquipment.ts +103 -103
  54. package/controller/nixie/bodies/Body.ts +120 -117
  55. package/controller/nixie/bodies/Filter.ts +135 -135
  56. package/controller/nixie/chemistry/ChemController.ts +2498 -2395
  57. package/controller/nixie/chemistry/Chlorinator.ts +314 -313
  58. package/controller/nixie/circuits/Circuit.ts +248 -210
  59. package/controller/nixie/heaters/Heater.ts +649 -441
  60. package/controller/nixie/pumps/Pump.ts +661 -599
  61. package/controller/nixie/schedules/Schedule.ts +257 -256
  62. package/controller/nixie/valves/Valve.ts +170 -170
  63. package/defaultConfig.json +286 -271
  64. package/issue_template.md +51 -51
  65. package/logger/DataLogger.ts +448 -433
  66. package/logger/Logger.ts +0 -0
  67. package/package.json +56 -54
  68. package/tsconfig.json +25 -25
  69. package/web/Server.ts +522 -31
  70. package/web/bindings/influxDB.json +1022 -894
  71. package/web/bindings/mqtt.json +654 -543
  72. package/web/bindings/mqttAlt.json +684 -574
  73. package/web/bindings/rulesManager.json +54 -54
  74. package/web/bindings/smartThings-Hubitat.json +31 -31
  75. package/web/bindings/valveRelays.json +20 -20
  76. package/web/bindings/vera.json +25 -25
  77. package/web/interfaces/baseInterface.ts +136 -136
  78. package/web/interfaces/httpInterface.ts +124 -122
  79. package/web/interfaces/influxInterface.ts +245 -240
  80. package/web/interfaces/mqttInterface.ts +475 -464
  81. package/web/services/config/Config.ts +181 -152
  82. package/web/services/config/ConfigSocket.ts +0 -0
  83. package/web/services/state/State.ts +118 -7
  84. package/web/services/state/StateSocket.ts +18 -1
  85. package/web/services/utilities/Utilities.ts +42 -42
@@ -1,271 +1,286 @@
1
- {
2
- "controller": {
3
- "comms": {
4
- "enabled": true,
5
- "rs485Port": "/dev/ttyUSB0",
6
- "mockPort": false,
7
- "netConnect": false,
8
- "netHost": "raspberrypi",
9
- "netPort": 9801,
10
- "inactivityRetry": 10,
11
- "portSettings": {
12
- "baudRate": 9600,
13
- "dataBits": 8,
14
- "parity": "none",
15
- "stopBits": 1,
16
- "flowControl": false,
17
- "autoOpen": false,
18
- "lock": false
19
- }
20
- }
21
- },
22
- "web": {
23
- "servers": {
24
- "http2": {
25
- "enabled": false
26
- },
27
- "http": {
28
- "enabled": true,
29
- "ip": "0.0.0.0",
30
- "port": 4200,
31
- "httpsRedirect": false,
32
- "authentication": "none",
33
- "authFile": "/users.htpasswd"
34
- },
35
- "https": {
36
- "enabled": false,
37
- "ip": "0.0.0.0",
38
- "port": 4201,
39
- "authentication": "none",
40
- "authFile": "/users.htpasswd",
41
- "sslKeyFile": "",
42
- "sslCertFile": ""
43
- },
44
- "mdns": {
45
- "enabled": false
46
- },
47
- "ssdp": {
48
- "enabled": true
49
- }
50
- },
51
- "services": {},
52
- "interfaces": {
53
- "smartThings": {
54
- "name": "SmartThings",
55
- "enabled": false,
56
- "fileName": "smartThings-Hubitat.json",
57
- "globals": {},
58
- "options": {
59
- "host": "0.0.0.0",
60
- "port": 39500
61
- }
62
- },
63
- "hubitat": {
64
- "name": "Hubitat",
65
- "enabled": false,
66
- "fileName": "smartThings-Hubitat.json",
67
- "globals": {},
68
- "options": {
69
- "host": "0.0.0.0",
70
- "port": 39501
71
- }
72
- },
73
- "vera": {
74
- "name": "Vera",
75
- "enabled": false,
76
- "fileName": "vera.json",
77
- "vars": {
78
- "deviceId": 0
79
- },
80
- "options": {
81
- "host": "",
82
- "port": 3480
83
- }
84
- },
85
- "valveRelay": {
86
- "name": "Valve Relays",
87
- "enabled": false,
88
- "fileName": "valveRelays.json",
89
- "vars": {
90
- "valveIds": []
91
- },
92
- "options": {
93
- "host": "0.0.0.0",
94
- "port": 8081
95
- }
96
- },
97
- "influxDB": {
98
- "name": "InfluxDB",
99
- "type": "influx",
100
- "enabled": false,
101
- "fileName": "influxDB.json",
102
- "options": {
103
- "version": 1,
104
- "protocol": "http",
105
- "host": "192.168.0.1",
106
- "port": 9999,
107
- "username": "",
108
- "password": "",
109
- "database": "pool",
110
- "retentionPolicy": "autogen"
111
- }
112
- },
113
- "influxDBv2": {
114
- "name": "InfluxDBv2",
115
- "type": "influx",
116
- "enabled": false,
117
- "fileName": "influxDB.json",
118
- "options": {
119
- "version": 2,
120
- "protocol": "http",
121
- "host": "192.168.0.1",
122
- "port": 9999,
123
- "token": "...LuyM84JJx93Qvc7tfaXPbI_mFFjRBjaA==",
124
- "org": "example-org",
125
- "bucket": "57ec4eed2d90a50b"
126
- }
127
- },
128
- "mqtt": {
129
- "name": "MQTT",
130
- "type": "mqtt",
131
- "enabled": false,
132
- "fileName": "mqtt.json",
133
- "globals": {},
134
- "options": {
135
- "protocol": "mqtt://",
136
- "host": "192.168.0.1",
137
- "port": 1883,
138
- "username": "",
139
- "password": "",
140
- "selfSignedCertificate": false,
141
- "rootTopic": "@bind=(state.equipment.model).replace(' ','-').replace('/','').toLowerCase();",
142
- "retain": true,
143
- "qos": 0,
144
- "changesOnly": true
145
- }
146
- },
147
- "mqttAlt": {
148
- "name": "MQTTAlt",
149
- "type": "mqtt",
150
- "enabled": false,
151
- "fileName": "mqttAlt.json",
152
- "globals": {},
153
- "options": {
154
- "protocol": "mqtt://",
155
- "host": "192.168.0.1",
156
- "port": 1883,
157
- "username": "",
158
- "password": "",
159
- "rootTopic": "@bind=(state.equipment.model).replace(' ','-').replace('/','').toLowerCase();Alt",
160
- "retain": true,
161
- "qos": 0,
162
- "changesOnly": true
163
- }
164
- },
165
- "rem": {
166
- "name": "Relay Equipment Manager",
167
- "type": "rem",
168
- "enabled": false,
169
- "options": {
170
- "protocol": "http://",
171
- "host": "raspberrypi",
172
- "port": 8080,
173
- "headers": {
174
- "content-type": "application/json"
175
- }
176
- },
177
- "socket": {
178
- "transports": [
179
- "websocket"
180
- ],
181
- "upgrade": false,
182
- "reconnectionDelay": 2000,
183
- "reconnection": true,
184
- "reconnectionDelayMax": 20000
185
- }
186
- }
187
- }
188
- },
189
- "log": {
190
- "packet": {
191
- "enabled": false,
192
- "logToConsole": false,
193
- "logToFile": false,
194
- "filename": "packetLog",
195
- "invalid": true,
196
- "broadcast": {
197
- "enabled": true,
198
- "includeActions": [],
199
- "includeSource": [],
200
- "includeDest": [],
201
- "excludeActions": [],
202
- "excludeSource": [],
203
- "excludeDest": []
204
- },
205
- "pump": {
206
- "enabled": true,
207
- "includeActions": [],
208
- "includeSource": [],
209
- "includeDest": [],
210
- "excludeActions": [],
211
- "excludeSource": [],
212
- "excludeDest": []
213
- },
214
- "chlorinator": {
215
- "enabled": true,
216
- "includeSource": [],
217
- "includeDest": [],
218
- "excludeSource": [],
219
- "excludeDest": []
220
- },
221
- "intellichem": {
222
- "enabled": true,
223
- "includeActions": [],
224
- "excludeActions": [],
225
- "includeSource": [],
226
- "includeDest": [],
227
- "excludeSource": [],
228
- "excludeDest": []
229
- },
230
- "intellivalve": {
231
- "enabled": true,
232
- "includeActions": [],
233
- "excludeActions": [],
234
- "includeSource": [],
235
- "includeDest": [],
236
- "excludeSource": [],
237
- "excludeDest": []
238
- },
239
- "heater": {
240
- "enabled": true,
241
- "includeActions": [],
242
- "excludeActions": [],
243
- "includeSource": [],
244
- "includeDest": [],
245
- "excludeSource": [],
246
- "excludeDest": []
247
- },
248
- "unidentified": {
249
- "enabled": true,
250
- "includeSource": [],
251
- "includeDest": [],
252
- "excludeSource": [],
253
- "excludeDest": []
254
- },
255
- "unknown": {
256
- "enabled": true,
257
- "includeSource": [],
258
- "includeDest": [],
259
- "excludeSource": [],
260
- "excludeDest": []
261
- }
262
- },
263
- "app": {
264
- "enabled": true,
265
- "level": "info",
266
- "captureForReplay": false,
267
- "logToFile": false
268
- }
269
- },
270
- "appVersion": "0.0.1"
271
- }
1
+ {
2
+ "controller": {
3
+ "comms": {
4
+ "enabled": true,
5
+ "rs485Port": "/dev/ttyUSB0",
6
+ "mockPort": false,
7
+ "netConnect": false,
8
+ "netHost": "raspberrypi",
9
+ "netPort": 9801,
10
+ "inactivityRetry": 10,
11
+ "portSettings": {
12
+ "baudRate": 9600,
13
+ "dataBits": 8,
14
+ "parity": "none",
15
+ "stopBits": 1,
16
+ "flowControl": false,
17
+ "autoOpen": false,
18
+ "lock": false
19
+ }
20
+ },
21
+ "backups": {
22
+ "automatic": false,
23
+ "interval": {
24
+ "days": 30,
25
+ "hours": 0
26
+ },
27
+ "keepCount": 5,
28
+ "njsPC": true,
29
+ "servers": []
30
+ }
31
+
32
+ },
33
+ "web": {
34
+ "servers": {
35
+ "http2": {
36
+ "enabled": false
37
+ },
38
+ "http": {
39
+ "enabled": true,
40
+ "ip": "0.0.0.0",
41
+ "port": 4200,
42
+ "httpsRedirect": false,
43
+ "authentication": "none",
44
+ "authFile": "/users.htpasswd"
45
+ },
46
+ "https": {
47
+ "enabled": false,
48
+ "ip": "0.0.0.0",
49
+ "port": 4201,
50
+ "authentication": "none",
51
+ "authFile": "/users.htpasswd",
52
+ "sslKeyFile": "",
53
+ "sslCertFile": ""
54
+ },
55
+ "mdns": {
56
+ "enabled": false
57
+ },
58
+ "ssdp": {
59
+ "enabled": true
60
+ }
61
+ },
62
+ "services": {},
63
+ "interfaces": {
64
+ "smartThings": {
65
+ "name": "SmartThings",
66
+ "type": "rest",
67
+ "enabled": false,
68
+ "fileName": "smartThings-Hubitat.json",
69
+ "globals": {},
70
+ "options": {
71
+ "host": "0.0.0.0",
72
+ "port": 39500
73
+ }
74
+ },
75
+ "hubitat": {
76
+ "name": "Hubitat",
77
+ "type": "rest",
78
+ "enabled": false,
79
+ "fileName": "smartThings-Hubitat.json",
80
+ "globals": {},
81
+ "options": {
82
+ "host": "0.0.0.0",
83
+ "port": 39501
84
+ }
85
+ },
86
+ "vera": {
87
+ "name": "Vera",
88
+ "type": "rest",
89
+ "enabled": false,
90
+ "fileName": "vera.json",
91
+ "vars": {
92
+ "deviceId": 0
93
+ },
94
+ "options": {
95
+ "host": "",
96
+ "port": 3480
97
+ }
98
+ },
99
+ "valveRelay": {
100
+ "type": "rest",
101
+ "name": "Valve Relays",
102
+ "enabled": false,
103
+ "fileName": "valveRelays.json",
104
+ "vars": {
105
+ "valveIds": []
106
+ },
107
+ "options": {
108
+ "host": "0.0.0.0",
109
+ "port": 8081
110
+ }
111
+ },
112
+ "influxDB": {
113
+ "name": "InfluxDB",
114
+ "type": "influx",
115
+ "enabled": false,
116
+ "fileName": "influxDB.json",
117
+ "options": {
118
+ "version": 1,
119
+ "protocol": "http",
120
+ "host": "192.168.0.1",
121
+ "port": 9999,
122
+ "username": "",
123
+ "password": "",
124
+ "database": "pool",
125
+ "retentionPolicy": "autogen"
126
+ }
127
+ },
128
+ "influxDBv2": {
129
+ "name": "InfluxDBv2",
130
+ "type": "influx",
131
+ "enabled": false,
132
+ "fileName": "influxDB.json",
133
+ "options": {
134
+ "version": 2,
135
+ "protocol": "http",
136
+ "host": "192.168.0.1",
137
+ "port": 9999,
138
+ "token": "...LuyM84JJx93Qvc7tfaXPbI_mFFjRBjaA==",
139
+ "org": "example-org",
140
+ "bucket": "57ec4eed2d90a50b"
141
+ }
142
+ },
143
+ "mqtt": {
144
+ "name": "MQTT",
145
+ "type": "mqtt",
146
+ "enabled": false,
147
+ "fileName": "mqtt.json",
148
+ "globals": {},
149
+ "options": {
150
+ "protocol": "mqtt://",
151
+ "host": "192.168.0.1",
152
+ "port": 1883,
153
+ "username": "",
154
+ "password": "",
155
+ "selfSignedCertificate": false,
156
+ "rootTopic": "@bind=(state.equipment.model).replace(' ','-').replace('/','').toLowerCase();",
157
+ "retain": true,
158
+ "qos": 0,
159
+ "changesOnly": true
160
+ }
161
+ },
162
+ "mqttAlt": {
163
+ "name": "MQTTAlt",
164
+ "type": "mqtt",
165
+ "enabled": false,
166
+ "fileName": "mqttAlt.json",
167
+ "globals": {},
168
+ "options": {
169
+ "protocol": "mqtt://",
170
+ "host": "192.168.0.1",
171
+ "port": 1883,
172
+ "username": "",
173
+ "password": "",
174
+ "rootTopic": "@bind=(state.equipment.model).replace(' ','-').replace('/','').toLowerCase();Alt",
175
+ "retain": true,
176
+ "qos": 0,
177
+ "changesOnly": true
178
+ }
179
+ },
180
+ "rem": {
181
+ "name": "Relay Equipment Manager",
182
+ "type": "rem",
183
+ "enabled": false,
184
+ "options": {
185
+ "protocol": "http://",
186
+ "host": "raspberrypi",
187
+ "port": 8080,
188
+ "headers": {
189
+ "content-type": "application/json"
190
+ }
191
+ },
192
+ "socket": {
193
+ "transports": [
194
+ "websocket"
195
+ ],
196
+ "upgrade": false,
197
+ "reconnectionDelay": 2000,
198
+ "reconnection": true,
199
+ "reconnectionDelayMax": 20000
200
+ }
201
+ }
202
+ }
203
+ },
204
+ "log": {
205
+ "packet": {
206
+ "enabled": false,
207
+ "logToConsole": false,
208
+ "logToFile": false,
209
+ "filename": "packetLog",
210
+ "invalid": true,
211
+ "broadcast": {
212
+ "enabled": true,
213
+ "includeActions": [],
214
+ "includeSource": [],
215
+ "includeDest": [],
216
+ "excludeActions": [],
217
+ "excludeSource": [],
218
+ "excludeDest": []
219
+ },
220
+ "pump": {
221
+ "enabled": true,
222
+ "includeActions": [],
223
+ "includeSource": [],
224
+ "includeDest": [],
225
+ "excludeActions": [],
226
+ "excludeSource": [],
227
+ "excludeDest": []
228
+ },
229
+ "chlorinator": {
230
+ "enabled": true,
231
+ "includeSource": [],
232
+ "includeDest": [],
233
+ "excludeSource": [],
234
+ "excludeDest": []
235
+ },
236
+ "intellichem": {
237
+ "enabled": true,
238
+ "includeActions": [],
239
+ "excludeActions": [],
240
+ "includeSource": [],
241
+ "includeDest": [],
242
+ "excludeSource": [],
243
+ "excludeDest": []
244
+ },
245
+ "intellivalve": {
246
+ "enabled": true,
247
+ "includeActions": [],
248
+ "excludeActions": [],
249
+ "includeSource": [],
250
+ "includeDest": [],
251
+ "excludeSource": [],
252
+ "excludeDest": []
253
+ },
254
+ "heater": {
255
+ "enabled": true,
256
+ "includeActions": [],
257
+ "excludeActions": [],
258
+ "includeSource": [],
259
+ "includeDest": [],
260
+ "excludeSource": [],
261
+ "excludeDest": []
262
+ },
263
+ "unidentified": {
264
+ "enabled": true,
265
+ "includeSource": [],
266
+ "includeDest": [],
267
+ "excludeSource": [],
268
+ "excludeDest": []
269
+ },
270
+ "unknown": {
271
+ "enabled": true,
272
+ "includeSource": [],
273
+ "includeDest": [],
274
+ "excludeSource": [],
275
+ "excludeDest": []
276
+ }
277
+ },
278
+ "app": {
279
+ "enabled": true,
280
+ "level": "info",
281
+ "captureForReplay": false,
282
+ "logToFile": false
283
+ }
284
+ },
285
+ "appVersion": "0.0.1"
286
+ }