nodejs-poolcontroller 8.3.0 → 8.4.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 (107) 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/157_issues.md +101 -0
  9. package/AGENTS.md +613 -0
  10. package/CONTRIBUTING.md +74 -74
  11. package/Changelog +292 -284
  12. package/Dockerfile +62 -62
  13. package/Gruntfile.js +40 -40
  14. package/LICENSE +661 -661
  15. package/README.md +329 -309
  16. package/anslq25/MessagesMock.ts +221 -221
  17. package/anslq25/boards/MockBoardFactory.ts +49 -49
  18. package/anslq25/boards/MockEasyTouchBoard.ts +696 -696
  19. package/anslq25/boards/MockSystemBoard.ts +216 -216
  20. package/anslq25/chemistry/MockChlorinator.ts +98 -98
  21. package/anslq25/pumps/MockPump.ts +83 -83
  22. package/app.ts +115 -115
  23. package/config/Config.ts +0 -0
  24. package/config/VersionCheck.ts +0 -0
  25. package/controller/Constants.ts +809 -805
  26. package/controller/Equipment.ts +2737 -2664
  27. package/controller/Errors.ts +181 -181
  28. package/controller/Lockouts.ts +549 -549
  29. package/controller/State.ts +3746 -3701
  30. package/controller/boards/AquaLinkBoard.ts +1175 -1003
  31. package/controller/boards/BoardFactory.ts +53 -53
  32. package/controller/boards/EasyTouchBoard.ts +3246 -3202
  33. package/controller/boards/IntelliCenterBoard.ts +4581 -3899
  34. package/controller/boards/IntelliComBoard.ts +69 -69
  35. package/controller/boards/IntelliTouchBoard.ts +382 -382
  36. package/controller/boards/NixieBoard.ts +1947 -1944
  37. package/controller/boards/SunTouchBoard.ts +401 -400
  38. package/controller/boards/SystemBoard.ts +5303 -5268
  39. package/controller/comms/Comms.ts +1278 -1255
  40. package/controller/comms/ScreenLogic.ts +1665 -1665
  41. package/controller/comms/messages/Messages.ts +1627 -1406
  42. package/controller/comms/messages/config/ChlorinatorMessage.ts +5 -0
  43. package/controller/comms/messages/config/CircuitGroupMessage.ts +0 -0
  44. package/controller/comms/messages/config/CircuitMessage.ts +0 -0
  45. package/controller/comms/messages/config/ConfigMessage.ts +6 -0
  46. package/controller/comms/messages/config/CoverMessage.ts +0 -0
  47. package/controller/comms/messages/config/CustomNameMessage.ts +31 -31
  48. package/controller/comms/messages/config/EquipmentMessage.ts +250 -210
  49. package/controller/comms/messages/config/ExternalMessage.ts +1051 -903
  50. package/controller/comms/messages/config/FeatureMessage.ts +0 -0
  51. package/controller/comms/messages/config/GeneralMessage.ts +65 -0
  52. package/controller/comms/messages/config/HeaterMessage.ts +0 -0
  53. package/controller/comms/messages/config/IntellichemMessage.ts +0 -0
  54. package/controller/comms/messages/config/OptionsMessage.ts +207 -174
  55. package/controller/comms/messages/config/PumpMessage.ts +427 -421
  56. package/controller/comms/messages/config/RemoteMessage.ts +0 -0
  57. package/controller/comms/messages/config/ScheduleMessage.ts +401 -390
  58. package/controller/comms/messages/config/SecurityMessage.ts +37 -13
  59. package/controller/comms/messages/config/ValveMessage.ts +0 -0
  60. package/controller/comms/messages/status/ChlorinatorStateMessage.ts +0 -0
  61. package/controller/comms/messages/status/EquipmentStateMessage.ts +940 -822
  62. package/controller/comms/messages/status/HeaterStateMessage.ts +147 -135
  63. package/controller/comms/messages/status/IntelliChemStateMessage.ts +448 -448
  64. package/controller/comms/messages/status/IntelliValveStateMessage.ts +36 -36
  65. package/controller/comms/messages/status/NeptuneModbusStateMessage.ts +217 -0
  66. package/controller/comms/messages/status/PumpStateMessage.ts +0 -0
  67. package/controller/comms/messages/status/RegalModbusStateMessage.ts +410 -410
  68. package/controller/comms/messages/status/VersionMessage.ts +152 -41
  69. package/controller/nixie/Nixie.ts +173 -173
  70. package/controller/nixie/NixieEquipment.ts +104 -104
  71. package/controller/nixie/bodies/Body.ts +120 -120
  72. package/controller/nixie/bodies/Filter.ts +135 -135
  73. package/controller/nixie/chemistry/ChemController.ts +2756 -2724
  74. package/controller/nixie/chemistry/ChemDoser.ts +806 -806
  75. package/controller/nixie/chemistry/Chlorinator.ts +367 -367
  76. package/controller/nixie/circuits/Circuit.ts +478 -478
  77. package/controller/nixie/heaters/Heater.ts +843 -834
  78. package/controller/nixie/pumps/Pump.ts +1336 -1193
  79. package/controller/nixie/schedules/Schedule.ts +401 -401
  80. package/controller/nixie/valves/Valve.ts +170 -170
  81. package/defaultConfig.json +352 -352
  82. package/docker-compose.yml +32 -31
  83. package/logger/DataLogger.ts +448 -448
  84. package/logger/Logger.ts +459 -436
  85. package/package.json +58 -58
  86. package/sendSocket.js +32 -32
  87. package/tsconfig.json +26 -25
  88. package/types/express-multer.d.ts +32 -32
  89. package/web/Server.ts +1939 -1927
  90. package/web/bindings/aqualinkD.json +559 -559
  91. package/web/bindings/influxDB.json +1066 -1066
  92. package/web/bindings/mqtt.json +721 -721
  93. package/web/bindings/mqttAlt.json +746 -746
  94. package/web/bindings/rulesManager.json +54 -54
  95. package/web/bindings/smartThings-Hubitat.json +31 -31
  96. package/web/bindings/valveRelays.json +20 -20
  97. package/web/bindings/vera.json +25 -25
  98. package/web/interfaces/baseInterface.ts +188 -188
  99. package/web/interfaces/httpInterface.ts +148 -148
  100. package/web/interfaces/influxInterface.ts +283 -283
  101. package/web/interfaces/mqttInterface.ts +695 -695
  102. package/web/interfaces/ruleInterface.ts +101 -87
  103. package/web/services/config/Config.ts +1212 -1053
  104. package/web/services/config/ConfigSocket.ts +0 -0
  105. package/web/services/state/State.ts +21 -0
  106. package/web/services/state/StateSocket.ts +28 -0
  107. package/web/services/utilities/Utilities.ts +233 -233
