KNX Staircase (sample)


This sample shows how to use the KNX Staircase node as a stairwell timer (trigger โ†’ light ON โ†’ countdown โ†’ OFF), with optional override and block inputs.

For the full node reference see: Staircase configuration

Timer + override/block simulation

Copy this code and paste it into your flow

View code > Adjust Group Addresses, DPTs and KNX gateway settings according to your setup. ```json [ { "id": "a0a0a0a0a0a0a0a0", "type": "tab", "label": "KNX Staircase sample", "disabled": false, "info": "" }, { "id": "b0b0b0b0b0b0b0b0", "type": "comment", "z": "a0a0a0a0a0a0a0a0", "name": "Use TRIGGER/CANCEL to test the timer. Use Override/Block injects to simulate GA inputs.", "info": "", "x": 370, "y": 60, "wires": [] }, { "id": "c0c0c0c0c0c0c0c0", "type": "inject", "z": "a0a0a0a0a0a0a0a0", "name": "TRIGGER", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "true", "payloadType": "bool", "x": 130, "y": 140, "wires": [ [ "d0d0d0d0d0d0d0d0" ] ] }, { "id": "c1c1c1c1c1c1c1c1", "type": "inject", "z": "a0a0a0a0a0a0a0a0", "name": "CANCEL", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "false", "payloadType": "bool", "x": 130, "y": 180, "wires": [ [ "d0d0d0d0d0d0d0d0" ] ] }, { "id": "d0d0d0d0d0d0d0d0", "type": "knxUltimateStaircase", "z": "a0a0a0a0a0a0a0a0", "server": "08090a0b0c0d0e0f", "name": "Staircase timer", "outputtopic": "staircase", "gaTrigger": "4/0/0", "nameTrigger": "Trigger", "dptTrigger": "1.001", "gaOutput": "4/0/1", "nameOutput": "Light command", "dptOutput": "1.001", "gaStatus": "4/0/2", "nameStatus": "Status", "dptStatus": "1.001", "gaOverride": "4/0/3", "nameOverride": "Override", "dptOverride": "1.001", "gaBlock": "4/0/4", "nameBlock": "Block", "dptBlock": "1.001", "timerSeconds": 20, "extendMode": "restart", "triggerOffCancels": "yes", "preWarnEnable": true, "preWarnSeconds": 5, "preWarnMode": "status", "preWarnFlashMs": 400, "blockAction": "off", "emitEvents": true, "x": 370, "y": 160, "wires": [ [ "e0e0e0e0e0e0e0e0" ] ] }, { "id": "e0e0e0e0e0e0e0e0", "type": "debug", "z": "a0a0a0a0a0a0a0a0", "name": "Staircase events", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "x": 590, "y": 160, "wires": [] }, { "id": "f0f0f0f0f0f0f0f0", "type": "comment", "z": "a0a0a0a0a0a0a0a0", "name": "Simulate GA inputs (override/block) via knxUltimate writes.", "info": "", "x": 330, "y": 300, "wires": [] }, { "id": "0101010101010101", "type": "inject", "z": "a0a0a0a0a0a0a0a0", "name": "Override ON", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "true", "payloadType": "bool", "x": 130, "y": 360, "wires": [ [ "0202020202020202" ] ] }, { "id": "0303030303030303", "type": "inject", "z": "a0a0a0a0a0a0a0a0", "name": "Override OFF", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "false", "payloadType": "bool", "x": 130, "y": 400, "wires": [ [ "0202020202020202" ] ] }, { "id": "0202020202020202", "type": "knxUltimate", "z": "a0a0a0a0a0a0a0a0", "server": "08090a0b0c0d0e0f", "topic": "4/0/3", "outputtopic": "", "dpt": "1.001", "initialread": false, "notifyreadrequest": false, "notifyresponse": false, "notifywrite": true, "notifyreadrequestalsorespondtobus": false, "notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized": "0", "listenallga": false, "name": "GA Override", "outputtype": "write", "outputRBE": false, "inputRBE": false, "formatmultiplyvalue": "1", "formatnegativevalue": "leave", "formatdecimalsvalue": "999", "passthrough": "no", "x": 350, "y": 380, "wires": [ [] ] }, { "id": "0404040404040404", "type": "inject", "z": "a0a0a0a0a0a0a0a0", "name": "Block ON", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "true", "payloadType": "bool", "x": 120, "y": 460, "wires": [ [ "0505050505050505" ] ] }, { "id": "0606060606060606", "type": "inject", "z": "a0a0a0a0a0a0a0a0", "name": "Block OFF", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "false", "payloadType": "bool", "x": 120, "y": 500, "wires": [ [ "0505050505050505" ] ] }, { "id": "0505050505050505", "type": "knxUltimate", "z": "a0a0a0a0a0a0a0a0", "server": "08090a0b0c0d0e0f", "topic": "4/0/4", "outputtopic": "", "dpt": "1.001", "initialread": false, "notifyreadrequest": false, "notifyresponse": false, "notifywrite": true, "notifyreadrequestalsorespondtobus": false, "notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized": "0", "listenallga": false, "name": "GA Block", "outputtype": "write", "outputRBE": false, "inputRBE": false, "formatmultiplyvalue": "1", "formatnegativevalue": "leave", "formatdecimalsvalue": "999", "passthrough": "no", "x": 350, "y": 480, "wires": [ [] ] }, { "id": "08090a0b0c0d0e0f", "type": "knxUltimate-config", "host": "224.0.23.12", "port": 3671, "physAddr": "15.15.22", "hostProtocol": "Auto", "suppressACKRequest": false, "csv": "", "KNXEthInterface": "Auto", "KNXEthInterfaceManuallyInput": "", "stopETSImportIfNoDatapoint": "fake", "loglevel": "error", "name": "KNX Gateway", "delaybetweentelegrams": 25, "ignoreTelegramsWithRepeatedFlag": false, "keyringFileXML": "", "knxSecureSelected": false, "secureCredentialsMode": "keyring", "tunnelIASelection": "Auto", "tunnelIA": "", "tunnelInterfaceIndividualAddress": "", "tunnelUserPassword": "", "tunnelUserId": "", "autoReconnect": "yes", "statusUpdateThrottle": "0", "statusDateTimeFormat": "legacy", "statusDateTimeCustom": "" } ] ```