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/package.json
CHANGED
|
@@ -1,60 +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": "
|
|
11
|
-
"repository": {
|
|
12
|
-
"type": "git",
|
|
13
|
-
"url": "https://github.com/tagyoureit/nodejs-poolController.git"
|
|
14
|
-
},
|
|
15
|
-
"engines": {
|
|
16
|
-
"npm": ">=
|
|
17
|
-
"node": ">=
|
|
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.
|
|
27
|
-
"eslint-config-promise": "^2.0.2",
|
|
28
|
-
"express": "^4.
|
|
29
|
-
"extend": "^3.0.2",
|
|
30
|
-
"jszip": "^3.9.1",
|
|
31
|
-
"mqtt": "^4.3.
|
|
32
|
-
"multer": "^
|
|
33
|
-
"multicast-dns": "^7.2.4",
|
|
34
|
-
"node-screenlogic": "^2.
|
|
35
|
-
"node-ssdp": "^4.0.1",
|
|
36
|
-
"serialport": "^11.0.
|
|
37
|
-
"socket.io": "^4.
|
|
38
|
-
"socket.io-client": "^4.
|
|
39
|
-
"source-map-support": "^0.5.21",
|
|
40
|
-
"winston": "^3.
|
|
41
|
-
},
|
|
42
|
-
"devDependencies": {
|
|
43
|
-
"@types/express": "^4.17.
|
|
44
|
-
"@types/extend": "^3.0.
|
|
45
|
-
"@types/
|
|
46
|
-
"@
|
|
47
|
-
"@typescript-eslint/
|
|
48
|
-
"
|
|
49
|
-
"eslint": "^
|
|
50
|
-
"eslint-
|
|
51
|
-
"eslint-plugin-
|
|
52
|
-
"eslint-plugin-
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
}
|
|
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
|
+
}
|
|
@@ -0,0 +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 {};
|