node-red-contrib-s2 0.1.2 → 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.
Files changed (38) hide show
  1. package/README.md +36 -8
  2. package/dist/lib/index.d.ts +1 -1
  3. package/dist/lib/s2/schedule.d.ts +3 -2
  4. package/dist/lib/s2/schedule.js +8 -7
  5. package/dist/lib/s2/schedule.js.map +1 -1
  6. package/dist/lib/s2/session.d.ts +17 -22
  7. package/dist/lib/s2/session.js +29 -59
  8. package/dist/lib/s2/session.js.map +1 -1
  9. package/dist/nodes/s2-cem-config/index.html +10 -0
  10. package/dist/nodes/s2-ombc/icons/s2-logo.svg +14 -0
  11. package/dist/nodes/s2-ombc/index.d.ts +30 -0
  12. package/dist/nodes/s2-ombc/index.html +82 -0
  13. package/dist/nodes/s2-ombc/index.js +153 -0
  14. package/dist/nodes/s2-ombc/index.js.map +1 -0
  15. package/dist/nodes/s2-ombc-config/index.d.ts +3 -0
  16. package/dist/nodes/s2-ombc-config/index.html +428 -0
  17. package/dist/nodes/s2-ombc-config/index.js +9 -0
  18. package/dist/nodes/s2-ombc-config/index.js.map +1 -0
  19. package/dist/nodes/s2-pebc/icons/s2-logo.svg +14 -0
  20. package/dist/nodes/s2-pebc/index.d.ts +44 -0
  21. package/dist/nodes/s2-pebc/index.html +85 -0
  22. package/dist/nodes/s2-pebc/index.js +417 -0
  23. package/dist/nodes/s2-pebc/index.js.map +1 -0
  24. package/dist/nodes/s2-pebc-config/index.d.ts +3 -0
  25. package/dist/nodes/s2-pebc-config/index.html +64 -0
  26. package/dist/nodes/s2-pebc-config/index.js +10 -0
  27. package/dist/nodes/s2-pebc-config/index.js.map +1 -0
  28. package/dist/nodes/s2-rm/index.d.ts +21 -11
  29. package/dist/nodes/s2-rm/index.html +12 -88
  30. package/dist/nodes/s2-rm/index.js +85 -309
  31. package/dist/nodes/s2-rm/index.js.map +1 -1
  32. package/dist/nodes/s2-rm-config/index.html +34 -66
  33. package/dist/nodes/s2-rm-config/index.js +2 -2
  34. package/dist/nodes/s2-rm-config/index.js.map +1 -1
  35. package/dist/types/config-nodes.d.ts +20 -6
  36. package/package.json +10 -4
  37. package/resources/s2-common.js +37 -0
  38. package/resources/s2-styles.css +263 -0
@@ -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 OMBC_STATUS_KEY = 's2OmbcStatus';
43
- const PRUNE_GRACE_MS = 3600000; // 1 hour grace before a non-PEBC instruction is pruned
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: config.providesForecast === true,
80
- providesPowerMeasurementTypes: parsePowerMeasurementTypes(config.providesPowerMeasurement),
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
- // Derive default PEBC constraints from the grid connection config
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.isPebc
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 (!item.isPebc && item.executionTimeMs <= now) {
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 rawItem = item.instruction;
199
- const resolvedItemMode = resolveOMBCMode(rawItem);
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
- const parsed = (0, schedule_1.parsePebcInstruction)(rawMsg, Date.now(), cemId);
429
- if (parsed && parsed.elements.length > 0) {
430
- const constraintsId = rawMsg.power_constraints_id;
431
- if (constraintsId && constraintsId !== pebcConstraintsId) {
432
- pebcSlots.clear();
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 resolvedMode = resolveOMBCMode(rawMsg);
469
- const outMsg = { payload: msg, cemId };
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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"}