nodejs-poolcontroller 8.1.2 → 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 (106) 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 -0
  7. package/.github/workflows/ghcr-publish.yml +67 -0
  8. package/AGENTS.md +597 -0
  9. package/CONTRIBUTING.md +74 -74
  10. package/Changelog +292 -257
  11. package/Dockerfile +62 -19
  12. package/Gruntfile.js +40 -40
  13. package/LICENSE +661 -661
  14. package/README.md +318 -191
  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 +57 -7
  23. package/config/VersionCheck.ts +63 -35
  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 -3690
  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 -1929
  36. package/controller/boards/SunTouchBoard.ts +400 -400
  37. package/controller/boards/SystemBoard.ts +5268 -5268
  38. package/controller/comms/Comms.ts +1272 -1214
  39. package/controller/comms/ScreenLogic.ts +1665 -1665
  40. package/controller/comms/messages/Messages.ts +1433 -1243
  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 +411 -0
  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 +1194 -996
  77. package/controller/nixie/schedules/Schedule.ts +401 -401
  78. package/controller/nixie/valves/Valve.ts +170 -170
  79. package/defaultConfig.json +352 -347
  80. package/docker-compose.yml +32 -0
  81. package/logger/DataLogger.ts +448 -448
  82. package/logger/Logger.ts +448 -436
  83. package/package.json +58 -60
  84. package/sendSocket.js +32 -32
  85. package/tsconfig.json +25 -25
  86. package/types/express-multer.d.ts +32 -0
  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
  106. package/.github/workflows/docker-publish-njsPC-linux.yml +0 -50
