Skip to Content

Four fields, four layers, and not one live value

nothing plugged in yet
KNXD Guide · Part 3

Four fields, four layers, and not one live value

This part closes the first stretch of the guide, and it is the stretch installers are most tempted to skip, because you fill nothing in. Chapter 7 separates a configuration field from a placeholder, a placeholder from a port, and a port from network exposure. Chapter 8 turns that separation into a four-layer evidence map and gives you a test for every sentence you are about to write down. Neither chapter prints a live host, address or port number, neither opens a listener or touches a firewall, and both are worth the half hour because every wrong assumption made here comes back later as a wrong write on somebody's bus.

4 fields
What the pinned Add-on 0.6.1 options schema actually declares
4 layers
Template, process, network, bus — each needs its own evidence
0 live values
No host, IP, port, URL or address leaves this exercise
Why this part is paperwork

Two chapters where the output is a sheet of paper

Chapters 7 and 8 both take about fifteen minutes, and neither one produces a working configuration. Chapter 7 produces a four-column responsibility sheet. Chapter 8 produces a four-box responsibility map. That is the whole deliverable.

The bottom line of Chapter 7 is that configuration fields, placeholders, ports and network exposure are four distinct concepts, and you are to create only a responsibility list — not enter live values, not open ports, not change networks. The bottom line of Chapter 8 is that a listener is a role that waits to receive work: its presence in a configuration proves neither endpoint reachability nor an established connection or tunnel, and it says nothing about KNX bus status.

You have used ETS. You know what a group address does when you send to it. That is exactly why this matters: on the bus side you have decades of tooling that tells you the truth about the wire, and on the IP side you are about to start reading status text that looks equally authoritative and is not about the wire at all.

In plain terms

knxd is an interpreter standing in a doorway between two rooms. The bus is in one room and Home Assistant is in the other, and neither of them speaks the other's language, which is the only reason the interpreter has a job. Now watch what the interpreter can actually tell you. That she has turned up. That she is standing in the doorway. That somebody in the far room called out to her. She cannot tell you that the meeting in the first room reached a decision, because she was not in it. Every status you are about to read from knxd is a fact about one room or about the doorway. None of them is a fact about both rooms at once.

Chapter 7 hands you the vocabulary for the doorway — fields, placeholders, ports, exposure — and Chapter 8 stacks those into the four layers you are allowed to make claims about, in order and one at a time.

What you need in front of you

A blank responsibility sheet. No ETS project, no host information, no network settings. If the numbers you are tempted to write down came out of a log or a screenshot, stop sharing that material and follow the guide's safe log-sharing guidance instead. Do not go and read the live environment merely to fill in a form.

What is off-limits in both chapters, and stays off-limits. No real individual address or group address. No real client ranges, hosts, IPs, ports, URLs, interfaces, device paths, serial numbers or credentials. Do not enable listeners, modify firewalls, routing or network interfaces, and do not perform connection, tunnel, socket or reachability tests. Do not connect to the KNX interface or the bus. Group reading, group writing, telegram transmission, ETS programming or downloads, and physical control are all prohibited here. Placeholder text from these chapters cannot be pasted into settings.
Nothing is installed or started in this part. These chapters do not add the repository, install it, or start it. Any change still requires complete isolation, written approval, and approved immutable artifact or image provenance — and the site currently lacks an approved digest, so execution is blocked. That constraint sits above anything you decide on paper.

One more piece of honesty about what this guide is. Every claim in it is bounded by two pinned commits: the KNXD Add-on 0.6.1 source and the KNXD 0.14.72 source. Pinned sources support the documented scope and nothing else. Publication is not validation of any local environment, hardware, network or KNX bus, and it is not authorization to operate anything.

Stop conditions, written down before you start. Chapter 7 stops if a step would enter or expose real hosts, endpoints, individual addresses or group addresses, or if it requires opening listeners or firewalls or establishing a live connection. Chapter 8 stops if a step requires provisioning, probing or connecting to a real network endpoint, or if it would claim that a KNX interface or bus works — because listener status cannot prove that. Agreeing to these before you begin is easier than arguing about them halfway through.
Four fields in the schema

What the pinned options schema declares, and what it refuses to declare

