nodejs-poolcontroller 8.4.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 (35) hide show
  1. package/.github/workflows/ghcr-publish.yml +1 -1
  2. package/157_issues.md +101 -0
  3. package/AGENTS.md +17 -1
  4. package/README.md +13 -2
  5. package/controller/Equipment.ts +49 -0
  6. package/controller/State.ts +8 -0
  7. package/controller/boards/AquaLinkBoard.ts +174 -2
  8. package/controller/boards/EasyTouchBoard.ts +44 -0
  9. package/controller/boards/IntelliCenterBoard.ts +360 -172
  10. package/controller/boards/NixieBoard.ts +7 -4
  11. package/controller/boards/SunTouchBoard.ts +1 -0
  12. package/controller/boards/SystemBoard.ts +39 -4
  13. package/controller/comms/Comms.ts +9 -3
  14. package/controller/comms/messages/Messages.ts +218 -24
  15. package/controller/comms/messages/config/EquipmentMessage.ts +34 -0
  16. package/controller/comms/messages/config/ExternalMessage.ts +1051 -989
  17. package/controller/comms/messages/config/GeneralMessage.ts +65 -0
  18. package/controller/comms/messages/config/OptionsMessage.ts +15 -2
  19. package/controller/comms/messages/config/PumpMessage.ts +427 -421
  20. package/controller/comms/messages/config/SecurityMessage.ts +37 -13
  21. package/controller/comms/messages/status/EquipmentStateMessage.ts +0 -218
  22. package/controller/comms/messages/status/HeaterStateMessage.ts +27 -15
  23. package/controller/comms/messages/status/NeptuneModbusStateMessage.ts +217 -0
  24. package/controller/comms/messages/status/VersionMessage.ts +67 -18
  25. package/controller/nixie/chemistry/ChemController.ts +65 -33
  26. package/controller/nixie/heaters/Heater.ts +10 -1
  27. package/controller/nixie/pumps/Pump.ts +145 -2
  28. package/docker-compose.yml +1 -0
  29. package/logger/Logger.ts +75 -64
  30. package/package.json +1 -1
  31. package/tsconfig.json +2 -1
  32. package/web/Server.ts +3 -1
  33. package/web/services/config/Config.ts +150 -1
  34. package/web/services/state/State.ts +21 -0
  35. package/web/services/state/StateSocket.ts +28 -0
@@ -150,6 +150,30 @@ export class EquipmentMessage {
150
150
  state.equipment.maxPumps = sys.equipment.maxPumps;
151
151
  msg.isProcessed = true;
152
152
  break;
153
+ case 12:
154
+ case 13:
155
+ case 14:
156
+ case 15: {
157
+ const selector = msg.extractPayloadByte(1);
158
+ const raw = EquipmentMessage.extractAlertRaw(msg);
159
+ sys.alerts.setRaw(selector, raw);
160
+ switch (selector) {
161
+ case 12:
162
+ sys.alerts.circuitNotifications = raw.length > 0 ? raw[0] : 0;
163
+ break;
164
+ case 13:
165
+ sys.alerts.pumpNotifications = EquipmentMessage.extractAlertMask(raw);
166
+ break;
167
+ case 14:
168
+ sys.alerts.heaterNotifications = EquipmentMessage.extractAlertMask(raw);
169
+ break;
170
+ case 15:
171
+ sys.alerts.chlorinatorNotifications = EquipmentMessage.extractAlertMask(raw);
172
+ break;
173
+ }
174
+ msg.isProcessed = true;
175
+ break;
176
+ }
153
177
  default:
154
178
  logger.debug(`Unprocessed Config Message ${msg.toPacket()}`)
155
179
  break;
@@ -173,6 +197,16 @@ export class EquipmentMessage {
173
197
  sys.equipment.bootloaderVersion = `${msg.extractPayloadByte(5)}.${msg.extractPayloadByte(6) < 100 ? '0' + msg.extractPayloadByte(6) : msg.extractPayloadByte(6)}`;
174
198
  sys.equipment.controllerFirmware = `${msg.extractPayloadByte(1)}.${msg.extractPayloadByte(2) < 100 ? '0' + msg.extractPayloadByte(2) : msg.extractPayloadByte(2)}`;
175
199
  }
200
+ private static extractAlertRaw(msg: Inbound): number[] {
201
+ const raw: number[] = [];
202
+ for (let i = 2; i < msg.payload.length; i++) raw.push(msg.extractPayloadByte(i, 0));
203
+ return raw;
204
+ }
205
+ private static extractAlertMask(raw: number[]): number {
206
+ if (raw.length === 0) return 0;
207
+ if (raw.length === 1) return raw[0] & 0xFF;
208
+ return ((raw[raw.length - 2] & 0xFF) << 8) | (raw[raw.length - 1] & 0xFF);
209
+ }
176
210
  //private static calcModel(eq: Equipment) {
177
211
  // eq.shared = (eq.type & 8) === 8;
178
212
  // eq.maxPumps = 16;