node-red-contrib-s2 0.1.3 → 0.2.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/README.md +36 -8
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/s2/schedule.d.ts +3 -2
- package/dist/lib/s2/schedule.js +8 -7
- package/dist/lib/s2/schedule.js.map +1 -1
- package/dist/lib/s2/session.d.ts +17 -22
- package/dist/lib/s2/session.js +29 -59
- package/dist/lib/s2/session.js.map +1 -1
- package/dist/nodes/s2-cem-config/index.html +10 -0
- package/dist/nodes/s2-ombc/icons/s2-logo.svg +14 -0
- package/dist/nodes/s2-ombc/index.d.ts +30 -0
- package/dist/nodes/s2-ombc/index.html +82 -0
- package/dist/nodes/s2-ombc/index.js +153 -0
- package/dist/nodes/s2-ombc/index.js.map +1 -0
- package/dist/nodes/s2-ombc-config/index.d.ts +3 -0
- package/dist/nodes/s2-ombc-config/index.html +428 -0
- package/dist/nodes/s2-ombc-config/index.js +9 -0
- package/dist/nodes/s2-ombc-config/index.js.map +1 -0
- package/dist/nodes/s2-pebc/icons/s2-logo.svg +14 -0
- package/dist/nodes/s2-pebc/index.d.ts +44 -0
- package/dist/nodes/s2-pebc/index.html +85 -0
- package/dist/nodes/s2-pebc/index.js +417 -0
- package/dist/nodes/s2-pebc/index.js.map +1 -0
- package/dist/nodes/s2-pebc-config/index.d.ts +3 -0
- package/dist/nodes/s2-pebc-config/index.html +64 -0
- package/dist/nodes/s2-pebc-config/index.js +10 -0
- package/dist/nodes/s2-pebc-config/index.js.map +1 -0
- package/dist/nodes/s2-rm/index.d.ts +21 -11
- package/dist/nodes/s2-rm/index.html +12 -88
- package/dist/nodes/s2-rm/index.js +85 -309
- package/dist/nodes/s2-rm/index.js.map +1 -1
- package/dist/nodes/s2-rm-config/index.html +34 -66
- package/dist/nodes/s2-rm-config/index.js +2 -2
- package/dist/nodes/s2-rm-config/index.js.map +1 -1
- package/dist/types/config-nodes.d.ts +20 -6
- package/package.json +6 -2
- package/resources/s2-styles.css +101 -2
|
@@ -1,49 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
const fs = __importStar(require("fs"));
|
|
36
|
-
const os = __importStar(require("os"));
|
|
37
|
-
const path = __importStar(require("path"));
|
|
38
2
|
const session_1 = require("../../lib/s2/session");
|
|
39
3
|
const messages_1 = require("../../lib/s2/messages");
|
|
40
|
-
const schedule_1 = require("../../lib/s2/schedule");
|
|
41
4
|
const PENDING_INSTRUCTIONS_KEY = 's2PendingInstructions';
|
|
42
|
-
const
|
|
43
|
-
|
|
5
|
+
const PRUNE_GRACE_MS = 3600000; // 1 hour grace before an instruction is pruned
|
|
6
|
+
// Maps an instruction's message_type to the control type it belongs to and the
|
|
7
|
+
// namespace key used to enrich the emitted message (msg.controlType / msg.<key>).
|
|
8
|
+
const INSTRUCTION_CONTROL_TYPE = {
|
|
9
|
+
[messages_1.MessageType.OMBC_INSTRUCTION]: { controlType: messages_1.ControlType.OMBC, key: 'ombc' },
|
|
10
|
+
[messages_1.MessageType.PEBC_INSTRUCTION]: { controlType: messages_1.ControlType.PEBC, key: 'pebc' },
|
|
11
|
+
[messages_1.MessageType.FRBC_INSTRUCTION]: { controlType: messages_1.ControlType.FRBC, key: 'frbc' },
|
|
12
|
+
[messages_1.MessageType.DDBC_INSTRUCTION]: { controlType: messages_1.ControlType.DDBC, key: 'ddbc' },
|
|
13
|
+
[messages_1.MessageType.PPBC_SCHEDULE_INSTRUCTION]: { controlType: messages_1.ControlType.PPBC, key: 'ppbc' },
|
|
14
|
+
[messages_1.MessageType.PPBC_START_INTERRUPTION_INSTRUCTION]: { controlType: messages_1.ControlType.PPBC, key: 'ppbc' },
|
|
15
|
+
[messages_1.MessageType.PPBC_END_INTERRUPTION_INSTRUCTION]: { controlType: messages_1.ControlType.PPBC, key: 'ppbc' }
|
|
16
|
+
};
|
|
44
17
|
module.exports = function (RED) {
|
|
45
18
|
function S2RmNode(config) {
|
|
46
|
-
var _a;
|
|
47
19
|
RED.nodes.createNode(this, config);
|
|
48
20
|
const node = this;
|
|
49
21
|
const rmConfigNode = RED.nodes.getNode(config.rmConfig);
|
|
@@ -76,52 +48,14 @@ module.exports = function (RED) {
|
|
|
76
48
|
.map((role) => ({ role, commodity: 'ELECTRICITY' })),
|
|
77
49
|
availableControlTypes: (rmConfigNode.controlTypes || 'OPERATION_MODE_BASED_CONTROL')
|
|
78
50
|
.split(',').map((s) => s.trim()).filter(Boolean),
|
|
79
|
-
providesForecast:
|
|
80
|
-
providesPowerMeasurementTypes: parsePowerMeasurementTypes(
|
|
51
|
+
providesForecast: rmConfigNode.providesForecast === true,
|
|
52
|
+
providesPowerMeasurementTypes: parsePowerMeasurementTypes(rmConfigNode.providesPowerMeasurement),
|
|
81
53
|
instructionProcessingDelay: 0,
|
|
82
54
|
manufacturer: rmConfigNode.manufacturer || 'Victron Energy',
|
|
83
55
|
model: rmConfigNode.model || 'Virtual RM',
|
|
84
56
|
serialNumber: rmConfigNode.serialNumber || node.id,
|
|
85
57
|
firmwareVersion: rmConfigNode.firmwareVersion || '1.0.0'
|
|
86
58
|
};
|
|
87
|
-
let controlTypeConfig = {};
|
|
88
|
-
if (config.controlTypeConfig) {
|
|
89
|
-
try {
|
|
90
|
-
controlTypeConfig = JSON.parse(config.controlTypeConfig);
|
|
91
|
-
}
|
|
92
|
-
catch (e) {
|
|
93
|
-
node.error('Invalid Control Type Config JSON: ' + e.message);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
// Persist/restore schedule across restarts
|
|
97
|
-
const scheduleDir = path.join(((_a = RED.settings) === null || _a === void 0 ? void 0 : _a.userDir) || path.join(os.homedir(), '.node-red'), '.s2');
|
|
98
|
-
const scheduleFile = path.join(scheduleDir, `${node.id}-schedule.json`);
|
|
99
|
-
function saveSchedule(schedule) {
|
|
100
|
-
try {
|
|
101
|
-
fs.mkdirSync(scheduleDir, { recursive: true });
|
|
102
|
-
fs.writeFileSync(scheduleFile, JSON.stringify(schedule, null, 2));
|
|
103
|
-
}
|
|
104
|
-
catch (e) {
|
|
105
|
-
node.warn('Failed to persist S2 schedule: ' + e.message);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
function loadPersistedSchedule() {
|
|
109
|
-
try {
|
|
110
|
-
const raw = fs.readFileSync(scheduleFile, 'utf8');
|
|
111
|
-
const schedule = JSON.parse(raw);
|
|
112
|
-
const now = Date.now();
|
|
113
|
-
const validElements = schedule.elements.filter(el => el.endMs > now);
|
|
114
|
-
if (validElements.length === 0)
|
|
115
|
-
return;
|
|
116
|
-
applySchedule({ ...schedule, elements: validElements });
|
|
117
|
-
node.log(`Restored S2 schedule for CEM ${schedule.cemId} with ${validElements.length} future element(s)`);
|
|
118
|
-
}
|
|
119
|
-
catch (e) {
|
|
120
|
-
if (e.code !== 'ENOENT') {
|
|
121
|
-
node.warn('Failed to load persisted S2 schedule: ' + e.message);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
59
|
// Publish CEM REST API endpoint and auth header to flow context for use in downstream function nodes.
|
|
126
60
|
// Derived from the optional s2-cem-config reference: strips the WebSocket path and converts
|
|
127
61
|
// the protocol (wss->https, ws->http) to get the REST API base URL.
|
|
@@ -142,19 +76,8 @@ module.exports = function (RED) {
|
|
|
142
76
|
}
|
|
143
77
|
// One session per connected CEM
|
|
144
78
|
const sessions = new Map();
|
|
145
|
-
|
|
146
|
-
const defaultMaxPowerW = (0, messages_1.gridConnectionToWatts)(rmConfigNode.gridConnection, rmConfigNode.customMaxPowerW);
|
|
147
|
-
let pendingPEBCConstraints = defaultMaxPowerW != null
|
|
148
|
-
? { commodityQuantity: 'ELECTRIC.POWER.3_PHASE_SYMMETRIC', minPower: -defaultMaxPowerW, maxPower: defaultMaxPowerW }
|
|
149
|
-
: null;
|
|
79
|
+
let pendingPEBCConstraints = null;
|
|
150
80
|
let statusTimer = null;
|
|
151
|
-
// PEBC schedule dispatch
|
|
152
|
-
let scheduleTimer = null;
|
|
153
|
-
const SCHEDULE_CONTEXT_KEY = 's2PebcSchedule';
|
|
154
|
-
// Accumulated PEBC slots: keyed by slot start time (ms).
|
|
155
|
-
// Cleared when power_constraints_id changes (new planning period).
|
|
156
|
-
let pebcConstraintsId = null;
|
|
157
|
-
const pebcSlots = new Map();
|
|
158
81
|
function getPending() {
|
|
159
82
|
return node.context().flow.get(PENDING_INSTRUCTIONS_KEY) || [];
|
|
160
83
|
}
|
|
@@ -174,7 +97,17 @@ module.exports = function (RED) {
|
|
|
174
97
|
}
|
|
175
98
|
const pollIntervalMs = rmConfigNode.instructionPollIntervalMs || 2000;
|
|
176
99
|
const isSkipInstructionStatus = rmConfigNode.skipInstructionStatus === true;
|
|
100
|
+
// Enrich an outgoing instruction message with msg.controlType and the
|
|
101
|
+
// namespaced instruction payload (e.g. msg.ombc, msg.pebc), per the
|
|
102
|
+
// s2-rm-protocol spec. Unknown/unmapped instruction types are left as-is.
|
|
103
|
+
function enrichInstruction(rawMsg) {
|
|
104
|
+
const mapping = INSTRUCTION_CONTROL_TYPE[rawMsg.message_type];
|
|
105
|
+
if (!mapping)
|
|
106
|
+
return {};
|
|
107
|
+
return { controlType: mapping.controlType, [mapping.key]: rawMsg };
|
|
108
|
+
}
|
|
177
109
|
// Poll at the configured interval: dispatch due non-PEBC instructions, prune expired entries.
|
|
110
|
+
// PEBC instructions bypass this queue entirely (see onInstruction) - their timing is owned by s2-pebc.
|
|
178
111
|
const pollTimer = setInterval(() => {
|
|
179
112
|
const pending = getPending();
|
|
180
113
|
if (pending.length === 0)
|
|
@@ -183,26 +116,18 @@ module.exports = function (RED) {
|
|
|
183
116
|
let changed = false;
|
|
184
117
|
const remaining = [];
|
|
185
118
|
for (const item of pending) {
|
|
186
|
-
const expired = item.
|
|
187
|
-
? (item.scheduleEndMs !== undefined && item.scheduleEndMs < now)
|
|
188
|
-
: (item.executionTimeMs + PRUNE_GRACE_MS < now);
|
|
119
|
+
const expired = item.executionTimeMs + PRUNE_GRACE_MS < now;
|
|
189
120
|
if (expired) {
|
|
190
121
|
changed = true;
|
|
191
122
|
continue;
|
|
192
123
|
}
|
|
193
|
-
if (
|
|
124
|
+
if (item.executionTimeMs <= now) {
|
|
194
125
|
const session = sessions.get(item.cemId);
|
|
195
126
|
if (session && item.instructionId && !isSkipInstructionStatus) {
|
|
196
127
|
session.sendInstructionStatus(item.instructionId, messages_1.InstructionStatus.STARTED);
|
|
197
128
|
}
|
|
198
|
-
const
|
|
199
|
-
|
|
200
|
-
const itemOutMsg = { payload: item.instruction, cemId: item.cemId };
|
|
201
|
-
if (resolvedItemMode) {
|
|
202
|
-
itemOutMsg.topic = resolvedItemMode.label;
|
|
203
|
-
itemOutMsg.operationMode = resolvedItemMode;
|
|
204
|
-
}
|
|
205
|
-
node.send([null, null, itemOutMsg, null]);
|
|
129
|
+
const outMsg = { payload: item.instruction, cemId: item.cemId, ...enrichInstruction(item.instruction) };
|
|
130
|
+
node.send([null, null, outMsg]);
|
|
206
131
|
changed = true;
|
|
207
132
|
continue;
|
|
208
133
|
}
|
|
@@ -211,111 +136,6 @@ module.exports = function (RED) {
|
|
|
211
136
|
if (changed)
|
|
212
137
|
setPending(remaining);
|
|
213
138
|
}, pollIntervalMs).unref();
|
|
214
|
-
// Deduplication: track last emitted active element to suppress identical re-emits from the CEM.
|
|
215
|
-
let lastEmittedActive = null;
|
|
216
|
-
let duplicateActiveCount = 0;
|
|
217
|
-
function emitActiveElement(schedule) {
|
|
218
|
-
const el = (0, schedule_1.getActiveElement)(schedule, Date.now());
|
|
219
|
-
if (!el)
|
|
220
|
-
return;
|
|
221
|
-
const isDuplicate = lastEmittedActive !== null &&
|
|
222
|
-
lastEmittedActive.startMs === el.startMs &&
|
|
223
|
-
lastEmittedActive.lowerBound === el.lowerBound &&
|
|
224
|
-
lastEmittedActive.upperBound === el.upperBound &&
|
|
225
|
-
lastEmittedActive.commodityQuantity === schedule.commodityQuantity;
|
|
226
|
-
if (isDuplicate) {
|
|
227
|
-
duplicateActiveCount++;
|
|
228
|
-
node.debug(`duplicate active element from CEM (${duplicateActiveCount} total) - suppressing port 3 emit`);
|
|
229
|
-
const count = sessions.size;
|
|
230
|
-
node.status({ fill: 'yellow', shape: 'ring', text: `${count} CEM${count > 1 ? 's' : ''} connected · ${duplicateActiveCount} dup.` });
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
lastEmittedActive = { startMs: el.startMs, lowerBound: el.lowerBound, upperBound: el.upperBound, commodityQuantity: schedule.commodityQuantity };
|
|
234
|
-
duplicateActiveCount = 0;
|
|
235
|
-
updateStatus();
|
|
236
|
-
const slot = pebcSlots.get(el.startMs);
|
|
237
|
-
if (slot && !isSkipInstructionStatus) {
|
|
238
|
-
const session = sessions.get(slot.cemId);
|
|
239
|
-
if (session)
|
|
240
|
-
session.sendInstructionStatus(slot.instructionId, messages_1.InstructionStatus.STARTED);
|
|
241
|
-
}
|
|
242
|
-
node.send([null, null, {
|
|
243
|
-
cemId: schedule.cemId,
|
|
244
|
-
payload: {
|
|
245
|
-
startTime: new Date(el.startMs).toISOString(),
|
|
246
|
-
endTime: new Date(el.endMs).toISOString(),
|
|
247
|
-
duration: el.duration,
|
|
248
|
-
lowerBound: el.lowerBound,
|
|
249
|
-
upperBound: el.upperBound,
|
|
250
|
-
commodityQuantity: schedule.commodityQuantity
|
|
251
|
-
}
|
|
252
|
-
}, null]);
|
|
253
|
-
}
|
|
254
|
-
function scheduleNextDispatch(schedule) {
|
|
255
|
-
if (scheduleTimer) {
|
|
256
|
-
clearTimeout(scheduleTimer);
|
|
257
|
-
scheduleTimer = null;
|
|
258
|
-
}
|
|
259
|
-
const nextStart = (0, schedule_1.getNextElementStart)(schedule, Date.now());
|
|
260
|
-
if (nextStart === null)
|
|
261
|
-
return;
|
|
262
|
-
const delay = Math.max(0, nextStart - Date.now());
|
|
263
|
-
scheduleTimer = setTimeout(() => {
|
|
264
|
-
scheduleTimer = null;
|
|
265
|
-
emitActiveElement(schedule);
|
|
266
|
-
scheduleNextDispatch(schedule);
|
|
267
|
-
}, delay);
|
|
268
|
-
}
|
|
269
|
-
function applySchedule(schedule) {
|
|
270
|
-
node.context().flow.set(SCHEDULE_CONTEXT_KEY, schedule);
|
|
271
|
-
saveSchedule(schedule);
|
|
272
|
-
emitActiveElement(schedule);
|
|
273
|
-
scheduleNextDispatch(schedule);
|
|
274
|
-
node.send([null, null, null, {
|
|
275
|
-
cemId: schedule.cemId,
|
|
276
|
-
payload: {
|
|
277
|
-
commodityQuantity: schedule.commodityQuantity,
|
|
278
|
-
elements: schedule.elements.map(el => ({
|
|
279
|
-
startTime: new Date(el.startMs).toISOString(),
|
|
280
|
-
endTime: new Date(el.endMs).toISOString(),
|
|
281
|
-
durationSec: Math.round(el.duration / 1000),
|
|
282
|
-
lowerBound: el.lowerBound,
|
|
283
|
-
upperBound: el.upperBound
|
|
284
|
-
}))
|
|
285
|
-
}
|
|
286
|
-
}]);
|
|
287
|
-
}
|
|
288
|
-
function resolveOMBCMode(rawInstr) {
|
|
289
|
-
var _a, _b, _c;
|
|
290
|
-
if (rawInstr.message_type !== messages_1.MessageType.OMBC_INSTRUCTION)
|
|
291
|
-
return null;
|
|
292
|
-
const modeId = (rawInstr.operation_mode_id || rawInstr.operation_mode);
|
|
293
|
-
if (!modeId)
|
|
294
|
-
return null;
|
|
295
|
-
const factor = typeof rawInstr.operation_mode_factor === 'number' ? rawInstr.operation_mode_factor : 1;
|
|
296
|
-
const ctc = controlTypeConfig;
|
|
297
|
-
const modes = (_b = (_a = ctc.OMBC) === null || _a === void 0 ? void 0 : _a.systemDescription) === null || _b === void 0 ? void 0 : _b.operationModes;
|
|
298
|
-
const modeIndex = (_c = modes === null || modes === void 0 ? void 0 : modes.findIndex(m => m.id === modeId)) !== null && _c !== void 0 ? _c : -1;
|
|
299
|
-
const mode = modeIndex >= 0 ? modes[modeIndex] : undefined;
|
|
300
|
-
return {
|
|
301
|
-
id: modeId,
|
|
302
|
-
index: modeIndex,
|
|
303
|
-
label: (mode === null || mode === void 0 ? void 0 : mode.diagnostic_label) || modeId,
|
|
304
|
-
factor,
|
|
305
|
-
powerRanges: (mode === null || mode === void 0 ? void 0 : mode.power_ranges) || []
|
|
306
|
-
};
|
|
307
|
-
}
|
|
308
|
-
// Persist the committed OMBC mode to flow context so reconnecting CEMs see the correct status.
|
|
309
|
-
// Called at instruction accept time (in onInstruction, which runs inside _ackAndForward).
|
|
310
|
-
// The session has already updated _currentOMBCStatus and sent OMBC.Status by this point.
|
|
311
|
-
function persistOMBCStatusIfInstruction(session, rawInstr) {
|
|
312
|
-
if (rawInstr.message_type !== messages_1.MessageType.OMBC_INSTRUCTION)
|
|
313
|
-
return;
|
|
314
|
-
const status = session.currentOMBCStatus;
|
|
315
|
-
if (status) {
|
|
316
|
-
node.context().flow.set(OMBC_STATUS_KEY, status);
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
139
|
node.status({ fill: 'grey', shape: 'ring', text: 'no CEMs connected' });
|
|
320
140
|
function updateStatus() {
|
|
321
141
|
const count = sessions.size;
|
|
@@ -334,7 +154,6 @@ module.exports = function (RED) {
|
|
|
334
154
|
const session = new session_1.S2Session({
|
|
335
155
|
cemId,
|
|
336
156
|
rmDetails: resolvedDetails,
|
|
337
|
-
controlTypeConfig,
|
|
338
157
|
skipInstructionStatus: isSkipInstructionStatus,
|
|
339
158
|
onSend: (msg) => {
|
|
340
159
|
const m = msg;
|
|
@@ -372,30 +191,6 @@ module.exports = function (RED) {
|
|
|
372
191
|
if (sess)
|
|
373
192
|
sess.sendInstructionStatus(revokedId, messages_1.InstructionStatus.REVOKED);
|
|
374
193
|
}
|
|
375
|
-
if (revokedItem.isPebc) {
|
|
376
|
-
for (const [key, slot] of pebcSlots.entries()) {
|
|
377
|
-
if (slot.instructionId === revokedId)
|
|
378
|
-
pebcSlots.delete(key);
|
|
379
|
-
}
|
|
380
|
-
if (pebcSlots.size === 0) {
|
|
381
|
-
if (scheduleTimer) {
|
|
382
|
-
clearTimeout(scheduleTimer);
|
|
383
|
-
scheduleTimer = null;
|
|
384
|
-
}
|
|
385
|
-
node.context().flow.set(SCHEDULE_CONTEXT_KEY, null);
|
|
386
|
-
}
|
|
387
|
-
else {
|
|
388
|
-
const sorted = [...pebcSlots.values()].sort((a, b) => a.element.startMs - b.element.startMs);
|
|
389
|
-
const rebuilt = {
|
|
390
|
-
receivedAt: Date.now(),
|
|
391
|
-
cemId: sorted[0].cemId,
|
|
392
|
-
instructionId: sorted[0].instructionId,
|
|
393
|
-
commodityQuantity: sorted[0].commodityQuantity,
|
|
394
|
-
elements: sorted.map(s => s.element)
|
|
395
|
-
};
|
|
396
|
-
applySchedule(rebuilt);
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
194
|
}
|
|
400
195
|
}
|
|
401
196
|
}
|
|
@@ -417,61 +212,21 @@ module.exports = function (RED) {
|
|
|
417
212
|
const instructionId = rawMsg.id;
|
|
418
213
|
const executionTimeStr = rawMsg.execution_time;
|
|
419
214
|
const executionTimeMs = executionTimeStr ? new Date(executionTimeStr).getTime() : Date.now();
|
|
420
|
-
// Persist the OMBC status committed by the session in _ackAndForward.
|
|
421
|
-
// Done at accept time so reconnecting CEMs always see the correct mode,
|
|
422
|
-
// even if the CEM disconnects before the instruction's execution_time.
|
|
423
|
-
const sess = sessions.get(cemId);
|
|
424
|
-
if (sess) {
|
|
425
|
-
persistOMBCStatusIfInstruction(sess, rawMsg);
|
|
426
|
-
}
|
|
427
215
|
if (msg.message_type === messages_1.MessageType.PEBC_INSTRUCTION) {
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
pebcConstraintsId = constraintsId;
|
|
434
|
-
}
|
|
435
|
-
for (const el of parsed.elements) {
|
|
436
|
-
pebcSlots.set(el.startMs, { element: el, commodityQuantity: parsed.commodityQuantity, cemId, instructionId: parsed.instructionId });
|
|
437
|
-
}
|
|
438
|
-
const sorted = [...pebcSlots.values()].sort((a, b) => a.element.startMs - b.element.startMs);
|
|
439
|
-
const combined = {
|
|
440
|
-
receivedAt: Date.now(),
|
|
441
|
-
cemId: sorted[0].cemId,
|
|
442
|
-
instructionId: parsed.instructionId,
|
|
443
|
-
commodityQuantity: sorted[0].commodityQuantity,
|
|
444
|
-
elements: sorted.map(s => s.element)
|
|
445
|
-
};
|
|
446
|
-
if (messageId) {
|
|
447
|
-
addToPending({
|
|
448
|
-
messageId,
|
|
449
|
-
instructionId,
|
|
450
|
-
instruction: rawMsg,
|
|
451
|
-
cemId,
|
|
452
|
-
executionTimeMs,
|
|
453
|
-
isPebc: true,
|
|
454
|
-
scheduleEndMs: combined.elements[combined.elements.length - 1].endMs
|
|
455
|
-
});
|
|
456
|
-
}
|
|
457
|
-
applySchedule(combined);
|
|
458
|
-
return;
|
|
459
|
-
}
|
|
216
|
+
// PEBC schedule accumulation and per-element dispatch timing is owned by s2-pebc -
|
|
217
|
+
// deliver the raw instruction immediately so it can build/dispatch with its own timers.
|
|
218
|
+
const outMsg = { payload: msg, cemId, ...enrichInstruction(rawMsg) };
|
|
219
|
+
node.send([null, null, outMsg]);
|
|
220
|
+
return;
|
|
460
221
|
}
|
|
461
|
-
// Non-PEBC (or PEBC with no valid schedule): dispatch immediately or queue.
|
|
462
222
|
const now = Date.now();
|
|
463
223
|
if (executionTimeMs <= now) {
|
|
464
224
|
const session = sessions.get(cemId);
|
|
465
225
|
if (session && instructionId && !isSkipInstructionStatus) {
|
|
466
226
|
session.sendInstructionStatus(instructionId, messages_1.InstructionStatus.STARTED);
|
|
467
227
|
}
|
|
468
|
-
const
|
|
469
|
-
|
|
470
|
-
if (resolvedMode) {
|
|
471
|
-
outMsg.topic = resolvedMode.label;
|
|
472
|
-
outMsg.operationMode = resolvedMode;
|
|
473
|
-
}
|
|
474
|
-
node.send([null, null, outMsg, null]);
|
|
228
|
+
const outMsg = { payload: msg, cemId, ...enrichInstruction(rawMsg) };
|
|
229
|
+
node.send([null, null, outMsg]);
|
|
475
230
|
}
|
|
476
231
|
else {
|
|
477
232
|
if (messageId) {
|
|
@@ -480,9 +235,7 @@ module.exports = function (RED) {
|
|
|
480
235
|
instructionId,
|
|
481
236
|
instruction: rawMsg,
|
|
482
237
|
cemId,
|
|
483
|
-
executionTimeMs
|
|
484
|
-
isPebc: false,
|
|
485
|
-
scheduleEndMs: undefined
|
|
238
|
+
executionTimeMs
|
|
486
239
|
});
|
|
487
240
|
}
|
|
488
241
|
}
|
|
@@ -508,6 +261,22 @@ module.exports = function (RED) {
|
|
|
508
261
|
done(new Error("msg.payload must have a 'command' field"));
|
|
509
262
|
return;
|
|
510
263
|
}
|
|
264
|
+
// PowerConstraints applies globally (all current + future sessions), so unlike every
|
|
265
|
+
// other command it does not require a cemId - a control-type node can push a default
|
|
266
|
+
// at deploy time, before any CEM has connected.
|
|
267
|
+
if (command === 'PowerConstraints') {
|
|
268
|
+
const { constraints } = msg.payload;
|
|
269
|
+
if (!constraints || typeof constraints !== 'object') {
|
|
270
|
+
done(new Error('PowerConstraints requires a constraints object'));
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
pendingPEBCConstraints = constraints;
|
|
274
|
+
for (const session of sessions.values()) {
|
|
275
|
+
session.setPEBCPowerConstraints(constraints);
|
|
276
|
+
}
|
|
277
|
+
done();
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
511
280
|
if (!cemId) {
|
|
512
281
|
done(new Error("msg.payload must have a 'cemId' field"));
|
|
513
282
|
return;
|
|
@@ -520,12 +289,6 @@ module.exports = function (RED) {
|
|
|
520
289
|
sessions.delete(cemId);
|
|
521
290
|
}
|
|
522
291
|
const session = createSession(cemId);
|
|
523
|
-
// Restore persisted OMBC status so this session reports the last known mode
|
|
524
|
-
// when SELECT_CONTROL_TYPE(OMBC) is received. Falls back to the static config.
|
|
525
|
-
const savedOmbcStatus = node.context().flow.get(OMBC_STATUS_KEY);
|
|
526
|
-
if (savedOmbcStatus) {
|
|
527
|
-
session.updateOMBCStatus(savedOmbcStatus);
|
|
528
|
-
}
|
|
529
292
|
session.start();
|
|
530
293
|
node.send([null, { topic: 'Connected', cemId }, null]);
|
|
531
294
|
node.log(`CEM ${cemId} connected (keepAliveInterval: ${keepAliveInterval}s)`);
|
|
@@ -574,20 +337,6 @@ module.exports = function (RED) {
|
|
|
574
337
|
done();
|
|
575
338
|
break;
|
|
576
339
|
}
|
|
577
|
-
case 'PowerConstraints': {
|
|
578
|
-
const { constraints } = msg.payload;
|
|
579
|
-
if (!constraints || typeof constraints !== 'object') {
|
|
580
|
-
done(new Error('PowerConstraints requires a constraints object'));
|
|
581
|
-
return;
|
|
582
|
-
}
|
|
583
|
-
pendingPEBCConstraints = constraints;
|
|
584
|
-
// Apply to all currently connected sessions
|
|
585
|
-
for (const session of sessions.values()) {
|
|
586
|
-
session.setPEBCPowerConstraints(constraints);
|
|
587
|
-
}
|
|
588
|
-
done();
|
|
589
|
-
break;
|
|
590
|
-
}
|
|
591
340
|
case 'Forecast': {
|
|
592
341
|
const { forecast } = msg.payload;
|
|
593
342
|
if (!forecast || !forecast.startTime || !Array.isArray(forecast.elements)) {
|
|
@@ -633,6 +382,38 @@ module.exports = function (RED) {
|
|
|
633
382
|
done();
|
|
634
383
|
break;
|
|
635
384
|
}
|
|
385
|
+
case 'UpdateStatus': {
|
|
386
|
+
const { controlType, ...payload } = msg.payload;
|
|
387
|
+
if (!controlType || typeof controlType !== 'string') {
|
|
388
|
+
done(new Error('UpdateStatus requires a controlType string'));
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
const usSession = sessions.get(cemId);
|
|
392
|
+
if (!usSession) {
|
|
393
|
+
node.warn(`UpdateStatus for unknown CEM ${cemId} - ignoring`);
|
|
394
|
+
done();
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
usSession.updateStatus(controlType, payload);
|
|
398
|
+
done();
|
|
399
|
+
break;
|
|
400
|
+
}
|
|
401
|
+
case 'SystemDescription': {
|
|
402
|
+
const { controlType, ...payload } = msg.payload;
|
|
403
|
+
if (!controlType || typeof controlType !== 'string') {
|
|
404
|
+
done(new Error('SystemDescription requires a controlType string'));
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
407
|
+
const sdSession = sessions.get(cemId);
|
|
408
|
+
if (!sdSession) {
|
|
409
|
+
node.warn(`SystemDescription for unknown CEM ${cemId} - ignoring`);
|
|
410
|
+
done();
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
sdSession.sendSystemDescription(controlType, payload);
|
|
414
|
+
done();
|
|
415
|
+
break;
|
|
416
|
+
}
|
|
636
417
|
default:
|
|
637
418
|
done(new Error(`Unknown command: ${command}`));
|
|
638
419
|
}
|
|
@@ -643,10 +424,6 @@ module.exports = function (RED) {
|
|
|
643
424
|
statusTimer = null;
|
|
644
425
|
}
|
|
645
426
|
clearInterval(pollTimer);
|
|
646
|
-
if (scheduleTimer) {
|
|
647
|
-
clearTimeout(scheduleTimer);
|
|
648
|
-
scheduleTimer = null;
|
|
649
|
-
}
|
|
650
427
|
for (const session of sessions.values()) {
|
|
651
428
|
session.dispose();
|
|
652
429
|
}
|
|
@@ -654,7 +431,6 @@ module.exports = function (RED) {
|
|
|
654
431
|
node.status({});
|
|
655
432
|
done();
|
|
656
433
|
});
|
|
657
|
-
loadPersistedSchedule();
|
|
658
434
|
}
|
|
659
435
|
RED.nodes.registerType('s2-rm', S2RmNode);
|
|
660
436
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nodes/s2-rm/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nodes/s2-rm/index.ts"],"names":[],"mappings":"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"}
|