The pinned Add-on 0.6.1 schema treats address as a required string, client_address as a required range string, ip_address as an optional string, and dest_port as an optional port. That is a field contract. It describes the shape of what may be typed, and stops there.

The pinned sources do define defaults for some of those fields. This guide does not disclose the values, and the reason is the one you will meet again in the FAQ: a value printed in a tutorial gets pasted into a real installation by somebody who is in a hurry.

FieldWhat the pinned schema saysWhat it does not prove
address Required. A string. An individual-address role in the field contract That any address has been configured, or that an ETS project exists at all
client_address Required. A range string, so its role is a range rather than a single value That a range has been reserved, agreed with anybody, or is free on a real installation
ip_address Optional. A string, in the endpoint-host role That an endpoint exists, answers, or is the one you think it is
dest_port Optional. A port, so its role is a door number That a listener was created, a port is open, or exposure is safe

Notice that “required” and “optional” are statements about the form, not about your building. A required field with nothing in it is a form that will not submit. It is not a bus that will not run.

flowchart TD
  S["Add-on 0.6.1 options schema
knxd/config.yaml"] --> R["Required"] S --> O["Optional"] R --> R1["address
string"] R --> R2["client_address
range string"] O --> O1["ip_address
string"] O --> O2["dest_port
port"] R1 --> N["A field contract, nothing more.
Required or optional says nothing about
a configured project, an existing endpoint,
a created listener, or safe exposure"] R2 --> N O1 --> N O2 --> N
The schema, split two waysTwo required fields and two optional ones, and all four arrive at the same closing box. The split changes what the form will accept and nothing else.
In plain terms

A blank line on a form tells you what kind of thing is expected on it: a name, a date, a house number. Writing a house number on the line does not build the house. And the house number only ever points at one door — whether anybody can actually walk up to that door is decided somewhere else entirely, by the entrance to the estate, the paths across it, and whoever is on the gate. Four separate things, and the form knows about exactly one of them.

The six steps, in this order

Chapter 7's procedure is six steps and the order carries the safety. Each one closes off an inference the next one would otherwise let you make.

  1. Step 1

    Mark the column role first

    Separate the address class, the range class, the endpoint-host class and the port class. Write categories only. No values of any kind, not even ones you consider harmless.

  2. Step 2

    Use placeholder text instead of values

    In the public form, write only these four, and mark each one as not deployable:

    individual-address placeholder
    client-range placeholder
    endpoint-host placeholder
    endpoint-port placeholder

    The wording is deliberately semantic. It reads as a description of a role, and it does not read as something you could paste.

  3. Step 3

    Separate the port from the listener

    A port is like a door number. A listener is a service waiting for work. Do not represent them as a single state. The next section is entirely about this step, because it is the one that gets collapsed most often.

  4. Step 4

    List exposure responsibilities as separate review items

    Binding scopes, firewalls, routing and accessible networks are four independent review items, and every one of them is marked Not Evaluated. Section five of this article takes them one at a time.

  5. Step 5

    Add the non-conclusion

    Write it out in full: the address has not been configured, the port has not been opened, the listener has not been established, the endpoint has not been verified, and the bus has not been certified. Five statements. A sheet without them will be read as a design by the next person who picks it up.

  6. Step 6

    Remove live values before delivery

    If any numeric address, port, host, URL or environment name has appeared in the form — and one usually has, because somebody pasted it to “make it clearer” — delete it before the sheet goes anywhere.

Do not write a set of plausible-looking fake numbers. This is the request that comes up every time, and the answer in the source is flat: numbers that appear fake can still be copied, and can still be misidentified as real. Semantic placeholder text is safer precisely because nobody can paste it into a settings field and have it look like it belongs there.

Correctly formatted fields do not prove KNX bus, ETS, integration or device performance. A sheet that passes every format check is still a sheet.

Port, listener, exposure

A door number, somebody at the desk, and an outside line

Step 3 of the sheet deserves its own section, because collapsing a port into a listener is the single most common error in this whole area, and because it survives into every later part of the guide if you let it through here.

In plain terms

Think of a reception desk. Somebody is on duty at the desk. The outside line reaches the desk. The work behind the desk is finished. Those are three different sentences and you can be wrong about any one of them while being right about the other two. Somebody being on duty does not mean the outside line has been connected. The outside line being connected does not mean the equipment in the back has done anything at all. People collapse the three because in a good week they happen to be true together.

The four roles map onto each other cleanly once you have the analogy, so it is worth writing them side by side before you need them under pressure.

flowchart LR
  subgraph K["In knxd"]
    direction LR
    K1["A port field
in a form"] --> K2["A listener
waiting for work"] --> K3["An endpoint
that is reachable"] --> K4["The KNX bus
responds"] end subgraph B["In a building"] direction LR B1["A door number
on the plan"] --> B2["Someone sitting
at that desk"] --> B3["An outside line
to that desk"] --> B4["The work behind
the desk is done"] end
The same four steps in two vocabulariesTwo rows of four boxes, one labeled In a building and one labeled In knxd, reading the same way across. Every arrow is a separate piece of evidence: nothing in one box establishes the box after it.

Chapter 8 states the responsibilities in the guide's own terms. The listener waits for requests from the network side. The network interface handles data entering and leaving. KNXnet/IP is the network-side communication context. The KNX bus is another layer of responsibility altogether.

The listener

A role that waits to receive work. Its appearance in a configuration file is a statement about that file. Whether the process is running, and whether anything is bound, are separate questions with separate evidence.

The network interface

Responsible only for data entering and leaving. It is not the listener, and it cannot stand in for the bus. Naming an interface in a document establishes neither of the other two.

KNXnet/IP

The network-side communication context, and the term this chapter uses for that side of the responsibility line. Reachability, connectivity, tunneling, a forwarding interface, or bus performance cannot be claimed from it without independent evidence.

The KNX bus

The layer your ETS instincts belong to, and the one furthest from anything on this sheet. Network-side terminology never establishes bus status, in either direction.

There is a technical note behind Chapter 8 worth stating plainly. The managed INI template shipped with Add-on 0.6.1, at knxd/rootfs/etc/knxd.ini, contains TCP server and listener related configuration vocabulary. That demonstrates how the template expresses a server role. It does not demonstrate generated post-configuration settings, sockets, bind locations, routes, firewalls, or remote endpoints, and it is not evidence that any of those exist.

A template that reads as finished is still a template. The pinned INI file looks configured, because a shipped default is written to look configured. Record it as a template role. It does not prove that anything was generated, applied, or listened on.
The four evidence layers

Four boxes, and a test for every sentence

Chapter 8 asks for four empty boxes, with no endpoints and no values filled in. What goes in each box is fixed before you start, which is the point — you are not investigating, you are recording what you are entitled to say.

BoxWhat you record in itWhat this chapter always writes
Template role Whether the pinned file mentions server or listener The only box with a direct origin. It gets an actual statement
Process role Whether independent evidence exists for the process or listener No independent evidence here, so the box stays unestablished
Network role Whether the endpoint is reachable Always not tested; not established
Bus role Whether there is any evidence about the KNX bus Always unconfirmed

This drawing limits what the document may claim. It is not a network topology, and it cannot be used to establish a connection. Nobody should be able to take this page and wire something from it.

The six steps, again in order

  1. Step 1

    Write the document's conclusion first

    The sentence is: pinned template contains listener/server setting role. Not “monitored.” Not “listening.” Writing the permitted sentence before you look at anything else stops the stronger one from forming.

  2. Step 2

    Put that sentence in the first box

    It belongs to the template layer, and only there. The remaining three boxes stay unestablished or unproven.

  3. Step 3

    Separate the network interface

    Note that the interface is responsible only for data entering and leaving. It does not equal the listener, and it cannot represent the bus.

  4. Step 4

    Block the reachability inference

    In the network box, write: no endpoint data, probes, connections, or tunnels. Writing the absence down is what stops somebody reading the empty box as an oversight and filling it in for you.

  5. Step 5

    Block the bus inferences

    In the bus box, write all four separately:

    No evidence of telegrams
    No evidence of group operations
    ETS programming or downloads not executed
    No evidence of physical control

    Four statements, not one summary. Each of the four is a claim somebody will otherwise make on your behalf.

  6. Step 6

    Limit every conclusion

    Go back through the document and replace any unsupported assertion about an endpoint, a connection, a tunnel or the bus with a statement grounded in the pinned template. This is a pass over what you already wrote, not a step you do while writing.

Step 6 is easier with a test you can apply to one sentence at a time.

flowchart TD
  A["A sentence you are about
to write on the sheet"] --> B{"Does it only describe what
the pinned file contains?"} B -->|"yes"| C["Layer 1, template.
Keep it as written"] B -->|"claims a listener"| D["Layer 2, process.
No independent
evidence"] B -->|"claims reachability"| E["Layer 3, network.
Not tested;
not established"] B -->|"claims the bus"| F["Layer 4, KNX bus.
Unconfirmed"] D --> G["Rewrite it, grounded
in the pinned template"] E --> G F --> G
One sentence, one layerFour answers leave the diamond and two boxes end the diagram. The answer that stays inside the pinned file is kept as written; the three that claim a listener, reachability or the bus all arrive at the same rewrite box.
The rule underneath all of it. The previous layer can never automatically prove the next layer. Template does not prove process. Process does not prove reachability. Reachability does not prove the bus. Read backward it is just as true, and just as often forgotten: a bus that works proves nothing about whether your document was accurate.
Four reviews, none of them done

Exposure is not one question

Step 4 of the Chapter 7 sheet lists exposure as four independent review items: binding scopes, firewalls, routing, and accessible networks. All four are marked Not Evaluated. That is not a placeholder for work you will do later in this part — it is the finished state of those boxes here.

In plain terms

Ask whether a courier can hand a parcel to somebody on the third floor and you have not asked one question, you have asked four. Is the street open. Does the gate let the van in. Is there a route from the loading bay up to that floor. Is the person on reception's list. Four people can each stop the parcel, none of them tells the other three, and every one of them will happily assure you that their bit is fine. “Can it get through?” is never a single fact.

flowchart TD
  Q["Can anything out there
reach this listener?"] --> A["Binding scope
not evaluated"] Q --> B["Firewall
not evaluated"] Q --> C["Routing
not evaluated"] Q --> D["Reachable network range
not evaluated"] A --> R["Answer for this chapter: unproven.
And nothing here authorizes opening
a port to go and find out"] B --> R C --> R D --> R
One question, four reviewsThe opening question fans out into four review boxes, each marked not evaluated, and all four rejoin at a single closing box. None of the four is answered anywhere in this part of the guide.

Two requests turn up at this point in almost every project, and both have the same answer in the source. Somebody asks you to open a port so the setup can be verified: stop, because this chapter does no live network changes or detection. Somebody asks you to probe whether the endpoint is reachable: stop, because there are no reachability, wiring or tunnel procedures here. Neither refusal is pedantry. Opening a port to check a document is how a documentation task turns into an unreviewed change on a building's network.

Do not hand over the endpoint, either. A public teaching text does not contain connection details. If somebody asks for the endpoint so they can “just try it,” that request is out of scope for this material, and the fact that they are asking you rather than the site owner is itself worth noticing.

Before you call Chapter 7 done

Four checks, and the result is not a usable configuration.

  • You can explain that a field is a space, placeholder text is a prompt, a port is like a door number, and network exposure decides who can reach that door.
  • All placeholder text is clearly marked For document classification only; not deployable.
  • The table contains no addresses, ranges, hosts, IPs, port numbers, URLs, or other context-identifying information.
  • You did not modify Home Assistant, a listener, a firewall, routing or the network, and you did not operate ETS or the bus.

Before you call Chapter 8 done

Four more. The finished product is a four-layer responsibility map in which only the template roles have a direct origin; every other layer stays unconfirmed.

  • You can explain that the listener is like a reception desk waiting for incoming calls, which does not prove the outside line is reachable.
  • You divided templates, processes and listeners, reachability, and the KNX bus into four layers.
  • Your drawing contains no host, IP, port, URL, interface name, credentials, or other environment-identifying information.
  • You did not provide probing, wiring or tunneling procedures, and bus, ETS, integration and physical-control results all remain unconfirmed.
When the sheet drifts

Ten ways a responsibility sheet turns back into a claim

Between the two chapters the source lists ten failure modes, five for each. They are all the same shape: a document that was careful when it was written gets read one layer stronger than it was meant.

What happensWhat has actually gone wrongWhat to do about it
Readers ask to see format examples A reasonable request that would put copyable values on a public page Use semantic placeholder text only. Do not provide numbers that look directly applicable
Placeholder text is treated as a setting value The placeholder reads like something to paste Add “Not applicable” next to each placeholder and remove copyable snippets
A port number is mistaken for a listening service Two layers collapsed into one, which is step 3 of the sheet undone Return the conclusion to the door role. Listener state requires another layer of evidence
A listening service is mistaken for public exposure The exposure reviews were skipped and the conclusion drawn anyway State that bindings, firewalls, routes and network ranges have not been evaluated
Somebody asks you to open a port to verify it A documentation task is about to become a live network change Stop. This chapter does no live network changes or detection
The template looks fully configured A shipped default is being read as a running system Continue to record it only as a template role. It does not prove that anything was generated, applied, or listened on
The word “listener” appears in a log Evidence for one layer being spent on three That belongs to the process and listener layer only. Follow the guide's status-interpretation guidance and leave reachability and bus status unconfirmed
Somebody asks for the endpoint Connection details being requested from teaching material Do not provide it. Public textbooks do not contain connection details
Somebody wants to detect whether it is reachable A probe is being proposed as a shortcut through the network layer Stop. There are no reachability, wiring or tunnel procedures in this chapter
Somebody treats KNXnet/IP as a bus result Network-side vocabulary being read as bus evidence Return to the four-layer map. Network-side terminology does not establish KNX bus status
Somebody says“The port is set, so it is listening.” — that is layer one being spent on layer two.
Somebody says“It is listening, so ETS will find it.” — that is layer two being spent on layer three.
Somebody says“ETS found it, so the lighting group will respond.” — that is layer three being spent on layer four, and it is the one that turns into a callout at two in the morning.
Questions people ask

The ten that come up every time

Can placeholder text be pasted into the Add-on settings?
No. It only helps you understand the field roles. It is not a schema value, and it will not behave as one.
Is a port a switch?
No. It is more like a door role. Whether a service is listening, and who can reach it, are two further responsibilities with their own evidence.
If I have selected the field, does that mean there is no network exposure?
No. Using a field describes only the schema. Exposure requires additional review of listeners, bindings, firewalls, routes and network scopes — the four items this part marks Not Evaluated.
Can I write a set of fake numbers instead?
No. Numbers that appear fake can still be copied, and can still be misidentified. Semantic placeholder text is safer.
The fields pass their format check. Does that mean the connection will work?
No. Structure, listener, endpoint reachability and the KNX bus are different evidence layers, and a clean format check speaks only for the first.
The template has a server section. Does that mean the listener has been created?
No. A template declaration and an execution status are different layers of evidence.
If the listener exists, does that mean the remote end is reachable?
No. Binding, routing, firewalls and network scopes all require additional evidence, and none of them is probed here.
Can you give me the wiring or tunnel steps?
No. This part establishes responsibility boundaries. It provides no endpoints and no wiring procedures.
Does endpoint reachability prove that the KNX bus is operating?
No. Network reachability and KNX bus operation are different evidence layers. This is the same wall from the other side, and it is worth checking yourself against both directions of it.
How does ETS use this listener?
This part provides no ETS connection, programming, download, or group-operation procedure, and the pinned sources do not support such procedures either. Chapters 11 and 12 are where ETS enters the guide, and they arrive with their own preflight.
Next

Where to go from here

keep going

The sheet is done. Now the file that fills it in.

Part 4 opens the second stretch of the guide: classifying INI sections, options and managed templates, then the link layer, then the preflight you run before ETS is allowed anywhere near this. The four layers you just drew are the thing that keeps those chapters honest.

Open the full guide

Part 3 of the WoowTech KNXD Complete Tutorial series on the Apporo blog.

Adapted from the WoowTech KNXD complete tutorial, produced by WoowTech and republished by Apporo.

Versions and claims are bounded by the pinned sources. Publication does not represent validation of any live site, hardware, network or KNX bus, and is not an authorization to operate KNX, ETS, Home Assistant, group objects or physical control.

Light · Air · Water · Control · apporo

in KNXD
Installed, running, stopped — and none of it says the bus is up