@@ -1,222 +1,222 @@
1
- import { Inbound, Message, Outbound, Protocol } from "../controller/comms/messages/Messages";
2
- import { ControllerType } from "../controller/Constants";
3
- import { sys } from "../controller/Equipment";
4
- import { logger } from "../logger/Logger";
5
- import { MockSystemBoard } from "./boards/MockSystemBoard";
6
- import { mockChlor } from "./chemistry/MockChlorinator";
7
- import { mockPump, MockPump } from "./pumps/MockPump";
8
-
9
-
10
- export class MessagesMock {
11
- constructor() { }
12
-
13
- public static process(msg: Inbound) {
14
- switch (msg. protocol) {
15
- case Protocol.Broadcast: {
16
- switch (sys.controllerType) {
17
- case ControllerType.IntelliCenter:
18
- switch (msg.action) {
19
- /* case xyz:
20
- */
21
- default:
22
- logger.info(`An unprocessed message was received ${msg.toPacket()}`)
23
- break;
24
-
25
- }
26
- default:
27
- {
28
-
29
- switch (msg.action) {
30
- /* SET COMMANDS */
31
- case 133: // set date/time
32
- case 134: // set circuit
33
- case 136: // set heat/temperature
34
- case 138: // set custom names
35
- case 139: // set circuit names/functions
36
- case 144: // set heat pump status
37
- case 145: // set schedule
38
- case 146: // set intellichem
39
- case 147: // set intellichem
40
- case 150: // set intellflo spa side controllers
41
- case 152: // set pump config
42
- case 155: // set pump config extended
43
- case 153: // set intellichlor
44
- case 157: // set valve
45
- case 158: // set high speed circuits
46
- case 160: // set is4/is10 high speed circuits
47
- case 161: // set quicktouch remote
48
- case 162: // set solar/heat pump config
49
- case 131: // set delay
50
- case 163: // set delay
51
- case 167: // set light group
52
- case 168: // set settings
53
- sys.anslq25Board.system.sendAck(msg);
54
- break;
55
- /* GET COMMANDS */
56
- case 194: // get controller status
57
- break;
58
- case 197: // get date time
59
- sys.anslq25Board.system.processDateTimeAsync(msg);
60
- break;
61
- case 198: // get circuit state
62
- break;
63
- case 200: // get heat/status
64
- sys.anslq25Board.heaters.processHeatModesAsync(msg);
65
- break;
66
- case 202: // get custom names
67
- sys.anslq25Board.system.processCustomNameAsync(msg);
68
- break;
69
- case 203: //get circuit functions
70
- sys.anslq25Board.circuits.processCircuitAsync(msg);
71
- break;
72
- case 208: // get heat pump status
73
- break;
74
- case 209: // get schedule
75
- sys.anslq25Board.schedules.processScheduleAsync(msg);
76
- break;
77
-
78
- case 210: // get intellichem
79
- case 211: // get intellichem
80
- logger.error(`mock packet ${msg.action} not programmed yet.`)
81
- break;
82
- case 214: // get intelliflo spa side
83
- sys.anslq25Board.remotes.processSpaCommandRemoteAsync(msg);
84
- break;
85
- case 215: // get pump status
86
- break;
87
- case 216: // get pump config
88
- sys.anslq25Board.pumps.processPumpConfigAsync(msg);
89
- break
90
- case 217: // get intellichlor
91
- case 219: // get pump config
92
- logger.error(`mock packet ${msg.action} not programmed yet.`)
93
- break;
94
- case 221: // get valve
95
- sys.anslq25Board.valves.processValveAssignmentsAsync(msg);
96
- break;
97
- case 222: // get high speed circuits
98
- sys.anslq25Board.pumps.processHighSpeedCircuitsAsync(msg);
99
- break;
100
- case 224: // get is4/is10
101
- sys.anslq25Board.remotes.processIS4IS10RemoteAsync(msg);
102
- break;
103
- case 225: //get quicktouch
104
- sys.anslq25Board.remotes.processQuickTouchRemoteAsync(msg);
105
- break;
106
- case 226: // get solar/heat pump
107
- sys.anslq25Board.heaters.processHeaterConfigAsync(msg);
108
- break;
109
- case 227: // get delays
110
- sys.anslq25Board.valves.processValveOptionsAsync(msg);
111
- break;
112
- case 231: // get light groups
113
- sys.anslq25Board.circuits.processLightGroupAsync(msg);
114
- break;
115
- case 239: // get unknown
116
- break;
117
- case 232: // get settings
118
- sys.anslq25Board.system.processSettingsAsync(msg);
119
- break;
120
- case 253: // get sw version
121
- logger.info(`Mock EasyTouch OCP - Packet ${msg.toShortPacket()} request not programmed yet.`)
122
- break;
123
- case 1: // Ack
124
- case 2: // Shared IntelliCenter/IntelliTouch
125
- case 5:
126
- case 8:
127
- case 96: // EquipmentStateMessage.process(this);
128
- case 10: // CustomNameMessage.process(this);
129
- case 11: // CircuitMessage.processTouch(this);
130
- case 25: // ChlorinatorMessage.processTouch(this);
131
- case 153: // ExternalMessage.processTouchChlorinator(this);
132
- case 17:
133
- case 145: // ScheduleMessage.process(this);
134
- case 18: // IntellichemMessage.process(this);
135
- break;
136
- case 24:
137
- case 27:
138
-
139
- break;
140
- case 152:
141
- case 155: // PumpMessage.process(this);
142
- case 30:
143
- // switch (sys.controllerType) {
144
- // case ControllerType.Unknown:
145
- // break;
146
- // case ControllerType.SunTouch:
147
- // ScheduleMessage.processSunTouch(this);
148
- // break;
149
- // default:
150
- // OptionsMessage.process(this);
151
- // break;
152
- // }
153
- case 22:
154
- case 32:
155
- case 33: // RemoteMessage.process(this);
156
- case 29:
157
- case 35: // ValveMessage.process(this);
158
- case 39:
159
- case 167: // CircuitMessage.processTouch(this);
160
- case 40:
161
- case 168: // OptionsMessage.process(this);
162
- case 41: // CircuitGroupMessage.process(this);
163
- case 197: // EquipmentStateMessage.process(this); // Date/Time request
164
- case 252: // EquipmentMessage.process(this);
165
- case 9:
166
- case 16:
167
- case 34:
168
- case 137:
169
- case 144:
170
- case 162: // HeaterMessage.process(this);
171
- case 114:
172
- case 115: // HeaterStateMessage.process(this);
173
- case 147: // IntellichemMessage.process(this);
174
- logger.info(`Mock EasyTouch OCP - Packet ${msg.toShortPacket()} should be coming to the OCP, not from it.`);
175
- break;
176
- default:
177
- logger.info(`No mock EasyTouch response for ${msg.toShortPacket()} `);
178
- }
179
- }
180
- }
181
- break;
182
- }
183
- /*
184
- case Protocol.IntelliValve:
185
- IntelliValveStateMessage.process(outboundMsg);
186
- break;
187
- case Protocol.IntelliChem:
188
- IntelliChemStateMessage.process(outboundMsg);
189
- break; */
190
- // case Protocol.Pump:
191
- // if ((msg.source >= 96 && msg.source <= 111) || (msg.dest >= 96 && msg.dest <= 111))
192
- // mockPump.process(msg);
193
- // else
194
- // MockSystemBoard.convertOutbound(msg);
195
- /* case Protocol.Heater:
196
- HeaterStateMessage.process(outboundMsg);
197
- break;*/
198
- case Protocol.Chlorinator:
199
- // Only process outbound messages (commands from OCP to chlorinator)
200
- // Inbound messages (responses from chlorinator to OCP) should not be processed by mock
201
- if (msg.dest >= 80) {
202
- mockChlor.process(msg);
203
- }
204
- /*
205
- case Protocol.Hayward:
206
- PumpStateMessage.processHayward(msg);
207
- break; */
208
- default:
209
- logger.debug(`Unprocessed Message ${msg.toPacket()}`)
210
- // return new Outbound(Protocol.Broadcast, 0, 0, 0, []);
211
- }
212
- }
213
-
214
- // public static processOutbound(outboundMsg: Outbound) {
215
- // // outbound mock messages will be sent here instead of to the comms port
216
- // let inbound = Message.convertOutboundToInbound(outboundMsg);
217
- // let newOut = MessagesMock.processInbound(inbound);
218
- // return newOut;
219
-
220
- // }
221
- }
1
+ import { Inbound, Message, Outbound, Protocol } from "../controller/comms/messages/Messages";
2
+ import { ControllerType } from "../controller/Constants";
3
+ import { sys } from "../controller/Equipment";
4
+ import { logger } from "../logger/Logger";
5
+ import { MockSystemBoard } from "./boards/MockSystemBoard";
6
+ import { mockChlor } from "./chemistry/MockChlorinator";
7
+ import { mockPump, MockPump } from "./pumps/MockPump";
8
+
9
+
10
+ export class MessagesMock {
11
+ constructor() { }
12
+
13
+ public static process(msg: Inbound) {
14
+ switch (msg. protocol) {
15
+ case Protocol.Broadcast: {
16
+ switch (sys.controllerType) {
17
+ case ControllerType.IntelliCenter:
18
+ switch (msg.action) {
19
+ /* case xyz:
20
+ */
21
+ default:
22
+ logger.info(`An unprocessed message was received ${msg.toPacket()}`)
23
+ break;
24
+
25
+ }
26
+ default:
27
+ {
28
+
29
+ switch (msg.action) {
30
+ /* SET COMMANDS */
31
+ case 133: // set date/time
32
+ case 134: // set circuit
33
+ case 136: // set heat/temperature
34
+ case 138: // set custom names
35
+ case 139: // set circuit names/functions
36
+ case 144: // set heat pump status
37
+ case 145: // set schedule
38
+ case 146: // set intellichem
39
+ case 147: // set intellichem
40
+ case 150: // set intellflo spa side controllers
41
+ case 152: // set pump config
42
+ case 155: // set pump config extended
43
+ case 153: // set intellichlor
44
+ case 157: // set valve
45
+ case 158: // set high speed circuits
46
+ case 160: // set is4/is10 high speed circuits
47
+ case 161: // set quicktouch remote
48
+ case 162: // set solar/heat pump config
49
+ case 131: // set delay
50
+ case 163: // set delay
51
+ case 167: // set light group
52
+ case 168: // set settings
53
+ sys.anslq25Board.system.sendAck(msg);
54
+ break;
55
+ /* GET COMMANDS */
56
+ case 194: // get controller status
57
+ break;
58
+ case 197: // get date time
59
+ sys.anslq25Board.system.processDateTimeAsync(msg);
60
+ break;
61
+ case 198: // get circuit state
62
+ break;
63
+ case 200: // get heat/status
64
+ sys.anslq25Board.heaters.processHeatModesAsync(msg);
65
+ break;
66
+ case 202: // get custom names
67
+ sys.anslq25Board.system.processCustomNameAsync(msg);
68
+ break;
69
+ case 203: //get circuit functions
70
+ sys.anslq25Board.circuits.processCircuitAsync(msg);
71
+ break;
72
+ case 208: // get heat pump status
73
+ break;
74
+ case 209: // get schedule
75
+ sys.anslq25Board.schedules.processScheduleAsync(msg);
76
+ break;
77
+
78
+ case 210: // get intellichem
79
+ case 211: // get intellichem
80
+ logger.error(`mock packet ${msg.action} not programmed yet.`)
81
+ break;
82
+ case 214: // get intelliflo spa side
83
+ sys.anslq25Board.remotes.processSpaCommandRemoteAsync(msg);
84
+ break;
85
+ case 215: // get pump status
86
+ break;
87
+ case 216: // get pump config
88
+ sys.anslq25Board.pumps.processPumpConfigAsync(msg);
89
+ break
90
+ case 217: // get intellichlor
91
+ case 219: // get pump config
92
+ logger.error(`mock packet ${msg.action} not programmed yet.`)
93
+ break;
94
+ case 221: // get valve
95
+ sys.anslq25Board.valves.processValveAssignmentsAsync(msg);
96
+ break;
97
+ case 222: // get high speed circuits
98
+ sys.anslq25Board.pumps.processHighSpeedCircuitsAsync(msg);
99
+ break;
100
+ case 224: // get is4/is10
101
+ sys.anslq25Board.remotes.processIS4IS10RemoteAsync(msg);
102
+ break;
103
+ case 225: //get quicktouch
104
+ sys.anslq25Board.remotes.processQuickTouchRemoteAsync(msg);
105
+ break;
106
+ case 226: // get solar/heat pump
107
+ sys.anslq25Board.heaters.processHeaterConfigAsync(msg);
108
+ break;
109
+ case 227: // get delays
110
+ sys.anslq25Board.valves.processValveOptionsAsync(msg);
111
+ break;
112
+ case 231: // get light groups
113
+ sys.anslq25Board.circuits.processLightGroupAsync(msg);
114
+ break;
115
+ case 239: // get unknown
116
+ break;
117
+ case 232: // get settings
118
+ sys.anslq25Board.system.processSettingsAsync(msg);
119
+ break;
120
+ case 253: // get sw version
121
+ logger.info(`Mock EasyTouch OCP - Packet ${msg.toShortPacket()} request not programmed yet.`)
122
+ break;
123
+ case 1: // Ack
124
+ case 2: // Shared IntelliCenter/IntelliTouch
125
+ case 5:
126
+ case 8:
127
+ case 96: // EquipmentStateMessage.process(this);
128
+ case 10: // CustomNameMessage.process(this);
129
+ case 11: // CircuitMessage.processTouch(this);
130
+ case 25: // ChlorinatorMessage.processTouch(this);
131
+ case 153: // ExternalMessage.processTouchChlorinator(this);
132
+ case 17:
133
+ case 145: // ScheduleMessage.process(this);
134
+ case 18: // IntellichemMessage.process(this);
135
+ break;
136
+ case 24:
137
+ case 27:
138
+
139
+ break;
140
+ case 152:
141
+ case 155: // PumpMessage.process(this);
142
+ case 30:
143
+ // switch (sys.controllerType) {
144
+ // case ControllerType.Unknown:
145
+ // break;
146
+ // case ControllerType.SunTouch:
147
+ // ScheduleMessage.processSunTouch(this);
148
+ // break;
149
+ // default:
150
+ // OptionsMessage.process(this);
151
+ // break;
152
+ // }
153
+ case 22:
154
+ case 32:
155
+ case 33: // RemoteMessage.process(this);
156
+ case 29:
157
+ case 35: // ValveMessage.process(this);
158
+ case 39:
159
+ case 167: // CircuitMessage.processTouch(this);
160
+ case 40:
161
+ case 168: // OptionsMessage.process(this);
162
+ case 41: // CircuitGroupMessage.process(this);
163
+ case 197: // EquipmentStateMessage.process(this); // Date/Time request
164
+ case 252: // EquipmentMessage.process(this);
165
+ case 9:
166
+ case 16:
167
+ case 34:
168
+ case 137:
169
+ case 144:
170
+ case 162: // HeaterMessage.process(this);
171
+ case 114:
172
+ case 115: // HeaterStateMessage.process(this);
173
+ case 147: // IntellichemMessage.process(this);
174
+ logger.info(`Mock EasyTouch OCP - Packet ${msg.toShortPacket()} should be coming to the OCP, not from it.`);
175
+ break;
176
+ default:
177
+ logger.info(`No mock EasyTouch response for ${msg.toShortPacket()} `);
178
+ }
179
+ }
180
+ }
181
+ break;
182
+ }
183
+ /*
184
+ case Protocol.IntelliValve:
185
+ IntelliValveStateMessage.process(outboundMsg);
186
+ break;
187
+ case Protocol.IntelliChem:
188
+ IntelliChemStateMessage.process(outboundMsg);
189
+ break; */
190
+ // case Protocol.Pump:
191
+ // if ((msg.source >= 96 && msg.source <= 111) || (msg.dest >= 96 && msg.dest <= 111))
192
+ // mockPump.process(msg);
193
+ // else
194
+ // MockSystemBoard.convertOutbound(msg);
195
+ /* case Protocol.Heater:
196
+ HeaterStateMessage.process(outboundMsg);
197
+ break;*/
198
+ case Protocol.Chlorinator:
199
+ // Only process outbound messages (commands from OCP to chlorinator)
200
+ // Inbound messages (responses from chlorinator to OCP) should not be processed by mock
201
+ if (msg.dest >= 80) {
202
+ mockChlor.process(msg);
203
+ }
204
+ /*
205
+ case Protocol.Hayward:
206
+ PumpStateMessage.processHayward(msg);
207
+ break; */
208
+ default:
209
+ logger.debug(`Unprocessed Message ${msg.toPacket()}`)
210
+ // return new Outbound(Protocol.Broadcast, 0, 0, 0, []);
211
+ }
212
+ }
213
+
214
+ // public static processOutbound(outboundMsg: Outbound) {
215
+ // // outbound mock messages will be sent here instead of to the comms port
216
+ // let inbound = Message.convertOutboundToInbound(outboundMsg);
217
+ // let newOut = MessagesMock.processInbound(inbound);
218
+ // return newOut;
219
+
220
+ // }
221
+ }
222
222
  export var messagesMock = new MessagesMock();
