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.
- 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 -63
- package/.github/workflows/ghcr-publish.yml +67 -67
- package/AGENTS.md +597 -0
- package/CONTRIBUTING.md +74 -74
- package/Changelog +292 -284
- package/Dockerfile +62 -62
- package/Gruntfile.js +40 -40
- package/LICENSE +661 -661
- package/README.md +318 -309
- 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 +0 -0
- package/config/VersionCheck.ts +0 -0
- 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 -3701
- 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 -1944
- package/controller/boards/SunTouchBoard.ts +400 -400
- package/controller/boards/SystemBoard.ts +5268 -5268
- package/controller/comms/Comms.ts +1272 -1255
- package/controller/comms/ScreenLogic.ts +1665 -1665
- package/controller/comms/messages/Messages.ts +1433 -1406
- 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 +410 -410
- 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 +1193 -1193
- package/controller/nixie/schedules/Schedule.ts +401 -401
- package/controller/nixie/valves/Valve.ts +170 -170
- package/defaultConfig.json +352 -352
- package/docker-compose.yml +31 -31
- package/logger/DataLogger.ts +448 -448
- package/logger/Logger.ts +448 -436
- package/package.json +58 -58
- package/sendSocket.js +32 -32
- package/tsconfig.json +25 -25
- package/types/express-multer.d.ts +32 -32
- 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/package.json
CHANGED
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "nodejs-poolcontroller",
|
|
3
|
-
"version": "8.
|
|
4
|
-
"description": "nodejs-poolController",
|
|
5
|
-
"main": "app.js",
|
|
6
|
-
"author": {
|
|
7
|
-
"name": "Russell Goldin",
|
|
8
|
-
"name2": "Robert Strouse"
|
|
9
|
-
},
|
|
10
|
-
"license": "AGPL-3.0-only",
|
|
11
|
-
"repository": {
|
|
12
|
-
"type": "git",
|
|
13
|
-
"url": "https://github.com/tagyoureit/nodejs-poolController.git"
|
|
14
|
-
},
|
|
15
|
-
"engines": {
|
|
16
|
-
"npm": ">=8.0.0",
|
|
17
|
-
"node": ">=20.0.0"
|
|
18
|
-
},
|
|
19
|
-
"scripts": {
|
|
20
|
-
"start": "npm run build && node dist/app.js",
|
|
21
|
-
"start:cached": "node dist/app.js",
|
|
22
|
-
"build": "tsc",
|
|
23
|
-
"watch": "tsc -w"
|
|
24
|
-
},
|
|
25
|
-
"dependencies": {
|
|
26
|
-
"@influxdata/influxdb-client": "^1.35.0",
|
|
27
|
-
"eslint-config-promise": "^2.0.2",
|
|
28
|
-
"express": "^4.21.2",
|
|
29
|
-
"extend": "^3.0.2",
|
|
30
|
-
"jszip": "^3.9.1",
|
|
31
|
-
"mqtt": "^4.3.8",
|
|
32
|
-
"multer": "^2.0.2",
|
|
33
|
-
"multicast-dns": "^7.2.4",
|
|
34
|
-
"node-screenlogic": "^2.1.1",
|
|
35
|
-
"node-ssdp": "^4.0.1",
|
|
36
|
-
"serialport": "^11.0.1",
|
|
37
|
-
"socket.io": "^4.8.1",
|
|
38
|
-
"socket.io-client": "^4.8.1",
|
|
39
|
-
"source-map-support": "^0.5.21",
|
|
40
|
-
"winston": "^3.17.0"
|
|
41
|
-
},
|
|
42
|
-
"devDependencies": {
|
|
43
|
-
"@types/express": "^4.17.23",
|
|
44
|
-
"@types/extend": "^3.0.4",
|
|
45
|
-
"@types/node": "^20.19.17",
|
|
46
|
-
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
|
47
|
-
"@typescript-eslint/parser": "^5.62.0",
|
|
48
|
-
"eslint": "^8.57.1",
|
|
49
|
-
"eslint-config-defaults": "^9.0.0",
|
|
50
|
-
"eslint-plugin-import": "^2.32.0",
|
|
51
|
-
"eslint-plugin-node": "^11.1.0",
|
|
52
|
-
"eslint-plugin-promise": "^6.6.0",
|
|
53
|
-
"grunt": "^1.5.3",
|
|
54
|
-
"grunt-banner": "^0.6.0",
|
|
55
|
-
"ts-node": "^10.9.2",
|
|
56
|
-
"typescript": "^4.9.5"
|
|
57
|
-
}
|
|
58
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "nodejs-poolcontroller",
|
|
3
|
+
"version": "8.4.0",
|
|
4
|
+
"description": "nodejs-poolController",
|
|
5
|
+
"main": "app.js",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Russell Goldin",
|
|
8
|
+
"name2": "Robert Strouse"
|
|
9
|
+
},
|
|
10
|
+
"license": "AGPL-3.0-only",
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "https://github.com/tagyoureit/nodejs-poolController.git"
|
|
14
|
+
},
|
|
15
|
+
"engines": {
|
|
16
|
+
"npm": ">=8.0.0",
|
|
17
|
+
"node": ">=20.0.0"
|
|
18
|
+
},
|
|
19
|
+
"scripts": {
|
|
20
|
+
"start": "npm run build && node dist/app.js",
|
|
21
|
+
"start:cached": "node dist/app.js",
|
|
22
|
+
"build": "tsc",
|
|
23
|
+
"watch": "tsc -w"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@influxdata/influxdb-client": "^1.35.0",
|
|
27
|
+
"eslint-config-promise": "^2.0.2",
|
|
28
|
+
"express": "^4.21.2",
|
|
29
|
+
"extend": "^3.0.2",
|
|
30
|
+
"jszip": "^3.9.1",
|
|
31
|
+
"mqtt": "^4.3.8",
|
|
32
|
+
"multer": "^2.0.2",
|
|
33
|
+
"multicast-dns": "^7.2.4",
|
|
34
|
+
"node-screenlogic": "^2.1.1",
|
|
35
|
+
"node-ssdp": "^4.0.1",
|
|
36
|
+
"serialport": "^11.0.1",
|
|
37
|
+
"socket.io": "^4.8.1",
|
|
38
|
+
"socket.io-client": "^4.8.1",
|
|
39
|
+
"source-map-support": "^0.5.21",
|
|
40
|
+
"winston": "^3.17.0"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@types/express": "^4.17.23",
|
|
44
|
+
"@types/extend": "^3.0.4",
|
|
45
|
+
"@types/node": "^20.19.17",
|
|
46
|
+
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
|
47
|
+
"@typescript-eslint/parser": "^5.62.0",
|
|
48
|
+
"eslint": "^8.57.1",
|
|
49
|
+
"eslint-config-defaults": "^9.0.0",
|
|
50
|
+
"eslint-plugin-import": "^2.32.0",
|
|
51
|
+
"eslint-plugin-node": "^11.1.0",
|
|
52
|
+
"eslint-plugin-promise": "^6.6.0",
|
|
53
|
+
"grunt": "^1.5.3",
|
|
54
|
+
"grunt-banner": "^0.6.0",
|
|
55
|
+
"ts-node": "^10.9.2",
|
|
56
|
+
"typescript": "^4.9.5"
|
|
57
|
+
}
|
|
58
|
+
}
|
package/sendSocket.js
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
// Import Socket.IO client
|
|
2
|
-
const io = require('socket.io-client');
|
|
3
|
-
|
|
4
|
-
// Connect to the server
|
|
5
|
-
const socket = io('http://localhost:4200');
|
|
6
|
-
|
|
7
|
-
// Event handler for successful connection
|
|
8
|
-
socket.on('connect', () => {
|
|
9
|
-
console.log('Connected to server.');
|
|
10
|
-
|
|
11
|
-
// Emit data to the server
|
|
12
|
-
socket.emit('message', 'Hello, server!');
|
|
13
|
-
socket.emit('echo', `testing 123`);
|
|
14
|
-
socket.on('echo', (string)=>{
|
|
15
|
-
console.log(string);
|
|
16
|
-
})
|
|
17
|
-
//const hexData = "02 10 01 01 14 00 03 10 02 10 01 01 14 00 03 10 02 10 01 01 14 00 03 10 02 10 02 01 80 20 00 00 00 00 00 00 b5 00 03 10 02 10 03 01 20 20 6f 50 6c 6f 54 20 6d 65 20 70 37 20 5f 34 20 46 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 07 00 10 d6 10 03 01 02 00 01 10 14 10 03 01 02 00 01 10 14 10 03 01 02 00 01 10 14";
|
|
18
|
-
const hexData = "10 02 01 80 20 00 00 00 00 00 00 b5 00 03 10 02 10 03";
|
|
19
|
-
const formattedHexData = hexData.split(' ').map(hex => parseInt(hex, 16));
|
|
20
|
-
//socket.emit('rawbytes', Buffer.from([1, 2, 3]));
|
|
21
|
-
socket.emit('rawbytes', formattedHexData);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
// Event handler for receiving data from the server
|
|
25
|
-
socket.on('message', (data) => {
|
|
26
|
-
console.log('Received from server:', data);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
// Event handler for disconnection
|
|
30
|
-
socket.on('disconnect', () => {
|
|
31
|
-
console.log('Disconnected from server.');
|
|
32
|
-
});
|
|
1
|
+
// Import Socket.IO client
|
|
2
|
+
const io = require('socket.io-client');
|
|
3
|
+
|
|
4
|
+
// Connect to the server
|
|
5
|
+
const socket = io('http://localhost:4200');
|
|
6
|
+
|
|
7
|
+
// Event handler for successful connection
|
|
8
|
+
socket.on('connect', () => {
|
|
9
|
+
console.log('Connected to server.');
|
|
10
|
+
|
|
11
|
+
// Emit data to the server
|
|
12
|
+
socket.emit('message', 'Hello, server!');
|
|
13
|
+
socket.emit('echo', `testing 123`);
|
|
14
|
+
socket.on('echo', (string)=>{
|
|
15
|
+
console.log(string);
|
|
16
|
+
})
|
|
17
|
+
//const hexData = "02 10 01 01 14 00 03 10 02 10 01 01 14 00 03 10 02 10 01 01 14 00 03 10 02 10 02 01 80 20 00 00 00 00 00 00 b5 00 03 10 02 10 03 01 20 20 6f 50 6c 6f 54 20 6d 65 20 70 37 20 5f 34 20 46 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 07 00 10 d6 10 03 01 02 00 01 10 14 10 03 01 02 00 01 10 14 10 03 01 02 00 01 10 14";
|
|
18
|
+
const hexData = "10 02 01 80 20 00 00 00 00 00 00 b5 00 03 10 02 10 03";
|
|
19
|
+
const formattedHexData = hexData.split(' ').map(hex => parseInt(hex, 16));
|
|
20
|
+
//socket.emit('rawbytes', Buffer.from([1, 2, 3]));
|
|
21
|
+
socket.emit('rawbytes', formattedHexData);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// Event handler for receiving data from the server
|
|
25
|
+
socket.on('message', (data) => {
|
|
26
|
+
console.log('Received from server:', data);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
// Event handler for disconnection
|
|
30
|
+
socket.on('disconnect', () => {
|
|
31
|
+
console.log('Disconnected from server.');
|
|
32
|
+
});
|
package/tsconfig.json
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"baseUrl": ".",
|
|
4
|
-
// "paths": { "*": [ "@types/*" ] },
|
|
5
|
-
"target":"esnext",
|
|
6
|
-
"module":"commonjs",
|
|
7
|
-
"noImplicitAny": false,
|
|
8
|
-
"removeComments": true,
|
|
9
|
-
"preserveConstEnums": true,
|
|
10
|
-
"sourceMap": true,
|
|
11
|
-
"outDir": "dist",
|
|
12
|
-
"moduleResolution": "node",
|
|
13
|
-
"allowJs": false,
|
|
14
|
-
"allowSyntheticDefaultImports": false,
|
|
15
|
-
"esModuleInterop": false,
|
|
16
|
-
"jsx": "react"
|
|
17
|
-
},
|
|
18
|
-
"include": [
|
|
19
|
-
"web/**/*",
|
|
20
|
-
"logger/**/*",
|
|
21
|
-
"controller/**/*",
|
|
22
|
-
"config/**/*",
|
|
23
|
-
"**/*.ts"
|
|
24
|
-
]
|
|
25
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"baseUrl": ".",
|
|
4
|
+
// "paths": { "*": [ "@types/*" ] },
|
|
5
|
+
"target":"esnext",
|
|
6
|
+
"module":"commonjs",
|
|
7
|
+
"noImplicitAny": false,
|
|
8
|
+
"removeComments": true,
|
|
9
|
+
"preserveConstEnums": true,
|
|
10
|
+
"sourceMap": true,
|
|
11
|
+
"outDir": "dist",
|
|
12
|
+
"moduleResolution": "node",
|
|
13
|
+
"allowJs": false,
|
|
14
|
+
"allowSyntheticDefaultImports": false,
|
|
15
|
+
"esModuleInterop": false,
|
|
16
|
+
"jsx": "react"
|
|
17
|
+
},
|
|
18
|
+
"include": [
|
|
19
|
+
"web/**/*",
|
|
20
|
+
"logger/**/*",
|
|
21
|
+
"controller/**/*",
|
|
22
|
+
"config/**/*",
|
|
23
|
+
"**/*.ts"
|
|
24
|
+
]
|
|
25
|
+
}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Express Request augmentation for multer 2.x single/multiple file uploads.
|
|
3
|
-
* Added because our tsconfig include patterns did not pick up multer's
|
|
4
|
-
* automatic merging of Request.file / Request.files.
|
|
5
|
-
*/
|
|
6
|
-
import 'express';
|
|
7
|
-
// Minimal subset of Multer's File definition; adjust if needed.
|
|
8
|
-
interface MulterFile {
|
|
9
|
-
fieldname: string;
|
|
10
|
-
originalname: string;
|
|
11
|
-
encoding: string;
|
|
12
|
-
mimetype: string;
|
|
13
|
-
size: number;
|
|
14
|
-
buffer: Buffer;
|
|
15
|
-
destination?: string;
|
|
16
|
-
filename?: string;
|
|
17
|
-
path?: string;
|
|
18
|
-
stream?: NodeJS.ReadableStream;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
declare global {
|
|
22
|
-
namespace Express {
|
|
23
|
-
interface Request {
|
|
24
|
-
/** Populated by multer single(field) */
|
|
25
|
-
file?: MulterFile;
|
|
26
|
-
/** Populated by multer array(field)/fields()/any() */
|
|
27
|
-
files?: MulterFile[] | { [fieldname: string]: MulterFile[] };
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export {};
|
|
1
|
+
/**
|
|
2
|
+
* Express Request augmentation for multer 2.x single/multiple file uploads.
|
|
3
|
+
* Added because our tsconfig include patterns did not pick up multer's
|
|
4
|
+
* automatic merging of Request.file / Request.files.
|
|
5
|
+
*/
|
|
6
|
+
import 'express';
|
|
7
|
+
// Minimal subset of Multer's File definition; adjust if needed.
|
|
8
|
+
interface MulterFile {
|
|
9
|
+
fieldname: string;
|
|
10
|
+
originalname: string;
|
|
11
|
+
encoding: string;
|
|
12
|
+
mimetype: string;
|
|
13
|
+
size: number;
|
|
14
|
+
buffer: Buffer;
|
|
15
|
+
destination?: string;
|
|
16
|
+
filename?: string;
|
|
17
|
+
path?: string;
|
|
18
|
+
stream?: NodeJS.ReadableStream;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
declare global {
|
|
22
|
+
namespace Express {
|
|
23
|
+
interface Request {
|
|
24
|
+
/** Populated by multer single(field) */
|
|
25
|
+
file?: MulterFile;
|
|
26
|
+
/** Populated by multer array(field)/fields()/any() */
|
|
27
|
+
files?: MulterFile[] | { [fieldname: string]: MulterFile[] };
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export {};
|