UNPKG

node-red-contrib-knx-ultimate

Version:

Control your KNX and KNX Secure intallation via Node-Red! A bunch of KNX nodes, with integrated Philips HUE control, ETS group address importer, KNX AI for diagnosticsand KNX routing between interfaces. Easy to use and highly configurable.

146 lines (141 loc) 4.53 kB
; (function (root) { const KNXSendSnippets = [ { id: 'status-ga-check', title: 'Status GA check', code: `// @ts-nocheck // Replace '' with the real status group address. const statusGA = await getGAValue('','1.001'); if (msg.payload !== statusGA){ // " !==" means " not equal" return msg; }else{ // Both values are identical, so i don't send the msg. node.status({fill:"grey",shape:"dot",text:"Not sent"}); return; }` }, { id: 'toggle-value-no-check', title: 'Toggle value (without status check)', code: `// @ts-nocheck // After 5000 milliseconds, toggle. setTimeout(function() { toggle(); }, 5000); return msg;` }, { id: 'toggle-value-with-check', title: 'Toggle value (with status check)', code: `// @ts-nocheck // Get the current value of the status GA. insert the actual STATUS GA here. let prevValue = await getGAValue('InsertHereTheStatusGA', '1.001') if (prevValue === null) { // If the status of the light is not defined, at the // first input of this node, it turns the light on self(true); }else{ // Otherwise, toggles the value self(!prevValue); }` }, { id: 'send-false-delay', title: 'Send false after 5 secs', code: `// @ts-nocheck // After 5000 milliseconds, send false. setTimeout(function () { self(false); }, 5000); return msg;` }, { id: 'send-20-percent-other-ga', title: 'Send 20% to another GA', code: `// @ts-nocheck // Send 20% to the GA 1/0/1 having DPT 5.001 if (msg.payload === true){ setGAValue('1/0/1',20,'5.001') } return msg;` }, { id: 'motion-activated-light', title: 'Turn on light on motion, auto off', code: `// @ts-nocheck // This snippet expects a motion sensor boolean on msg.payload. // When motion is detected turn the light on, otherwise schedule an auto-off. if (msg.payload === true) { // Turn on the light immediately. setGAValue('', true, '1.001'); // Replace '' with your light GA. // Cancel pending auto-off timers if any. context.set('autoOffTimer', null); } else { // Schedule auto-off after 90 seconds of no motion. const timer = setTimeout(() => { setGAValue('', false, '1.001'); // Replace '' with your light GA. }, 90000); context.set('autoOffTimer', timer); } return;` }, { id: 'window-hvac-standby', title: 'HVAC standby when window open', code: `// @ts-nocheck // msg.payload should contain the window contact state (true = open). // If the window is open, set the HVAC to standby, otherwise restore comfort. const hvacGa = ''; // Replace with your HVAC GA. const standbyValue = 'standby'; const comfortValue = 'comfort'; if (msg.payload === true) { setGAValue(hvacGa, standbyValue, '20.102'); // HVAC mode DPT. node.status({fill: 'yellow', shape: 'dot', text: 'HVAC standby'}); } else { setGAValue(hvacGa, comfortValue, '20.102'); node.status({fill: 'green', shape: 'dot', text: 'HVAC comfort'}); } return;` }, { id: 'night-door-alert', title: 'Night door alert', code: `// @ts-nocheck // Send a KNX notification GA if a door opens between 22:00 and 06:00. const now = new Date(); const hour = now.getHours(); if (msg.payload === true && (hour >= 22 || hour < 6)) { setGAValue('', true, '1.001'); // Replace '' with your alert GA. node.status({fill: 'red', shape: 'ring', text: 'Door alert sent'}); } return;` }, { id: 'bedtime-all-off', title: 'Bedtime all off', code: `// @ts-nocheck // Turn off a list of lights when a bedtime command is received. const lights = [ '', // Replace with GA of the first light '' // Replace with GA of the second light ]; if (msg.payload === 'bedtime') { lights.forEach(ga => { if (ga) { setGAValue(ga, false, '1.001'); } }); node.status({fill: 'blue', shape: 'dot', text: 'All lights off'}); return; } return msg;` } ] if (root) { root.KNXSendSnippets = KNXSendSnippets } if (typeof module !== 'undefined' && module.exports) { module.exports = KNXSendSnippets } })(typeof window !== 'undefined' ? window : (typeof globalThis !== 'undefined' ? globalThis : this))