UNPKG

node-red-contrib-powersaver-adapter

Version:

A Node-RED adapter that converts 15-minute (quarterly) electricity price data into hourly values for use with PowerSaver.no nodes.

42 lines (35 loc) 1.13 kB
module.exports = function (RED) { function quartersToHours(array) { if (!Array.isArray(array)) return []; let hours = []; for (let i = 0; i < array.length; i += 4) { let group = array.slice(i, i + 4); let avg = group.reduce((sum, obj) => sum + Number(obj.value), 0) / group.length; hours.push({ value: avg, start: group[0].start }); } return hours; } function PowerSaverAdapterNode(config) { RED.nodes.createNode(this, config); const node = this; node.on("input", function (msg, send, done) { try { const data = msg?.payload?.priceData; if (!Array.isArray(data)) { node.warn("msg.payload.priceData is not an array"); send ? send(msg) : node.send(msg); if (done) done(); return; } msg.payload.priceData = quartersToHours(data); send ? send(msg) : node.send(msg); if (done) done(); } catch (err) { node.error(err.message, msg); if (done) done(err); } }); } RED.nodes.registerType("powersaver-adapter", PowerSaverAdapterNode); };