package/157_issues.md ADDED
@@ -0,0 +1,101 @@
1
+ # IntelliCenter v3 Config Triage Summary
2
+
3
+ ## Initial issues reported
4
+
5
+ - General -> Personal Information:
6
+ - City/State/Zip not syncing between dashPanel and WCP/OCP.
7
+ - Pool Alias/Owner/Zip values overwriting each other.
8
+ - Latitude blank in dashPanel; longitude not editable/syncing.
9
+ - General -> Timezone & Locality:
10
+ - Switching Internet/12h <-> Manual/24h caused bogus Pool/Spa setpoints and heat mode in dashPanel.
11
+ - General -> Delays:
12
+ - Delays not linking correctly.
13
+ - Missing v3 fields: Frz Cycle Time (min) and Frz Override (min).
14
+ - Manual Operation Priority in dashPanel does not clearly map to WCP.
15
+ - Sensor Calibration:
16
+ - Generally working; occasional +/-1 variance (likely timing/read cadence).
17
+ - Alerts/Security:
18
+ - Tabs empty.
19
+ - Loading stuck at 0%:
20
+ - Intermittent post-change loading hang (notably replay 157).
21
+
22
+ ## What is fixed
23
+
24
+ - v3 Action 168 body temp/settings parsing hardened:
25
+ - Added handling for payload variants so Pool/Spa setpoint/heat-mode values are parsed correctly.
26
+ - Latitude/Longitude outbound mapping corrected:
27
+ - Fixed wrong latitude assignment target.
28
+ - Corrected byte math/order for lat/lon packet payload.
29
+ - Normalized coordinate assignment precision.
30
+ - General config refresh reliability improved:
31
+ - Forced v3 refresh path to include general category refresh to reduce stale General-tab data.
32
+ - Country field inbound parse width increased:
33
+ - Expanded from 16 to 32 bytes to avoid truncation/misalignment.
34
+
35
+ ## What is not fully fixed yet
36
+
37
+ - Personal Information end-to-end mapping:
38
+ - Alias/Owner/City/State/Zip still need definitive byte-level inbound/outbound confirmation.
39
+ - Delays v3 fields:
40
+ - Frz Cycle Time (min) and Frz Override (min) offsets not yet identified.
41
+ - Manual Operation Priority mapping still unconfirmed.
42
+ - Alerts/Security mapping:
43
+ - Need packet-level evidence to confirm source actions/offsets and parser wiring.
44
+ - Loading stuck:
45
+ - Root cause identified as RS-485 comm instability + frequent v3 refresh retriggers under noisy conditions; mitigation implementation still pending.
46
+
47
+ ## Root cause of loading stuck
48
+
49
+ - In replay 157, poolState ends with:
50
+ - status.name = "loading"
51
+ - percent = 0
52
+ - Same run shows elevated comm issues:
53
+ - unrecoverable collisions
54
+ - invalid packets
55
+ - outbound retries
56
+ - repeated config refresh triggers (ACK(168), ACK(184), piggyback)
57
+ - Net effect:
58
+ - refresh cycles are retriggered/churned during unstable traffic and can fail to settle cleanly.
59
+
60
+ ## Information needed to finish remaining work
61
+
62
+ - Capture one setting change at a time (with timestamp notes), then wait a few seconds before next change.
63
+
64
+ ### Personal Information
65
+
66
+ - Pool Alias
67
+ - Owner
68
+ - City
69
+ - State
70
+ - Zip
71
+ - Latitude
72
+ - Longitude
73
+
74
+ ### Time/Locality
75
+
76
+ - 12/24-hour switch
77
+ - Internet/manual clock source
78
+ - DST toggle
79
+ - Time zone change
80
+
81
+ ### Delays (especially v3-specific)
82
+
83
+ - Frz Cycle Time (min)
84
+ - Frz Override (min)
85
+ - Any setting suspected to map to Manual Operation Priority
86
+
87
+ ### Alerts/Security
88
+
89
+ - Toggle each available option individually (if present on WCP/OCP)
90
+
91
+ ### Packet evidence needed for each run
92
+
93
+ - Action 30 (config responses)
94
+ - Action 168 (external/config broadcasts)
95
+ - Related request/ack flow (Action 222, Action 1, piggyback trigger context)
96
+
97
+ ## Current status
98
+
99
+ - DONE: High-confidence parsing and lat/lon write-path fixes applied.
100
+ - PENDING: Remaining fields require targeted packet captures for accurate mapping.
101
+ - PENDING: Loading-hang mitigation implementation.