node-red-contrib-s2 0.1.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 (40) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/LICENSE +21 -0
  3. package/README.md +119 -0
  4. package/dist/lib/index.d.ts +4 -0
  5. package/dist/lib/index.js +17 -0
  6. package/dist/lib/index.js.map +1 -0
  7. package/dist/lib/s2/messages.d.ts +342 -0
  8. package/dist/lib/s2/messages.js +330 -0
  9. package/dist/lib/s2/messages.js.map +1 -0
  10. package/dist/lib/s2/schedule.d.ts +35 -0
  11. package/dist/lib/s2/schedule.js +109 -0
  12. package/dist/lib/s2/schedule.js.map +1 -0
  13. package/dist/lib/s2/session.d.ts +138 -0
  14. package/dist/lib/s2/session.js +304 -0
  15. package/dist/lib/s2/session.js.map +1 -0
  16. package/dist/lib/transport/websocket.d.ts +58 -0
  17. package/dist/lib/transport/websocket.js +149 -0
  18. package/dist/lib/transport/websocket.js.map +1 -0
  19. package/dist/nodes/s2-cem-config/index.d.ts +3 -0
  20. package/dist/nodes/s2-cem-config/index.html +54 -0
  21. package/dist/nodes/s2-cem-config/index.js +16 -0
  22. package/dist/nodes/s2-cem-config/index.js.map +1 -0
  23. package/dist/nodes/s2-rm/icons/s2-logo.svg +14 -0
  24. package/dist/nodes/s2-rm/index.d.ts +34 -0
  25. package/dist/nodes/s2-rm/index.html +167 -0
  26. package/dist/nodes/s2-rm/index.js +655 -0
  27. package/dist/nodes/s2-rm/index.js.map +1 -0
  28. package/dist/nodes/s2-rm-config/index.d.ts +3 -0
  29. package/dist/nodes/s2-rm-config/index.html +254 -0
  30. package/dist/nodes/s2-rm-config/index.js +20 -0
  31. package/dist/nodes/s2-rm-config/index.js.map +1 -0
  32. package/dist/nodes/s2-websocket/icons/s2-logo.svg +14 -0
  33. package/dist/nodes/s2-websocket/index.d.ts +22 -0
  34. package/dist/nodes/s2-websocket/index.html +83 -0
  35. package/dist/nodes/s2-websocket/index.js +127 -0
  36. package/dist/nodes/s2-websocket/index.js.map +1 -0
  37. package/dist/types/config-nodes.d.ts +39 -0
  38. package/dist/types/config-nodes.js +3 -0
  39. package/dist/types/config-nodes.js.map +1 -0
  40. package/package.json +84 -0
