nodejs-poolcontroller 7.6.0 → 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 -215
  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 +0 -0
  10. package/config/Config.ts +24 -2
  11. package/config/VersionCheck.ts +27 -12
  12. package/config copy.json +299 -299
  13. package/controller/Constants.ts +0 -0
  14. package/controller/Equipment.ts +2459 -2405
  15. package/controller/Errors.ts +180 -180
  16. package/controller/Lockouts.ts +436 -422
  17. package/controller/State.ts +51 -26
  18. package/controller/boards/BoardFactory.ts +45 -45
  19. package/controller/boards/EasyTouchBoard.ts +2653 -2537
  20. package/controller/boards/IntelliCenterBoard.ts +4230 -4034
  21. package/controller/boards/IntelliComBoard.ts +63 -63
  22. package/controller/boards/IntelliTouchBoard.ts +241 -241
  23. package/controller/boards/NixieBoard.ts +1675 -1660
  24. package/controller/boards/SystemBoard.ts +4697 -4463
  25. package/controller/comms/Comms.ts +138 -1
  26. package/controller/comms/messages/Messages.ts +3 -5
  27. package/controller/comms/messages/config/ChlorinatorMessage.ts +1 -1
  28. package/controller/comms/messages/config/CircuitGroupMessage.ts +0 -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 +0 -0
  32. package/controller/comms/messages/config/CustomNameMessage.ts +30 -30
  33. package/controller/comms/messages/config/EquipmentMessage.ts +0 -0
  34. package/controller/comms/messages/config/ExternalMessage.ts +9 -7
  35. package/controller/comms/messages/config/FeatureMessage.ts +0 -0
  36. package/controller/comms/messages/config/GeneralMessage.ts +0 -0
  37. package/controller/comms/messages/config/HeaterMessage.ts +0 -20
  38. package/controller/comms/messages/config/IntellichemMessage.ts +0 -0
  39. package/controller/comms/messages/config/OptionsMessage.ts +25 -1
  40. package/controller/comms/messages/config/PumpMessage.ts +0 -0
  41. package/controller/comms/messages/config/RemoteMessage.ts +0 -0
  42. package/controller/comms/messages/config/ScheduleMessage.ts +347 -342
  43. package/controller/comms/messages/config/SecurityMessage.ts +0 -0
  44. package/controller/comms/messages/config/ValveMessage.ts +0 -0
  45. package/controller/comms/messages/status/ChlorinatorStateMessage.ts +0 -0
  46. package/controller/comms/messages/status/EquipmentStateMessage.ts +1 -1
  47. package/controller/comms/messages/status/HeaterStateMessage.ts +86 -86
  48. package/controller/comms/messages/status/IntelliChemStateMessage.ts +445 -397
  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 -162
  53. package/controller/nixie/NixieEquipment.ts +103 -103
  54. package/controller/nixie/bodies/Body.ts +120 -120
  55. package/controller/nixie/bodies/Filter.ts +135 -135
  56. package/controller/nixie/chemistry/ChemController.ts +2498 -2398
  57. package/controller/nixie/chemistry/Chlorinator.ts +314 -314
  58. package/controller/nixie/circuits/Circuit.ts +248 -245
  59. package/controller/nixie/heaters/Heater.ts +648 -600
  60. package/controller/nixie/pumps/Pump.ts +661 -661
  61. package/controller/nixie/schedules/Schedule.ts +257 -257
  62. package/controller/nixie/valves/Valve.ts +170 -170
  63. package/defaultConfig.json +286 -286
  64. package/issue_template.md +51 -51
  65. package/logger/DataLogger.ts +448 -448
  66. package/logger/Logger.ts +0 -0
  67. package/package.json +56 -56
  68. package/tsconfig.json +25 -25
  69. package/web/Server.ts +2 -2
  70. package/web/bindings/influxDB.json +1021 -981
  71. package/web/bindings/mqtt.json +654 -654
  72. package/web/bindings/mqttAlt.json +684 -684
  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 -124
  79. package/web/interfaces/influxInterface.ts +245 -241
  80. package/web/interfaces/mqttInterface.ts +475 -475
  81. package/web/services/config/Config.ts +10 -108
  82. package/web/services/config/ConfigSocket.ts +0 -0
  83. package/web/services/state/State.ts +71 -4
  84. package/web/services/state/StateSocket.ts +0 -0
  85. package/web/services/utilities/Utilities.ts +42 -42
