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.
- package/.eslintrc.json +36 -36
- package/.github/ISSUE_TEMPLATE/1-bug-report.yml +84 -84
- package/.github/ISSUE_TEMPLATE/2-docs.md +12 -12
- package/.github/ISSUE_TEMPLATE/3-proposal.md +28 -28
- package/.github/ISSUE_TEMPLATE/config.yml +8 -8
- package/.github/copilot-instructions.md +63 -0
- package/.github/workflows/ghcr-publish.yml +67 -0
- package/AGENTS.md +597 -0
- package/CONTRIBUTING.md +74 -74
- package/Changelog +292 -257
- package/Dockerfile +62 -19
- package/Gruntfile.js +40 -40
- package/LICENSE +661 -661
- package/README.md +318 -191
- package/anslq25/MessagesMock.ts +221 -221
- package/anslq25/boards/MockBoardFactory.ts +49 -49
- package/anslq25/boards/MockEasyTouchBoard.ts +696 -696
- package/anslq25/boards/MockSystemBoard.ts +216 -216
- package/anslq25/chemistry/MockChlorinator.ts +98 -98
- package/anslq25/pumps/MockPump.ts +83 -83
- package/app.ts +115 -115
- package/config/Config.ts +57 -7
- package/config/VersionCheck.ts +63 -35
- package/controller/Constants.ts +809 -805
- package/controller/Equipment.ts +2688 -2664
- package/controller/Errors.ts +181 -181
- package/controller/Lockouts.ts +549 -549
- package/controller/State.ts +3738 -3690
- package/controller/boards/AquaLinkBoard.ts +1003 -1003
- package/controller/boards/BoardFactory.ts +53 -53
- package/controller/boards/EasyTouchBoard.ts +3202 -3202
- package/controller/boards/IntelliCenterBoard.ts +4393 -3899
- package/controller/boards/IntelliComBoard.ts +69 -69
- package/controller/boards/IntelliTouchBoard.ts +382 -382
- package/controller/boards/NixieBoard.ts +1944 -1929
- package/controller/boards/SunTouchBoard.ts +400 -400
- package/controller/boards/SystemBoard.ts +5268 -5268
- package/controller/comms/Comms.ts +1272 -1214
- package/controller/comms/ScreenLogic.ts +1665 -1665
- package/controller/comms/messages/Messages.ts +1433 -1243
- package/controller/comms/messages/config/ChlorinatorMessage.ts +5 -0
- package/controller/comms/messages/config/CircuitGroupMessage.ts +0 -0
- package/controller/comms/messages/config/CircuitMessage.ts +0 -0
- package/controller/comms/messages/config/ConfigMessage.ts +6 -0
- package/controller/comms/messages/config/CoverMessage.ts +0 -0
- package/controller/comms/messages/config/CustomNameMessage.ts +31 -31
- package/controller/comms/messages/config/EquipmentMessage.ts +216 -210
- package/controller/comms/messages/config/ExternalMessage.ts +96 -10
- package/controller/comms/messages/config/FeatureMessage.ts +0 -0
- package/controller/comms/messages/config/GeneralMessage.ts +0 -0
- package/controller/comms/messages/config/HeaterMessage.ts +0 -0
- package/controller/comms/messages/config/IntellichemMessage.ts +0 -0
- package/controller/comms/messages/config/OptionsMessage.ts +194 -174
- package/controller/comms/messages/config/PumpMessage.ts +0 -0
- package/controller/comms/messages/config/RemoteMessage.ts +0 -0
- package/controller/comms/messages/config/ScheduleMessage.ts +401 -390
- package/controller/comms/messages/config/SecurityMessage.ts +0 -0
- package/controller/comms/messages/config/ValveMessage.ts +0 -0
- package/controller/comms/messages/status/ChlorinatorStateMessage.ts +0 -0
- package/controller/comms/messages/status/EquipmentStateMessage.ts +1158 -822
- package/controller/comms/messages/status/HeaterStateMessage.ts +135 -135
- package/controller/comms/messages/status/IntelliChemStateMessage.ts +448 -448
- package/controller/comms/messages/status/IntelliValveStateMessage.ts +36 -36
- package/controller/comms/messages/status/PumpStateMessage.ts +0 -0
- package/controller/comms/messages/status/RegalModbusStateMessage.ts +411 -0
- package/controller/comms/messages/status/VersionMessage.ts +103 -41
- package/controller/nixie/Nixie.ts +173 -173
- package/controller/nixie/NixieEquipment.ts +104 -104
- package/controller/nixie/bodies/Body.ts +120 -120
- package/controller/nixie/bodies/Filter.ts +135 -135
- package/controller/nixie/chemistry/ChemController.ts +2724 -2724
- package/controller/nixie/chemistry/ChemDoser.ts +806 -806
- package/controller/nixie/chemistry/Chlorinator.ts +367 -367
- package/controller/nixie/circuits/Circuit.ts +478 -478
- package/controller/nixie/heaters/Heater.ts +834 -834
- package/controller/nixie/pumps/Pump.ts +1194 -996
- package/controller/nixie/schedules/Schedule.ts +401 -401
- package/controller/nixie/valves/Valve.ts +170 -170
- package/defaultConfig.json +352 -347
- package/docker-compose.yml +32 -0
- package/logger/DataLogger.ts +448 -448
- package/logger/Logger.ts +448 -436
- package/package.json +58 -60
- package/sendSocket.js +32 -32
- package/tsconfig.json +25 -25
- package/types/express-multer.d.ts +32 -0
- package/web/Server.ts +1937 -1927
- package/web/bindings/aqualinkD.json +559 -559
- package/web/bindings/influxDB.json +1066 -1066
- package/web/bindings/mqtt.json +721 -721
- package/web/bindings/mqttAlt.json +746 -746
- package/web/bindings/rulesManager.json +54 -54
- package/web/bindings/smartThings-Hubitat.json +31 -31
- package/web/bindings/valveRelays.json +20 -20
- package/web/bindings/vera.json +25 -25
- package/web/interfaces/baseInterface.ts +188 -188
- package/web/interfaces/httpInterface.ts +148 -148
- package/web/interfaces/influxInterface.ts +283 -283
- package/web/interfaces/mqttInterface.ts +695 -695
- package/web/interfaces/ruleInterface.ts +101 -87
- package/web/services/config/Config.ts +1063 -1053
- package/web/services/config/ConfigSocket.ts +0 -0
- package/web/services/state/State.ts +0 -0
- package/web/services/state/StateSocket.ts +0 -0
- package/web/services/utilities/Utilities.ts +233 -233
- package/.github/workflows/docker-publish-njsPC-linux.yml +0 -50
package/anslq25/MessagesMock.ts
CHANGED
|
@@ -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
|
}
|