Guide
#Topology and supervision
The model represents twisted-pair lines, couplers, KNXnet/IP routers, and group-address filtering. Filter tables, routing settings, line repeaters, and segment couplers are described in couplers and repeaters.
#Topology levels
| Level | Device addresses | Coupler to the next level |
|---|---|---|
Line A.L |
A.L.1 through A.L.255 |
Line coupler A.L.0 |
Area main line A.0 |
A.0.1 through A.0.255 |
Area coupler A.0.0 |
Backbone 0.0 |
0.0.1 through 0.0.255 |
— |
Declare lines in lines using area and line numbers 1–15. A main line appears when an area has more than one line; a backbone appears when the installation has more than one area. To show either level with a smaller installation, set:
"topology": { "mainLines": true, "backbone": true }Devices may then connect to a main line (1.0.5) or the backbone (0.0.3). Give areas names with "areas": [{ "address": 1, "name": "Building A" }].
#Power supplies
Each twisted-pair line, and each segment behind a line repeater or segment coupler, needs its own KNX power supply with a choke. powerSupply shows it on the diagram, next to the line name:
"lines": [
{ "address": "1.1", "powerSupply": { "name": "PSU 1.1", "currentMa": 640 },
"extension": { "address": "1.1.64", "powerSupply": { "currentMa": 320 } } }
]currentMa is the rated current (common values are 160, 320, 640, and 1280 mA); both fields are optional. The supply has no individual address. BusDiagram does not compute the bus load: the consumption of each device is not modeled. The designer sets the supply of each line in its Topology section.
#KNXnet/IP routers
A KNXnet/IP router replaces a coupler and uses its individual address:
topology.ip |
Replaces | Router addresses | IP network level |
|---|---|---|---|
"areaCouplers" |
Area couplers | A.0.0 |
Backbone |
"lineCouplers" |
Line couplers | A.L.0 |
Main lines and backbone |
The model routes through the IP network and applies each router's filter table as it would for a twisted-pair coupler. A device with "medium": "IP", such as a supervisor by default, connects to that network.
{
"formatVersion": 2,
"title": "KNX topology: couplers, repeater, and KNXnet/IP routers",
"description": "Two areas are connected by an IP network. KNXnet/IP routers 1.0.0 and 2.0.0 act as area couplers. The installation has four lines, a line extension, and a supervisor on the IP network. Compare the route of a local command with that of a status telegram.",
"lines": [
{ "address": "1.1", "powerSupply": { "currentMa": 640 } },
{ "address": "1.2", "powerSupply": { "currentMa": 640 } },
{
"address": "2.1",
"powerSupply": { "currentMa": 640 },
"extension": {
"address": "2.1.64",
"mode": "repeater",
"switchable": true,
"powerSupply": { "currentMa": 320 }
}
},
{ "address": "2.2", "name": "no device", "powerSupply": { "currentMa": 640 } }
],
"topology": { "ip": "areaCouplers" },
"groupAddresses": [
{ "address": "1/1/1", "name": "Living-room lighting", "dpt": "1.001" },
{ "address": "1/3/1", "name": "Corridor lighting", "dpt": "1.001" },
{ "address": "1/4/1", "name": "Living-room lighting status", "dpt": "1.001" },
{ "address": "1/4/2", "name": "Corridor lighting status", "dpt": "1.001" },
{ "address": "2/1/1", "name": "Shutter 1 up/down", "dpt": "1.008" },
{ "address": "2/2/1", "name": "Shutter 1 stop/step", "dpt": "1.007" },
{ "address": "2/4/1", "name": "Shutter 1 position", "dpt": "5.001" }
],
"devices": [
{
"id": "sup",
"name": "Supervisor",
"kind": "supervisor",
"behavior": "display/v1",
"description": "The supervisor listens through the KNX/IP router. It sends no commands; it observes shutter commands and displays status feedback.",
"objects": [
{
"id": "pos",
"name": "Shutter 1 position",
"ga": "2/4/1",
"dpt": "5.001",
"port": "display",
"flags": { "W": true, "T": false }
},
{
"id": "l1",
"name": "Living room",
"ga": "1/4/1",
"dpt": "1.001",
"port": "display",
"flags": { "W": true, "T": false }
},
{
"id": "l2",
"name": "Corridor",
"ga": "1/4/2",
"dpt": "1.001",
"port": "display",
"flags": { "W": true, "T": false }
}
]
},
{
"id": "p1",
"name": "Three-key push-button · living room",
"address": "1.1.10",
"kind": "pushButton",
"behavior": "pushButton/v1",
"description": "One device has a separate object for each key and function. Key 1 raises the shutter and Key 2 lowers it: long presses use 2/1/1; short presses use 2/2/1. Key 3 toggles the light through 1/1/1 and also listens to status feedback on 1/4/1.",
"objects": [
{
"id": "key1Long",
"name": "Key 1 long press",
"ga": "2/1/1",
"dpt": "1.008",
"port": "input",
"flags": { "W": true, "T": true }
},
{
"id": "key1Short",
"name": "Key 1 short press",
"ga": "2/2/1",
"dpt": "1.007",
"port": "input",
"flags": { "W": true, "T": true }
},
{
"id": "key2Long",
"name": "Key 2 long press",
"ga": "2/1/1",
"dpt": "1.008",
"port": "input",
"flags": { "W": true, "T": true }
},
{
"id": "key2Short",
"name": "Key 2 short press",
"ga": "2/2/1",
"dpt": "1.007",
"port": "input",
"flags": { "W": true, "T": true }
},
{
"id": "key3",
"name": "Key 3",
"ga": ["1/1/1", "1/4/1"],
"dpt": "1.001",
"port": "input",
"flags": { "W": true, "T": true }
}
],
"buttons": [
{
"id": "button-0",
"label": "Key 1",
"icon": "up",
"short": { "object": "key1Short", "value": 0 },
"long": { "object": "key1Long", "value": 0 }
},
{
"id": "button-1",
"label": "Key 2",
"icon": "down",
"short": { "object": "key2Short", "value": 1 },
"long": { "object": "key2Long", "value": 1 }
},
{
"id": "button-2",
"label": "Key 3",
"press": { "object": "key3", "value": "toggle" },
"led": "key3"
}
]
},
{
"id": "c1",
"name": "Switching actuator",
"address": "1.1.20",
"kind": "switchActuator",
"behavior": "switchActuator/v1",
"objects": [
{
"id": "cmd",
"name": "Channel 1",
"ga": "1/1/1",
"dpt": "1.001",
"port": "switch",
"channel": "a",
"flags": { "W": true, "T": false }
},
{
"id": "status",
"name": "Status 1",
"ga": "1/4/1",
"dpt": "1.001",
"port": "status",
"channel": "a",
"flags": { "W": true, "T": true }
}
],
"channels": [{ "id": "a", "label": "Living room", "equipment": { "type": "lamp" } }]
},
{
"id": "p2",
"name": "One-key push-button · entrance",
"address": "1.2.10",
"kind": "pushButton",
"behavior": "pushButton/v1",
"description": "One shutter key: a long press reverses direction through 2/1/1; a short press stops through 2/2/1. Its 2/1/1 object listens to the bus. If device 1.1.10 lowers the shutter, the next long press raises it.",
"objects": [
{
"id": "md",
"name": "Key 1 long press",
"ga": "2/1/1",
"dpt": "1.008",
"port": "input",
"flags": { "W": true, "T": true }
},
{
"id": "st",
"name": "Key 1 short press",
"ga": "2/2/1",
"dpt": "1.007",
"port": "input",
"flags": { "W": true, "T": true }
}
],
"buttons": [
{
"id": "button-0",
"label": "Key 1",
"short": { "object": "st", "value": 0 },
"long": { "object": "md", "value": "toggle" }
}
]
},
{
"id": "p3",
"name": "Push-button · corridor",
"address": "2.1.5",
"kind": "pushButton",
"behavior": "pushButton/v1",
"objects": [
{
"id": "key1",
"name": "Key 1",
"ga": ["1/3/1", "1/4/2"],
"dpt": "1.001",
"port": "input",
"flags": { "W": true, "T": true }
}
],
"buttons": [
{
"id": "button-0",
"label": "Key 1",
"press": { "object": "key1", "value": "toggle" },
"led": "key1"
}
]
},
{
"id": "c2",
"name": "Switching actuator",
"address": "2.1.6",
"kind": "switchActuator",
"behavior": "switchActuator/v1",
"objects": [
{
"id": "cmd",
"name": "Channel 1",
"ga": "1/3/1",
"dpt": "1.001",
"port": "switch",
"channel": "a",
"flags": { "W": true, "T": false }
},
{
"id": "status",
"name": "Status 1",
"ga": "1/4/2",
"dpt": "1.001",
"port": "status",
"channel": "a",
"flags": { "W": true, "T": true }
}
],
"channels": [{ "id": "a", "label": "Corridor", "equipment": { "type": "lamp" } }]
},
{
"id": "shutterActuator",
"name": "Shutter actuator",
"address": "2.1.20",
"kind": "shutterActuator",
"behavior": "shutterActuator/v1",
"downstream": true,
"objects": [
{
"id": "md",
"name": "MD 1",
"ga": "2/1/1",
"dpt": "1.008",
"port": "move",
"channel": "shutter1",
"flags": { "W": true, "T": false }
},
{
"id": "st",
"name": "Stop 1",
"ga": "2/2/1",
"dpt": "1.007",
"port": "stopStep",
"channel": "shutter1",
"flags": { "W": true, "T": false }
},
{
"id": "pos",
"name": "Position 1",
"ga": "2/4/1",
"dpt": "5.001",
"port": "positionStatus",
"channel": "shutter1",
"flags": { "W": true, "T": true }
}
],
"channels": [
{
"id": "shutter1",
"label": "Shutter 1",
"parameters": { "estimatedTravelTimeMs": 12000 },
"equipment": { "type": "shutter", "parameters": { "actualTravelTimeMs": 12000 } }
}
]
}
],
"options": { "speed": 1, "filterTables": false }
}
For a single-router installation, the legacy "ipRouter": { "address": "1.1.0" } form is also accepted when that address belongs to a coupler.
#What a supervisor sees
An IP supervisor receives the telegrams that couplers route toward the IP network. A supervisor on a twisted-pair line ("medium": "TP") sees traffic on its own line. Coupler filter tables are derived from declared group-address associations. If a supervisor is omitted from those tables, its desired group traffic can be filtered out; "inFilterTables": false reproduces that situation.
A coupler can alternatively route or block all group telegrams in one direction:
"topology": {
"ip": "lineCouplers",
"couplers": [{ "address": "1.1.0", "up": "route" }]
}down controls traffic from the primary to the secondary side; up controls the reverse direction. Each accepts "filter" (default), "route", or "block". Use Filter tables in the diagram toolbar to inspect each coupler.
#Configure topology in the designer
The designer's Topology section edits areas, lines, IP routing, backbone, and main lines without hand-writing JSON. Its coupler panel exposes directional routing and filter tables. A supervisor card controls its medium and filter-table inclusion. See the designer guide.