@@ -0,0 +1,39 @@
1
+ import { NodeRedNode } from './node-red';
2
+ /**
3
+ * Server-side shape of the s2-rm-config config node.
4
+ * Use RED.nodes.getNode(id) and cast to this type.
5
+ */
6
+ export interface S2RmConfigNode extends NodeRedNode {
7
+ resourceId: string;
8
+ rmName: string;
9
+ roles: string;
10
+ serialNumber: string;
11
+ manufacturer: string;
12
+ model: string;
13
+ firmwareVersion: string;
14
+ controlTypes: string;
15
+ /** Hardware ceiling for battery charge power in Watts. 0 = no limit configured. */
16
+ maxBatteryChargePower: number;
17
+ /** Hardware ceiling for battery discharge power in Watts. 0 = no limit configured. */
18
+ maxBatteryDischargePower: number;
19
+ gridConnection: string;
20
+ customMaxPowerW: number | undefined;
21
+ /** How often (ms) to poll for due pending instructions. Defaults to 2000 if not set. */
22
+ instructionPollIntervalMs: number;
23
+ /** When true, skip sending InstructionStatusUpdate(ACCEPTED/STARTED) automatically.
24
+ * ReceptionStatus and OMBC.Status are still sent. Use when the CEM does not require
25
+ * acknowledgment messages and the extra D-Bus traffic causes CPU load. */
26
+ skipInstructionStatus: boolean;
27
+ }
28
+ /**
29
+ * Server-side shape of the s2-cem-config config node.
30
+ * Use RED.nodes.getNode(id) and cast to this type.
31
+ */
32
+ export interface S2CemConfigNode extends NodeRedNode {
33
+ url: string;
34
+ apiPrefix: string | undefined;
35
+ credentials: {
36
+ username: string;
37
+ password: string;
38
+ };
39
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=config-nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-nodes.js","sourceRoot":"","sources":["../../src/types/config-nodes.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,84 @@
1
+ {
2
+ "name": "node-red-contrib-s2",
3
+ "version": "0.1.1",
4
+ "description": "Node-RED nodes for S2 energy management protocol (EN 50491-12-2)",
5
+ "author": "Victron Energy BV",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/victronenergy/node-red-contrib-s2"
9
+ },
10
+ "main": "dist/lib/index.js",
11
+ "files": [
12
+ "dist/",
13
+ "README.md",
14
+ "LICENSE",
15
+ "CHANGELOG.md"
16
+ ],
17
+ "node-red": {
18
+ "version": ">=4.1.0",
19
+ "nodes": {
20
+ "s2-rm-config": "./dist/nodes/s2-rm-config/index.js",
21
+ "s2-cem-config": "./dist/nodes/s2-cem-config/index.js",
22
+ "s2-websocket": "./dist/nodes/s2-websocket/index.js",
23
+ "s2-rm": "./dist/nodes/s2-rm/index.js"
24
+ }
25
+ },
26
+ "scripts": {
27
+ "prepublishOnly": "npm run build",
28
+ "build": "tsc && npm run copy-html",
29
+ "clean": "rm -rf dist",
30
+ "copy-html": "mkdir -p dist/nodes/s2-rm dist/nodes/s2-websocket dist/nodes/s2-rm-config dist/nodes/s2-cem-config dist/nodes/s2-rm/icons dist/nodes/s2-websocket/icons && cp src/nodes/s2-rm/index.html dist/nodes/s2-rm/ && cp src/nodes/s2-websocket/index.html dist/nodes/s2-websocket/ && cp src/nodes/s2-rm-config/index.html dist/nodes/s2-rm-config/ && cp src/nodes/s2-cem-config/index.html dist/nodes/s2-cem-config/ && cp icons/s2-logo.svg dist/nodes/s2-rm/icons/ && cp icons/s2-logo.svg dist/nodes/s2-websocket/icons/",
31
+ "test": "npm run lint && npm run test:unit",
32
+ "test:unit": "jest",
33
+ "test:watch": "jest --watch",
34
+ "lint": "eslint src/ test/"
35
+ },
36
+ "keywords": [
37
+ "node-red",
38
+ "s2",
39
+ "energy",
40
+ "victron"
41
+ ],
42
+ "license": "MIT",
43
+ "peerDependencies": {
44
+ "node-red": ">=4.1.0"
45
+ },
46
+ "dependencies": {
47
+ "ws": "^8.18.0"
48
+ },
49
+ "devDependencies": {
50
+ "@types/jest": "^30.0.0",
51
+ "@types/node": "^25.6.0",
52
+ "@types/ws": "^8.18.1",
53
+ "@typescript-eslint/eslint-plugin": "^8.58.1",
54
+ "@typescript-eslint/parser": "^8.58.1",
55
+ "eslint": "^8.57.1",
56
+ "jest": "^29.7.0",
57
+ "ts-jest": "^29.4.9",
58
+ "typescript": "^5.9.3"
59
+ },
60
+ "jest": {
61
+ "testEnvironment": "node",
62
+ "testMatch": [
63
+ "**/test/**/*.test.ts"
64
+ ],
65
+ "transform": {
66
+ "^.+\\.tsx?$": [
67
+ "ts-jest",
68
+ {
69
+ "tsconfig": "tsconfig.test.json"
70
+ }
71
+ ]
72
+ },
73
+ "collectCoverage": true,
74
+ "coverageDirectory": "coverage",
75
+ "coverageReporters": [
76
+ "text",
77
+ "lcov",
78
+ "json-summary"
79
+ ]
80
+ },
81
+ "engines": {
82
+ "node": ">=24.0.0"
83
+ }
84
+ }