Untitled
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