@@ -1,286 +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
- "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
- }
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
+ }
package/issue_template.md CHANGED
@@ -1,52 +1,52 @@
1
- ---
2
- name: Bug report
3
- about: Create a report to help us improve
4
- title: ''
5
- labels: ''
6
- assignees: ''
7
-
8
- ---
9
-
10
- **Describe the bug**
11
- A clear and concise description of what the bug is.
12
-
13
- **To Reproduce**
14
- Steps to reproduce the behavior:
15
- 1. Go to '...'
16
- 2. Click on '....'
17
- 3. Scroll down to '....'
18
- 4. See error
19
-
20
- **Expected behavior**
21
- A clear and concise description of what you expected to happen.
22
-
23
- **Screenshots**
24
- If applicable, add screenshots to help explain your problem.
25
-
26
- **Packet Capture**
27
- Follow the instructions to complete a [packet capture](https://github.com/tagyoureit/nodejs-poolController/wiki/How-to-capture-all-packets-for-issue-resolution) and attach the resulting zip/log files.
28
-
29
- **Pool Equipment**
30
- - Controller: [e.g. IntelliCenter, EasyTouch, IntelliTouch]
31
- - Controller Model: [e.g. IntelliCenter i5PS, EasyTouch2 8P]
32
- - Controller Firmware Version: [e.g. 1.047]
33
- - Pump(s) manufacturer and model: [e.g. IntelliFlow 2 VST 011056]
34
- - Chlorinator: [e.g. iChlor, IntelliChlor-40]
35
- - Heater(s): [e.g. gas, solar, heatpump, ultratemp]
36
- - Chemical controller: [e.g. IntelliChem, Relay Equipment Manager (REM)]
37
- - Valves: [e.g. Intellivalve]
38
- - Any other relevant equipment:
39
-
40
- **Desktop (please complete the following information):**
41
- - OS: [e.g. iOS]
42
- - Browser [e.g. chrome, safari]
43
- - Version [e.g. 22]
44
-
45
- **Smartphone (please complete the following information):**
46
- - Device: [e.g. iPhone6]
47
- - OS: [e.g. iOS8.1]
48
- - Browser [e.g. stock browser, safari]
49
- - Version [e.g. 22]
50
-
51
- **Additional context**
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Describe the bug**
11
+ A clear and concise description of what the bug is.
12
+
13
+ **To Reproduce**
14
+ Steps to reproduce the behavior:
15
+ 1. Go to '...'
16
+ 2. Click on '....'
17
+ 3. Scroll down to '....'
18
+ 4. See error
19
+
20
+ **Expected behavior**
21
+ A clear and concise description of what you expected to happen.
22
+
23
+ **Screenshots**
24
+ If applicable, add screenshots to help explain your problem.
25
+
26
+ **Packet Capture**
27
+ Follow the instructions to complete a [packet capture](https://github.com/tagyoureit/nodejs-poolController/wiki/How-to-capture-all-packets-for-issue-resolution) and attach the resulting zip/log files.
28
+
29
+ **Pool Equipment**
30
+ - Controller: [e.g. IntelliCenter, EasyTouch, IntelliTouch]
31
+ - Controller Model: [e.g. IntelliCenter i5PS, EasyTouch2 8P]
32
+ - Controller Firmware Version: [e.g. 1.047]
33
+ - Pump(s) manufacturer and model: [e.g. IntelliFlow 2 VST 011056]
34
+ - Chlorinator: [e.g. iChlor, IntelliChlor-40]
35
+ - Heater(s): [e.g. gas, solar, heatpump, ultratemp]
36
+ - Chemical controller: [e.g. IntelliChem, Relay Equipment Manager (REM)]
37
+ - Valves: [e.g. Intellivalve]
38
+ - Any other relevant equipment:
39
+
40
+ **Desktop (please complete the following information):**
41
+ - OS: [e.g. iOS]
42
+ - Browser [e.g. chrome, safari]
43
+ - Version [e.g. 22]
44
+
45
+ **Smartphone (please complete the following information):**
46
+ - Device: [e.g. iPhone6]
47
+ - OS: [e.g. iOS8.1]
48
+ - Browser [e.g. stock browser, safari]
49
+ - Version [e.g. 22]
50
+
51
+ **Additional context**
52
52
  Add any other context about the problem here.