Untitled

 avatar
unknown
plain_text
a month ago
744 B
4
Indexable
const retainMinHours = 24*7;
const retainAdditionalMsgs = 50;

if (!flow.get('KNX_states')) { flow.set('KNX_states', []) }
const KNX_states = flow.get('KNX_states');

let old = _ => msg.date-_.date > 1e3*3600*retainMinHours;
let identical = _ => _.topic === msg.topic && _.payload === msg.payload;
if ((/^4\/[23]\//).test(msg.topic)) { identical = _ => _.topic === msg.topic; }

msg.date = Date.now();

Object.freeze(msg.knx);
Object.freeze(msg);

for (let i = (KNX_states.filter(identical).filter(old).length); i > retainAdditionalMsgs; i--) {
    KNX_states.splice(KNX_states.findIndex(identical), 1);
}

KNX_states.push(msg);
node.done();
node.status({ fill: "green", shape: "ring", text: KNX_states.length + " items logged" });

return msg;
Leave a Comment