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
package/Changelog CHANGED
@@ -1,285 +1,293 @@
1
- # Changelog
2
-
3
- ## 8.3.0
4
- 1. Configurable RS‑485 transmit pacing via new `controller.txDelays` for finer collision avoidance and throughput tuning.
5
- 2. Startup & config resilience: empty or invalid `config.json` now auto‑recreated from defaults, corrupt originals backed up.
6
- 3. Latitude / longitude environment overrides to eliminate early heliotrope warnings prior to UI configuration.
7
- 4. Version check enhancements: git detection, safer redirects, throttled polling, warning suppression.
8
- 5. Docker improvements: fixed Dockerfile and added docker‑compose example with named volumes & environment variable guidance.
9
- 6. Add workflow to build and publish docker images to GitHub Container registry.
10
- 7. Runtime requirements: elevated minimum Node.js version to 20+, safe dependency and security/patch updates.
11
- 8. Documentation updates.
12
-
13
- ## 8.1.2
14
- 1. Regal Century pump support added.
15
- 2. Enhanced error handling: replaced EquipmentNotFoundError with InvalidEquipmentIdError for improved clarity.
16
- 3. Improved error handling in NixieBoard, NixieCircuitCommands, and NixieValveCommands.
17
- 4. Refactored tolerance handling in TouchChemControllerCommands to ensure data integrity.
18
- 5. Added new expansion board configuration for SunTouchBoard.
19
-
20
- ## 8.1.1
21
- 1. Enhanced REM server integration with packet capture functionality.
22
- 2. Improved error handling in REMInterfaceServer methods.
23
- 3. Refined chlorinator message processing logic in MessagesMock.
24
- 4. Adjusted mock port checks across various components for consistency.
25
- 5. Refined logic for Nixie schedules.
26
- 6. Fixed documentation links for bindings integrations.
27
- 7. Enhanced queueBodyHeatSettings to handle processing timeouts and improve error logging.
28
- 8. Fixed typo in valveModes.
29
-
30
- ## 8.1.0
31
- 1. Support for dual chlorinators with REM chem controllers. It is now possible to have two separate chlorinators controlled in 'dynamic' mode by two separate REM chems. Note: In order for REM chem to control each chlorinator, each needs to be on a dedicated RS-485 port (not shared with an OCP or any other chlorinator).
32
-
33
- ## 8.0.1-8.0.5
34
- 1. Bug fixes including:
35
- a. schedule end time errors
36
- b. manual priority
37
- c. screenlogic recurring schedules
38
- d. VF pump message sequences
39
- e. intellibrite themes
40
- f. schedules are evaluated by bodies first and then everything else
41
- g. solar stop/start delta logic
42
- 2. Jandy WaterColors support
43
- 3. Initial docker support (github docker actions)
44
-
45
- ## 8.0.0
46
- 1. Refactor comms code to Async
47
- 2. Update dependencies and Node >16
48
- 3. EasyTouch v1 support
49
- 4. Screenlogic support
50
- 5. Anslq25 (Mock controller)
51
-
52
- ## 7.7.0
53
- 1. Aqualink-D MQTT Interface
54
- 2. Manual Priority for Schedules
55
- 3. Add multiple RS-485 ports
56
- 4. Support for Hayward Pumps
57
- 5. Display remote chlorinators
58
- 6. Updates for ETi hybrid
59
- 7. Stop temp deltas for Nixie
60
- 8. Batch write influx points
61
- 9. MQTT & Influx updates
62
- 10. Ability to hide bodies in dashPanel
63
- 11. Florida Sunseeker Pooltone lighting
64
- 12. Proper uPNP formatting
65
-
66
-
67
- ## 7.6.1
68
- 1. Many bugfixes: Intellichem, Touch body capacities, Ultratemp heaters, Nixie, more...
69
- 2. Add env variables for Docker setup: POOL_RS485_PORT, POOL_NET_CONNECT, POOL_NET_HOST, POOL_NET_PORT, SOURCE_COMMIT, SOURCE_BRANCH
70
- 3. Update dependencies
71
- ## 7.6
72
- 1. MasterTemp RS485 support for Nixie and IntelliCenter
73
- 2. Nixie Valve Rotation delay
74
- 3. Nixie Heater Cooldown delay
75
- 4. Nixie Cleaner Start delay
76
- 5. Nixie Cleaner Shutdown on Solar
77
- 6. Nixie Delay Cancel
78
-
79
- ## 7.5.1
80
- 1. Backup/restore fixes
81
- 2. Egg timer expiration
82
- 3. Bug Fixes
83
- 4. dashPanel/messageManager Filter
84
- 5. RS485 refactor
85
-
86
- ## 7.5
87
- 1. Backup/restore
88
- 2. Intellitouch add expansion modules
89
- ## 7.4
90
- 1. Filter object, emit, monitoring
91
-
92
- ## 7.3.1
93
- 1. Influx 2.0 support
94
-
95
- ## 7.3
96
- 1. Dynamic chlorinating % based on ORP demand for Nixie
97
- 2. Docker creation updates
98
-
99
- ## 7.2
100
- 1. Refactor Intellichem and Chem Controllers
101
-
102
- ## 7.1.1
103
- 1. Added end time for circuits to show eggtimer/schedule off times
104
- 2. Ultratemp updates
105
- 3. Heater logic refactored
106
- 4. Message response logic refactored
107
- 5. Intellichem updates
108
-
109
-
110
- ## 7.1.0
111
- 1. Moved virtual chlorinator code and control to Nixie
112
- 2. Moved virtual pump code and control to Nixie; Nixie supports SS, DS, SuperFlo, VS, VF, VSF
113
- 3. MQTT changes
114
- 4. Outbound processing for packets now has a scope. Previously if an outbound packet would receive a response we would clear all of the similar packets off the queue. EG if a user requests circuit 2 and 3 to be turned on, we would clear out the outbound message for 3. Now the code is more selective about what "scope" is considered for a successful response.
115
-
116
- ## 7.0.0
117
- 1. Upgrades to setup/sync between njsPC and REM
118
- 2. Significant steps to njsPC (Nixie) acting as a standalone pool controller (virtual controller heaters, move virtual controller code, etc.)
119
- 3. Dependency updates (Typescript 4, Socket.io 4, etc)
120
-
121
- ## 6.5.2
122
- 1. Bug Fixes
123
- 2. Schedule updates
124
- 3. MQTT Binding updates
125
- 4. LSI calcs for REM (in addition to CSI)
126
-
127
- ## 6.5.1
128
- 1. Init Touch bodies upon startup
129
- 2. *Touch chlorinator fixes
130
- 3. MQTT updates
131
-
132
- ## 6.5.0
133
- 1. Full compatibility with REM (Relay Equipment Manager) for hardware control (ph sensors, orp sensors, pumps, relays, flow sensors)
134
- 1. Upgrades to Influx binding
135
- 1. MQTT alternate bindings
136
- 1. Many, many bug fixes
137
-
138
- ## 6.1.0
139
- 1. Chem controller
140
- 1. MQTT native support
141
- 1. Server based time for *Touch and other non-internet based OCP
142
- 1. Version notifications
143
- 1. IntelliCenter updates for dual bodies, 1.045/1.047 (partial) support
144
- 1. Many bug fixes
145
-
146
- ## 6.0.1
147
- 1. Implement https (no basic auth yet)
148
- 1. API documentation @ https://tagyoureit.github.io/nodejs-poolcontroller-api/
149
- 1. Add timestamp to logs for API calls
150
- 1. #200, #202
151
-
152
- ## 6.0
153
- What's new in 6.0?s
154
-
155
- In short, everything! 6.0 is a complete re-write of the application. Huge props to @rstrouse for his wisdom and guidance in refactoring the code.
156
-
157
- 1. IntelliCenter - now supported
158
- 1. Configuring and running the app - all new. Start over with the Installation instructions.
159
- 1. Automatic detection of your pool equipment. Previous versions of the app would detect the configuration of your pool but you still had to tell the app if you had IntelliTouch/EasyTouch/IntelliCom. This is now done automatically.
160
- 1. Configuration and state information. Config.json now only stores information related to the configuration of the app. There are separate files in the /data directory that store (and persist) pool configuration and state information.
161
- 1. API's - completely changed. See separate API documentation (*link here)
162
- 1. Outbound Sockets - Now more granular to make the web app more responsive
163
- 1. Web app - Now a separate installion for a true client/server metaphore.
164
- 1. Node v12+
165
- 1. `Integrations` are now called `Bindings`. Any integration built on 5.3 need to be upgraded to the binding format. See Readme for a list of currently upgraded bindings.
166
-
167
- ## 5.3.3
168
- #134
169
-
170
- ## 5.3.1
171
- #132
172
-
173
- ## 5.3.0
174
- Fix for #106
175
- Fix for "Error 60" messages
176
- Improved caching of files on browsers. Thanks @arrmo! Now files will be loaded once in the browser and kept in cache instead of reloaded each time.
177
- Improved handling of sessions and graceful closing of the HTTP(s) servers.
178
-
179
- ## 5.2.0
180
- 1. Node 6+ is supported. This app no longer supports Node 4.
181
- 1. Update of modules. Make sure to run `npm i` or `npm upgrade` to get the latest.
182
- 1. Much better support of multiple Intellibrite controllers. We can read both controllers now. There are still some issues with sending changes and help is needed to debug these.
183
- 1. Chlorinator API calls (and UI) will now make changes through Intellitouch when available, or directly to the Intellichlor if it is standalone (aka using the virtual controller)
184
- 1. Decoupled serial port and processing of packets. Should help recovery upon packet errors.
185
- 1. Implementation of #89. Expansion boards are now (better) supported by setting variables in your config.json. See the [config.json](#module_nodejs-poolController--config) section below.
186
- 1. Fix for #95
187
- 1. Fix for #99
188
- 1. Fix for #100
189
-
190
- ## 5.1.1 -
191
- 1. Renamed all 'valves' items to valve to be in line with singular renaming of items
192
- 1. InfluxDB - moved some items that were in tag fields to field keys; added valves
193
- 1. Added days of week (with editing) back to the schedules. Not sure when they disappeared, but they are back now. #92
194
- 1. Added MySQL integration to log all packets to a DB
195
- 1. Fixed PR #95 to allow sub-hour egg timers
196
- 1. Fixed Intellibrite bugs
197
- 1. Started to move some of the inter-communications to emitter events for better micro-services and shorter call stacks (easier debugging; loosely coupled code).
198
- 1. Changed some Influx tags/queries.
199
-
200
- ## 5.1.0 -
201
- 1. Intellibrite support - API's, Sockets and a WebUI. Lights should have the 'Intellbrite' an their circuit function (set this up at the controller) to show up in this section.
202
- Will document more later, but...
203
- /light/mode/:mode
204
- /light/circuit/:circuit/setColor/:color
205
- /light/circuit/:circuit/setSwimDelay/:delay
206
- /light/circuit/:circuit/setPosition/:position
207
-
208
- See the constants.js file and the sections:
209
- strIntellibriteModes (for modes)
210
- lightColors (for setColor)
211
-
212
- ## 5.0.1 -
213
- 1. Fixed Influx error on startup #90
214
- 1. Fixed bad characters in custom names
215
-
216
- ## 5.0.0 -
217
- Make sure to run `npm upgrade`. There are many package updates and changes.
218
-
219
- * Added add/delete/edit schedule
220
- * All sockets/API now singular (`circuits`->`circuit`)
221
- * All sockets/API data now returned with a JSON qualifier. EG `{pump:...}`, `{circuit:...}`
222
- * Intellichem decoding and display
223
- * Changes to `/config` endpoint. It's now included with the `/all` end point since there would be quite a bit of duplication. It still exists standalone (for now) but has much less information in it.
224
- * Moved `hideAux` setting from `configClient.json` (web UI settings) to `config.json` template. In `config.json` template, moved
225
- ```
226
- {equipment: {controller: {circuitFriendlyNames:{1..20}}}}
227
-
228
- // to
229
-
230
- {equipment: {circuit: friendlyName:{1..20},
231
- hideAux: boolean
232
- },
233
- }
234
- ```
235
- to be in line with the other equipment in the pool setup and accomodate the `hideAux` setting.
236
-
237
- * Fixed issue #82
238
- * Extra info from `/config` was being added to the circuit section in `config.json`
239
- * This release includes a new mechanism for updating config.json files. See notes in [config.json](#module_nodejs-poolController--config) section.
240
- * mDNS server. Currently included for SmartThings integration, but in the future can be used for autodiscovery by other applications/devices.
241
- * New `/config` endpoint (beta) to allow applications to get a high level summary of the system.
242
- * Support for two separate (http/https) web servers, each/both with Auth, and also the option to redirect all http to https traffic. Thanks to @arrmo for driving this with #65 and #68.
243
- * A UI for standalone pumps
244
- * All sockets and API's renamed to be SINGULAR. Circuits -> circuit, Schedules->schedule, etc.
245
- * All returned JSON data (API/socket) now has the type qualifier per [#57](https://github.com/tagyoureit/nodejs-poolController/issues/57)
246
- * Make sure to run `npm upgrade`. There are many package updates and changes.
247
- * Intellichem initial support.
248
- * Inactivity timer for both internal connections and web page connections. If a connection is broken, it should re-establish itself automatically now.
249
- * SSDP for auto-discovery by SmartThings or other services
250
-
251
- ## 4.0.0 -
252
- * Changed much in the config.json file
253
- * Save pump programs and chlorinator level to config.json
254
- * Added support for GPM with pumps
255
- * Check for newer versions of the app on github, and dismiss notifications until next release
256
- * Bootstrap configuration is automatically saved in clientConfig.json via UI actions
257
- * Started to introduce some promises into the workflow (mostly with read/write operations)
258
- * Added log-to-file option
259
- * Added capture for Ctrl-C/SIGINT to have a clean exit
260
- * Added InfluxDB database capabilities
261
- * Added support for reading the data from up to 16 pumps. (You can still only control two.)
262
- * Support for up to 50 circuits, 8 pumps
263
- * Delay and Cancel Delay for circuits
264
-
265
- ## 3.1.x -
266
- * Added unit testing for certain areas
267
- * Added setDateTime API/Socket
268
- * Bootstrap panel states are now persistent
269
-
270
- ## 3.0.0 -
271
- * Upgraded pump logic
272
-
273
- ## 2.0.0 -
274
- * https, Authentication
275
- * Completely refactored code. Integrated BottleJS (https://github.com/young-steveo/bottlejs) for dependency injection and service locator functions
276
- * Integrations to loosely couple add-ons
277
-
278
- ## 1.0.0 -
279
- * Much of the code reworked and refactored
280
- * Added Bootstrap UI by @arrmo
281
- * Better standalone pump control (@bluemantwo was super-helpful here, too!)
282
- * More accurate recognition of packets
283
- * Super fast speed improvements
284
- * Outgoing packets are now sent based on a timer (previously number of incoming packets)
1
+ # Changelog
2
+
3
+ ## 8.4.0
4
+ 1. IntelliCenter v3.004+ support (still being refined): registration handling, config refresh/ACK handling, and improved source-of-truth processing to keep state accurate.
5
+ 2. IntelliCenter v3.004+ circuit control updates: Action 184 support with learned Target IDs for more reliable circuit on/off behavior.
6
+ 3. IntelliCenter v3.004+ protocol parsing fixes: byte shift handling for Wireless messages, big-endian schedule times, and options/setpoint processing improvements.
7
+ 4. More resilience and reduced noise: improved initialization/race handling, better scoped logging, and longer device announce intervals.
8
+ 5. Misc fixes: default chlorinator naming and other small stability improvements.
9
+ 6. Huge thanks to @jwtaylor310 for providing a ton of replay captures that helped track down and fix bugs.
10
+
11
+ ## 8.3.0
12
+ 1. Configurable RS‑485 transmit pacing via new `controller.txDelays` for finer collision avoidance and throughput tuning.
13
+ 2. Startup & config resilience: empty or invalid `config.json` now auto‑recreated from defaults, corrupt originals backed up.
14
+ 3. Latitude / longitude environment overrides to eliminate early heliotrope warnings prior to UI configuration.
15
+ 4. Version check enhancements: git detection, safer redirects, throttled polling, warning suppression.
16
+ 5. Docker improvements: fixed Dockerfile and added docker‑compose example with named volumes & environment variable guidance.
17
+ 6. Add workflow to build and publish docker images to GitHub Container registry.
18
+ 7. Runtime requirements: elevated minimum Node.js version to 20+, safe dependency and security/patch updates.
19
+ 8. Documentation updates.
20
+
21
+ ## 8.1.2
22
+ 1. Regal Century pump support added.
23
+ 2. Enhanced error handling: replaced EquipmentNotFoundError with InvalidEquipmentIdError for improved clarity.
24
+ 3. Improved error handling in NixieBoard, NixieCircuitCommands, and NixieValveCommands.
25
+ 4. Refactored tolerance handling in TouchChemControllerCommands to ensure data integrity.
26
+ 5. Added new expansion board configuration for SunTouchBoard.
27
+
28
+ ## 8.1.1
29
+ 1. Enhanced REM server integration with packet capture functionality.
30
+ 2. Improved error handling in REMInterfaceServer methods.
31
+ 3. Refined chlorinator message processing logic in MessagesMock.
32
+ 4. Adjusted mock port checks across various components for consistency.
33
+ 5. Refined logic for Nixie schedules.
34
+ 6. Fixed documentation links for bindings integrations.
35
+ 7. Enhanced queueBodyHeatSettings to handle processing timeouts and improve error logging.
36
+ 8. Fixed typo in valveModes.
37
+
38
+ ## 8.1.0
39
+ 1. Support for dual chlorinators with REM chem controllers. It is now possible to have two separate chlorinators controlled in 'dynamic' mode by two separate REM chems. Note: In order for REM chem to control each chlorinator, each needs to be on a dedicated RS-485 port (not shared with an OCP or any other chlorinator).
40
+
41
+ ## 8.0.1-8.0.5
42
+ 1. Bug fixes including:
43
+ a. schedule end time errors
44
+ b. manual priority
45
+ c. screenlogic recurring schedules
46
+ d. VF pump message sequences
47
+ e. intellibrite themes
48
+ f. schedules are evaluated by bodies first and then everything else
49
+ g. solar stop/start delta logic
50
+ 2. Jandy WaterColors support
51
+ 3. Initial docker support (github docker actions)
52
+
53
+ ## 8.0.0
54
+ 1. Refactor comms code to Async
55
+ 2. Update dependencies and Node >16
56
+ 3. EasyTouch v1 support
57
+ 4. Screenlogic support
58
+ 5. Anslq25 (Mock controller)
59
+
60
+ ## 7.7.0
61
+ 1. Aqualink-D MQTT Interface
62
+ 2. Manual Priority for Schedules
63
+ 3. Add multiple RS-485 ports
64
+ 4. Support for Hayward Pumps
65
+ 5. Display remote chlorinators
66
+ 6. Updates for ETi hybrid
67
+ 7. Stop temp deltas for Nixie
68
+ 8. Batch write influx points
69
+ 9. MQTT & Influx updates
70
+ 10. Ability to hide bodies in dashPanel
71
+ 11. Florida Sunseeker Pooltone lighting
72
+ 12. Proper uPNP formatting
73
+
74
+
75
+ ## 7.6.1
76
+ 1. Many bugfixes: Intellichem, Touch body capacities, Ultratemp heaters, Nixie, more...
77
+ 2. Add env variables for Docker setup: POOL_RS485_PORT, POOL_NET_CONNECT, POOL_NET_HOST, POOL_NET_PORT, SOURCE_COMMIT, SOURCE_BRANCH
78
+ 3. Update dependencies
79
+ ## 7.6
80
+ 1. MasterTemp RS485 support for Nixie and IntelliCenter
81
+ 2. Nixie Valve Rotation delay
82
+ 3. Nixie Heater Cooldown delay
83
+ 4. Nixie Cleaner Start delay
84
+ 5. Nixie Cleaner Shutdown on Solar
85
+ 6. Nixie Delay Cancel
86
+
87
+ ## 7.5.1
88
+ 1. Backup/restore fixes
89
+ 2. Egg timer expiration
90
+ 3. Bug Fixes
91
+ 4. dashPanel/messageManager Filter
92
+ 5. RS485 refactor
93
+
94
+ ## 7.5
95
+ 1. Backup/restore
96
+ 2. Intellitouch add expansion modules
97
+ ## 7.4
98
+ 1. Filter object, emit, monitoring
99
+
100
+ ## 7.3.1
101
+ 1. Influx 2.0 support
102
+
103
+ ## 7.3
104
+ 1. Dynamic chlorinating % based on ORP demand for Nixie
105
+ 2. Docker creation updates
106
+
107
+ ## 7.2
108
+ 1. Refactor Intellichem and Chem Controllers
109
+
110
+ ## 7.1.1
111
+ 1. Added end time for circuits to show eggtimer/schedule off times
112
+ 2. Ultratemp updates
113
+ 3. Heater logic refactored
114
+ 4. Message response logic refactored
115
+ 5. Intellichem updates
116
+
117
+
118
+ ## 7.1.0
119
+ 1. Moved virtual chlorinator code and control to Nixie
120
+ 2. Moved virtual pump code and control to Nixie; Nixie supports SS, DS, SuperFlo, VS, VF, VSF
121
+ 3. MQTT changes
122
+ 4. Outbound processing for packets now has a scope. Previously if an outbound packet would receive a response we would clear all of the similar packets off the queue. EG if a user requests circuit 2 and 3 to be turned on, we would clear out the outbound message for 3. Now the code is more selective about what "scope" is considered for a successful response.
123
+
124
+ ## 7.0.0
125
+ 1. Upgrades to setup/sync between njsPC and REM
126
+ 2. Significant steps to njsPC (Nixie) acting as a standalone pool controller (virtual controller heaters, move virtual controller code, etc.)
127
+ 3. Dependency updates (Typescript 4, Socket.io 4, etc)
128
+
129
+ ## 6.5.2
130
+ 1. Bug Fixes
131
+ 2. Schedule updates
132
+ 3. MQTT Binding updates
133
+ 4. LSI calcs for REM (in addition to CSI)
134
+
135
+ ## 6.5.1
136
+ 1. Init Touch bodies upon startup
137
+ 2. *Touch chlorinator fixes
138
+ 3. MQTT updates
139
+
140
+ ## 6.5.0
141
+ 1. Full compatibility with REM (Relay Equipment Manager) for hardware control (ph sensors, orp sensors, pumps, relays, flow sensors)
142
+ 1. Upgrades to Influx binding
143
+ 1. MQTT alternate bindings
144
+ 1. Many, many bug fixes
145
+
146
+ ## 6.1.0
147
+ 1. Chem controller
148
+ 1. MQTT native support
149
+ 1. Server based time for *Touch and other non-internet based OCP
150
+ 1. Version notifications
151
+ 1. IntelliCenter updates for dual bodies, 1.045/1.047 (partial) support
152
+ 1. Many bug fixes
153
+
154
+ ## 6.0.1
155
+ 1. Implement https (no basic auth yet)
156
+ 1. API documentation @ https://tagyoureit.github.io/nodejs-poolcontroller-api/
157
+ 1. Add timestamp to logs for API calls
158
+ 1. #200, #202
159
+
160
+ ## 6.0
161
+ What's new in 6.0?s
162
+
163
+ In short, everything! 6.0 is a complete re-write of the application. Huge props to @rstrouse for his wisdom and guidance in refactoring the code.
164
+
165
+ 1. IntelliCenter - now supported
166
+ 1. Configuring and running the app - all new. Start over with the Installation instructions.
167
+ 1. Automatic detection of your pool equipment. Previous versions of the app would detect the configuration of your pool but you still had to tell the app if you had IntelliTouch/EasyTouch/IntelliCom. This is now done automatically.
168
+ 1. Configuration and state information. Config.json now only stores information related to the configuration of the app. There are separate files in the /data directory that store (and persist) pool configuration and state information.
169
+ 1. API's - completely changed. See separate API documentation (*link here)
170
+ 1. Outbound Sockets - Now more granular to make the web app more responsive
171
+ 1. Web app - Now a separate installion for a true client/server metaphore.
172
+ 1. Node v12+
173
+ 1. `Integrations` are now called `Bindings`. Any integration built on 5.3 need to be upgraded to the binding format. See Readme for a list of currently upgraded bindings.
174
+
175
+ ## 5.3.3
176
+ #134
177
+
178
+ ## 5.3.1
179
+ #132
180
+
181
+ ## 5.3.0
182
+ Fix for #106
183
+ Fix for "Error 60" messages
184
+ Improved caching of files on browsers. Thanks @arrmo! Now files will be loaded once in the browser and kept in cache instead of reloaded each time.
185
+ Improved handling of sessions and graceful closing of the HTTP(s) servers.
186
+
187
+ ## 5.2.0
188
+ 1. Node 6+ is supported. This app no longer supports Node 4.
189
+ 1. Update of modules. Make sure to run `npm i` or `npm upgrade` to get the latest.
190
+ 1. Much better support of multiple Intellibrite controllers. We can read both controllers now. There are still some issues with sending changes and help is needed to debug these.
191
+ 1. Chlorinator API calls (and UI) will now make changes through Intellitouch when available, or directly to the Intellichlor if it is standalone (aka using the virtual controller)
192
+ 1. Decoupled serial port and processing of packets. Should help recovery upon packet errors.
193
+ 1. Implementation of #89. Expansion boards are now (better) supported by setting variables in your config.json. See the [config.json](#module_nodejs-poolController--config) section below.
194
+ 1. Fix for #95
195
+ 1. Fix for #99
196
+ 1. Fix for #100
197
+
198
+ ## 5.1.1 -
199
+ 1. Renamed all 'valves' items to valve to be in line with singular renaming of items
200
+ 1. InfluxDB - moved some items that were in tag fields to field keys; added valves
201
+ 1. Added days of week (with editing) back to the schedules. Not sure when they disappeared, but they are back now. #92
202
+ 1. Added MySQL integration to log all packets to a DB
203
+ 1. Fixed PR #95 to allow sub-hour egg timers
204
+ 1. Fixed Intellibrite bugs
205
+ 1. Started to move some of the inter-communications to emitter events for better micro-services and shorter call stacks (easier debugging; loosely coupled code).
206
+ 1. Changed some Influx tags/queries.
207
+
208
+ ## 5.1.0 -
209
+ 1. Intellibrite support - API's, Sockets and a WebUI. Lights should have the 'Intellbrite' an their circuit function (set this up at the controller) to show up in this section.
210
+ Will document more later, but...
211
+ /light/mode/:mode
212
+ /light/circuit/:circuit/setColor/:color
213
+ /light/circuit/:circuit/setSwimDelay/:delay
214
+ /light/circuit/:circuit/setPosition/:position
215
+
216
+ See the constants.js file and the sections:
217
+ strIntellibriteModes (for modes)
218
+ lightColors (for setColor)
219
+
220
+ ## 5.0.1 -
221
+ 1. Fixed Influx error on startup #90
222
+ 1. Fixed bad characters in custom names
223
+
224
+ ## 5.0.0 -
225
+ Make sure to run `npm upgrade`. There are many package updates and changes.
226
+
227
+ * Added add/delete/edit schedule
228
+ * All sockets/API now singular (`circuits`->`circuit`)
229
+ * All sockets/API data now returned with a JSON qualifier. EG `{pump:...}`, `{circuit:...}`
230
+ * Intellichem decoding and display
231
+ * Changes to `/config` endpoint. It's now included with the `/all` end point since there would be quite a bit of duplication. It still exists standalone (for now) but has much less information in it.
232
+ * Moved `hideAux` setting from `configClient.json` (web UI settings) to `config.json` template. In `config.json` template, moved
233
+ ```
234
+ {equipment: {controller: {circuitFriendlyNames:{1..20}}}}
235
+
236
+ // to
237
+
238
+ {equipment: {circuit: friendlyName:{1..20},
239
+ hideAux: boolean
240
+ },
241
+ }
242
+ ```
243
+ to be in line with the other equipment in the pool setup and accomodate the `hideAux` setting.
244
+
245
+ * Fixed issue #82
246
+ * Extra info from `/config` was being added to the circuit section in `config.json`
247
+ * This release includes a new mechanism for updating config.json files. See notes in [config.json](#module_nodejs-poolController--config) section.
248
+ * mDNS server. Currently included for SmartThings integration, but in the future can be used for autodiscovery by other applications/devices.
249
+ * New `/config` endpoint (beta) to allow applications to get a high level summary of the system.
250
+ * Support for two separate (http/https) web servers, each/both with Auth, and also the option to redirect all http to https traffic. Thanks to @arrmo for driving this with #65 and #68.
251
+ * A UI for standalone pumps
252
+ * All sockets and API's renamed to be SINGULAR. Circuits -> circuit, Schedules->schedule, etc.
253
+ * All returned JSON data (API/socket) now has the type qualifier per [#57](https://github.com/tagyoureit/nodejs-poolController/issues/57)
254
+ * Make sure to run `npm upgrade`. There are many package updates and changes.
255
+ * Intellichem initial support.
256
+ * Inactivity timer for both internal connections and web page connections. If a connection is broken, it should re-establish itself automatically now.
257
+ * SSDP for auto-discovery by SmartThings or other services
258
+
259
+ ## 4.0.0 -
260
+ * Changed much in the config.json file
261
+ * Save pump programs and chlorinator level to config.json
262
+ * Added support for GPM with pumps
263
+ * Check for newer versions of the app on github, and dismiss notifications until next release
264
+ * Bootstrap configuration is automatically saved in clientConfig.json via UI actions
265
+ * Started to introduce some promises into the workflow (mostly with read/write operations)
266
+ * Added log-to-file option
267
+ * Added capture for Ctrl-C/SIGINT to have a clean exit
268
+ * Added InfluxDB database capabilities
269
+ * Added support for reading the data from up to 16 pumps. (You can still only control two.)
270
+ * Support for up to 50 circuits, 8 pumps
271
+ * Delay and Cancel Delay for circuits
272
+
273
+ ## 3.1.x -
274
+ * Added unit testing for certain areas
275
+ * Added setDateTime API/Socket
276
+ * Bootstrap panel states are now persistent
277
+
278
+ ## 3.0.0 -
279
+ * Upgraded pump logic
280
+
281
+ ## 2.0.0 -
282
+ * https, Authentication
283
+ * Completely refactored code. Integrated BottleJS (https://github.com/young-steveo/bottlejs) for dependency injection and service locator functions
284
+ * Integrations to loosely couple add-ons
285
+
286
+ ## 1.0.0 -
287
+ * Much of the code reworked and refactored
288
+ * Added Bootstrap UI by @arrmo
289
+ * Better standalone pump control (@bluemantwo was super-helpful here, too!)
290
+ * More accurate recognition of packets
291
+ * Super fast speed improvements
292
+ * Outgoing packets are now sent based on a timer (previously number of incoming packets)
285
293
  * Added ISY support (@bluemantwo was super-helpful here, too!)