@@ -1,50 +1,50 @@
1
- /* nodejs-poolController. An application to control pool equipment.
2
- Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022.
3
- Russell Goldin, tagyoureit. russ.goldin@gmail.com
4
-
5
- This program is free software: you can redistribute it and/or modify
6
- it under the terms of the GNU Affero General Public License as
7
- published by the Free Software Foundation, either version 3 of the
8
- License, or (at your option) any later version.
9
-
10
- This program is distributed in the hope that it will be useful,
11
- but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- GNU Affero General Public License for more details.
14
-
15
- You should have received a copy of the GNU Affero General Public License
16
- along with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
- // import { MockIntelliCenterBoard } from './MockIntelliCenterBoard';
19
- // import { MockIntelliTouchBoard } from './MockIntelliTouchBoard';
20
- // import { MockIntelliComBoard } from './MockIntelliComBoard';
21
- import { MockEasyTouch } from './MockEasyTouchBoard';
22
- import { MockSystemBoard } from './MockSystemBoard';
23
- import { ControllerType } from '../../controller/Constants';
24
- import { PoolSystem } from 'controller/Equipment';
25
- // import { MockAquaLinkBoard } from './MockAquaLinkBoard';
26
- // import { MockSunTouchBoard } from "./MockSunTouchBoard";
27
-
28
-
29
- export class MockBoardFactory {
30
- // Factory create the system board from the controller type. Resist storing
31
- // the pool system as this can cause a leak. The PoolSystem object already has a reference to this.
32
- public static fromControllerType(ct: ControllerType, system: PoolSystem) {
33
- switch (ct) {
34
- // case ControllerType.IntelliCenter:
35
- // return new MockIntelliCenterBoard(system);
36
- // case ControllerType.IntelliTouch:
37
- // return new MockIntelliTouchBoard(system);
38
- // case ControllerType.IntelliCom:
39
- // return new MockIntelliComBoard(system);
40
- case ControllerType.EasyTouch:
41
- return new MockEasyTouch(system);
42
- // case ControllerType.AquaLink:
43
- // return new MockAquaLinkBoard(system);
44
- // case ControllerType.SunTouch:
45
- // return new MockSunTouchBoard(system);
46
- }
47
- return new MockSystemBoard(system);
48
- }
49
-
1
+ /* nodejs-poolController. An application to control pool equipment.
2
+ Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022.
3
+ Russell Goldin, tagyoureit. russ.goldin@gmail.com
4
+
5
+ This program is free software: you can redistribute it and/or modify
6
+ it under the terms of the GNU Affero General Public License as
7
+ published by the Free Software Foundation, either version 3 of the
8
+ License, or (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU Affero General Public License for more details.
14
+
15
+ You should have received a copy of the GNU Affero General Public License
16
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ // import { MockIntelliCenterBoard } from './MockIntelliCenterBoard';
19
+ // import { MockIntelliTouchBoard } from './MockIntelliTouchBoard';
20
+ // import { MockIntelliComBoard } from './MockIntelliComBoard';
21
+ import { MockEasyTouch } from './MockEasyTouchBoard';
22
+ import { MockSystemBoard } from './MockSystemBoard';
23
+ import { ControllerType } from '../../controller/Constants';
24
+ import { PoolSystem } from 'controller/Equipment';
25
+ // import { MockAquaLinkBoard } from './MockAquaLinkBoard';
26
+ // import { MockSunTouchBoard } from "./MockSunTouchBoard";
27
+
28
+
29
+ export class MockBoardFactory {
30
+ // Factory create the system board from the controller type. Resist storing
31
+ // the pool system as this can cause a leak. The PoolSystem object already has a reference to this.
32
+ public static fromControllerType(ct: ControllerType, system: PoolSystem) {
33
+ switch (ct) {
34
+ // case ControllerType.IntelliCenter:
35
+ // return new MockIntelliCenterBoard(system);
36
+ // case ControllerType.IntelliTouch:
37
+ // return new MockIntelliTouchBoard(system);
38
+ // case ControllerType.IntelliCom:
39
+ // return new MockIntelliComBoard(system);
40
+ case ControllerType.EasyTouch:
41
+ return new MockEasyTouch(system);
42
+ // case ControllerType.AquaLink:
43
+ // return new MockAquaLinkBoard(system);
44
+ // case ControllerType.SunTouch:
45
+ // return new MockSunTouchBoard(system);
46
+ }
47
+ return new MockSystemBoard(system);
48
+ }
49
+
50
50
  }