Skip to Content

The entity is not the address, and a classification ticket is not permission

sorting before switching
KNXD Guide · Part 6

The entity is not the address, and a classification ticket is not permission

This part closes the middle stretch of the guide with the two chapters an experienced installer is most likely to wave through. Chapter 15 separates a Home Assistant entity from a KNX individual address from a KNX group address, and makes you write down which is which without writing down a single value. Chapter 16 takes every action anyone has proposed, breaks it into pieces, and drops each piece into one of four trays — safe, isolated test, approval required, never automate. Neither chapter connects to anything. Both exist because the alternative is finding out which category an action belonged to after it has already moved somebody's blinds.

3 roles
Entity, individual address, group address — not one of them substitutes for another
4 categories
Safe, isolated test, approval required, never automate. Every atomic action lands in exactly one
0 telegrams
Nothing is connected, started, read, written or programmed in either chapter
Two chapters, no wires

Two chapters that end in paper, with nothing plugged in

Chapter 15 takes about twenty minutes and produces a small stack of classification cards. Chapter 16 takes about twenty minutes and produces one classification ticket. Neither creates a Home Assistant entity, neither changes a group setting, and neither runs a test. That is the entire system change for this part: none.

The bottom line of Chapter 15 is that label cards are used only to distinguish the roles of a Home Assistant entity, a KNX individual address, and a KNX group address. Each card records field roles and categories. It does not record values, mappings, payloads, service calls, or control examples. The bottom line of Chapter 16 is that you classify everything before you do anything: the proposal is divided into safe, isolated-test, approval-required and never-automate work, and where a gate is incomplete you stop on paper.

You have commissioned buildings. You already know what a group address does when something writes to it, which is exactly why this part is aimed at you rather than around you. The risk here is not that you will misunderstand KNX. It is that Home Assistant hands you a second vocabulary — entities, states, service calls — that looks like it maps onto the first one, and reads as though it were describing the same wire. It is not describing the wire at all.

In plain terms

Nobody signs off a distribution board by reading the schedule stuck to the inside of the door. The schedule tells you what somebody intended. The board tells you what is actually wired. These two chapters produce schedules, and everything they produce is a statement of intent. The moment a schedule is read as a statement about the wiring, you have made the one mistake the rest of this guide spends its time undoing.

What you need in front of you

For Chapter 15: a few blank cards and the offline worksheet from Chapter 14. No Home Assistant material and no KNX material are required, and you should not go and fetch any. For Chapter 16: a blank classification ticket, and a description of the proposal written entirely in placeholders. No test environment is required, because no test is run.

Chapter 15 stops here. Stop if the task requires providing or guessing a real individual address, a real group address, or a home-device identifier. Creating entities, reading or writing groups, transmitting telegrams, and controlling physical equipment are prohibited. Group reads must not be automated either. The cards hold concept tags and nothing else: no identification strings, no address values, no corresponding values, no mappings, no data contents, no payloads, no configurations, no control or service calls, and no control context of the physical equipment.
Chapter 16 stops here. Connecting to a KNX bus, transmitting telegrams, reading or writing groups, and controlling physical equipment are prohibited. The chapter also stops the moment evidence of isolation, written approval, stop conditions, or recovery turns out to be incomplete. It does not connect, launch, reload, change, or collect live results, and a completed ticket is not permission to execute.
Nothing is added, installed or started in this part. Neither chapter adds the repository, installs the Add-on, or starts it. Work outside these chapters may be evaluated only with complete isolation, written approval, an approved immutable artifact or image digest, and source-to-build attestation. These chapters grant no authorization of any kind, and no amount of paperwork produced inside them creates one.

One piece of honesty about the material, because it governs every sentence below. Chapter 15 is bounded by the pinned Home Assistant KNX documentation snapshot and by a separately locked Core manifest. Chapter 16 is bounded by the pinned KNXD 0.14.72 upstream files and the KNXD Add-on 0.6.1 files. Pinned sources support the documented scope, and nothing more. Publication is not validation of any local environment, hardware, network or KNX bus, and it is not authorization to operate anything.

Three roles that will not swap

Three roles that will not stand in for one another

A Home Assistant entity is a user-facing semantic object. A KNX individual address identifies a KNX device. A KNX group address is a shared communication topic defined by the KNX design. Three roles, three different jobs, and no two of them are the same kind of thing.

In plain terms

Think of a members' club with three sorts of paper. A record card lets anybody understand one thing at a glance. A membership card identifies exactly one member. A subject line on a circular tells several members which shared topic a message belongs to. All three can sit in the same filing cabinet, all three can carry the word “lighting” on them, and none of them will do the other two jobs. Handing somebody a subject line when they asked for a membership card is not a small clerical error. It is the wrong category of object.

They can appear in the same classification system, and in a real project they do. That is what makes them easy to blur. It does not make them interchangeable fields. How an actual project associates the semantic object with the KNX design has to be determined separately by that project and its authorization evidence. This chapter records the classification only — entity role, device identity role, shared communication topic role — and records no values and no mappings at all.

flowchart TD
  C["One classification card
paper only, no values"] --> E["Entity role
a user-facing semantic
object in Home Assistant"] C --> I["Device identity role
a KNX individual address
identifies one KNX device"] C --> G["Shared topic role
a KNX group address is a
topic defined by KNX design"] E --> EX["Off the card:
entity id, state, service call"] I --> IX["Off the card:
address value, device identifier"] G --> GX["Off the card:
address value, payload, direction"]
Three columns that never meetOne card at the top, three roles beneath it, and under each role the things that stay off the card. Read left to right: the entity column, the individual-address column, the group-address column. Nothing crosses sideways, because a mapping between the columns is exactly what this exercise refuses to write down.
RoleWhat it isWhat the card recordsWhat never goes on the card
Home Assistant entity A user-facing semantic object — a software record, not a field device The words “entity role”, plus a general purpose label Entity identifiers, states, service calls, configuration structures
KNX individual address The identity of one KNX device The words “device identity role” Any address value, any device identifier, any serial number
KNX group address A shared communication topic defined by the KNX design The words “shared communication topic role” Any address value, payload, data direction, type or content

There is a second habit to break, and it is the one that survives longest in people who are good at their job. A clear label is not evidence. Even when the label text is unambiguous, you cannot guess the field value, the mapping, the data direction, the type or the state from the name. In the absence of authorization evidence, the honest entry is always pending confirmation — and leaving it there is the whole skill.

A card certifies nothing. A finished card does not certify any behavior or result for a Home Assistant entity, an integration, the KNX bus, an ETS project, or a device. It certifies that you have sorted three roles on paper. That is a real and useful thing to have done, and it is the only thing you have done.
Four spaces on a card

Four spaces on a blank card, and nothing else on it

Draw only four spaces on each blank card. Do not imitate the settings screen of Home Assistant or of ETS, and do not lay the fields out in the order a real form uses them. A card that looks like a form invites somebody to fill it in like one, and the first thing they will reach for is a value.

Space 1Purpose label. Write only a general software usage. If the general purpose still reveals home, room, person or device information, switch to a more abstract label.
Space 2Data semantics. Record the type of meaning the model needs. Where the pinned source does not support it, the entry is pending source confirmation.
Space 3Field role. One of three classifications only: entity, device identity, or shared communication topic. No value, no mapping, no direction, no content, no format.
Space 4Evidence status. One of three entries only: supported by a pinned source, pending confirmation, or not applicable.

At the end of the card page, write one more line, outside the four spaces:

Cannot be imported, cannot be called, and cannot be controlled

You do not need to add examples to make the card look complete. A card with three fields answered and one honestly marked as pending is finished. A card padded out with a plausible-looking illustration is worse than an empty one, because the illustration is the part that gets copied.

The six steps

  1. Step 1

    Create the purpose cards

    One general purpose per card, and one only. Avoid family names, room names, equipment names and people's names. If two purposes want to share a card, they are two cards.

  2. Step 2

    Add the data semantics

    Record the type of meaning the model needs. If there is no support for it in the pinned source, the entry is to be confirmed by the source. Nobody is scored on how many blanks they filled.

  3. Step 3

    Add the field-role section

    Classify as entity, device identity, or shared communication topic. Do not write any value, mapping, direction, content or format into this section. This is the section that leaks first, and it leaks because the classification feels incomplete without an example beside it.

  4. Step 4

    Add the evidence-status field

    Mark the documentation concept and the Core version metadata separately. They are two different sources with two different scopes, and writing the two of them down as though they were one piece of execution evidence is precisely the error this field exists to catch.

  5. Step 5

    Run a de-identification check

    Go back over the finished cards and remove identification strings, home contexts, payloads, calls, configuration structures, and any control hints. Do this as a separate pass. Things that looked harmless while you were writing them read differently when you are only looking for them.

  6. Step 6

    Close the card set

    Write across the whole stack: Only for paper review; physical, integration, and bus status unknown. The stack now says what it is, to anybody who finds it on a desk six months from now without you standing next to it.

Completion check

You are done when you can distinguish the entity, the device identity, the shared communication topic and the evidence at a glance. Anything that needed a guess stays marked pending confirmation.

  • You can state the three roles without reaching for an example: the entity is the user-facing record card, the individual address is the identity of a KNX device, the group address is the shared communication topic that KNX is designed around.
  • You can say why they are not interchangeable, and each card carries only purpose, data semantics, field role and evidence status.
  • All purposes use de-identified, general labels.
  • No card carries an address value, a mapping, an identifier, a payload, a service call, a configuration structure, or a control example.
  • No name is being relied on as evidence of data direction, type, or site status.
  • No entity was created, and no group action, telegram transmission or device control was performed or is permitted.
The four trays

Four trays, and the strictest one always wins

In plain terms

Picture four trays at the end of a workbench. The first tray holds work you can do right now with nothing switched on. The second holds work that needs the bench isolated, a colleague present, and an agreed way of putting everything back. The third holds work you may not touch until the client has signed something. The fourth is a locked drawer, and nothing ever comes back out of it — not with a signature, not with a better tool, not at three in the morning when it would be quicker. Every action in the proposal goes into exactly one tray before any of them is picked up.

The four names are the safe, isolated-test, approval-required and never-automate action matrix. What follows is what each tray will hold and, more importantly, what it refuses to hold.

CategoryWhat may go in itWhat it never permits
Safe Offline read-only pinned sources, or stubs that do not access the execution environment at all Starting daemons, touching endpoints or devices, sending KNX telegrams. Viewing a live or running environment is never in this class
Isolated test A proposal that has clear written approval, a non-production test environment, administrator presence, limited network exposure, and a proven stop-and-recovery plan. Physical bus-isolation testing is limited to separately approved exercises that genuinely require it Proceeding with any one condition missing. For lifecycle-only exercises, all KNX interfaces, USB and device mappings, physical buses, production KNX networks, ETS projects and physical loads must remain disconnected
Approval required Any proposal to review or change the running environment, once it has clear written approval, a limited maintenance scope, and data identification handling. Read-only viewing of a live environment sits here Transmitting KNX telegrams, performing ETS actions, physical control. Approval does not make read-only viewing automatically safe
Never automate Nothing. This tray is where actions go to be removed from the proposal Group reading, group writing, telegram transmission, ETS programming or downloads, connecting to a KNX interface or bus, collecting or publishing environment identification data, and physical control — under any circumstances, and the test bus is no exception

Two rules make the matrix work, and both of them are about how you cut up the proposal before you start sorting. Classification considers atomic actions, not proposal titles. And when a proposal contains several actions, it is split, and the strictest category among them is the one that governs.

flowchart TD
  A["One atomic action from the proposal"] --> B{"Group read or write, telegram,
ETS programming or download,
bus connection, physical control?"} B -->|"yes"| NA["NEVER AUTOMATE
Remove it. No gate reopens this"] B -->|"no"| C{"Does it touch the live or running
environment, read-only included?"} C -->|"yes"| AR["APPROVAL REQUIRED
Written approval, limited
scope, de-identification"] C -->|"no"| D{"Does it start, install, add a
repository, or reach the
execution environment?"} D -->|"yes"| IT["ISOLATED TEST candidate
Check every gate first"] D -->|"no"| SF["SAFE
Offline read-only pinned sources,
or a stub with no side effects"]
Three questions, four endingsEvery yes drops out of the column to the left — never automate first, then approval required, then the isolated-test candidate near the bottom. Only an unbroken run of three no answers walks down the right-hand side and reaches SAFE, the box in the bottom right corner. Run one atomic action through it at a time; a whole proposal put in at the top will come out mislabeled.
The fourth tray has no door in it. There are no gates that change a never-automate classification. Approval does not move an action out of it, a test bus does not move it, and neither does an isolated environment. A guide or an automation may not perform those actions under any circumstances, and an action landing there is removed from the proposal rather than rewritten.
If it cannot be classified, it is not safe. An action you are unable to place does not default to the first tray. It stops where it is until it can be broken down further or described well enough to sort.
The ticket and its gates

The classification ticket, and the five gates it has to check

The ticket is completely offline. It carries seven fields, and any field you cannot answer gets the same entry:

Unknown and Stop
In plain terms

A job sheet that says “check the lighting circuit” tells you nothing about whether somebody is going to open a live panel. The title is the part everyone agrees on and the part that hides the risk. Breaking it into the actions it is really made of — look at the drawing, isolate, open the cover, test, close up — is what turns one comfortable sentence into five decisions, four of which are fine and one of which needs a second person present.

Ticket fieldWhat goes in it
Goals and non-goalsOne sentence on what you want to answer, and a statement of which systems you will not touch
Atomic actionsOne action per column: an offline read, a live or running environment view, a change, or a transfer. The two kinds of reading are not to be blurred together as safe
Environment categoryOffline, isolated-test candidate, or running environment. No identifying information
Approval evidenceThe approving role, the scope, and the validity policy. Verbal consent does not count
Isolation evidencePhysical isolation, non-production equipment, and physical loads disconnected from the production environment
Stop and recoveryTrigger conditions, baselines, responsible roles, and escalation methods — recorded first, not afterwards
Evidence limitWhat may be said at most once the work is complete, and what must not be said

The seven steps

  1. Step 1

    Write down the smallest question

    Strip out every sentence that presets a live-environment outcome. What is left should be a question you want reviewed, not a result you are expecting to confirm.

  2. Step 2

    Break it into atomic actions

    Separate reading, viewing, changing, starting and sending. If an action is not clearly one of those, stop rather than guess — an action you cannot name is an action you cannot classify.

  3. Step 3

    Identify the never-automate actions first

    Group reading and writing, telegram transmission, ETS programming or downloads, and physical control are not allowed. Wherever any of these appear, mark them never automate and remove them. Doing this first means the rest of the sort happens on a proposal that no longer contains them.

  4. Step 4

    Classify the approval-required actions

    Every view of, or change to, the live or running environment is marked approval required, and read-only viewing is no exception. Without clear written approval, a limited scope and de-identification, this is a stop.

  5. Step 5

    Check the isolated-test gate, item by item

    Verify written approval, a non-production test environment, administrator presence, limited network exposure, and a proven stop-and-recovery plan — each one separately. For a lifecycle-only exercise, record that all KNX interfaces, device mappings, physical buses, production networks, ETS projects and physical loads remain disconnected. Adding a repository, installing, or starting software also requires approved immutable provenance.

  6. Step 6

    Confirm the safe class

    Only offline read-only pinned sources, or placeholder work that never accesses the execution environment and has no side effects, may be marked safe. Anything that got into this tray by elimination rather than by qualifying goes back.

  7. Step 7

    Seal the ticket

    Note the reasons for stopping, the evidence limit, and the items still pending. Mark the whole ticket not yet executed, because that is what it is.

flowchart TD
  G1["Clear written approval"] --> G2["Non-production test environment"]
  G2 --> G3["Administrator present"]
  G3 --> G4["Limited network exposure"]
  G4 --> G5["Proven stop and recovery plan"]
  G5 --> OK["Isolated-test candidate,
still not executed"] G1 -.-> X["Any one missing:
do not proceed.
Stop on paper"] G2 -.-> X G3 -.-> X G4 -.-> X G5 -.-> X
Five gates, one way out of themThe solid chain steps down the page, drifting left as it goes, and reaching the candidate box at the bottom left requires all five gates in order. Every gate also has a dotted line, and all five of those dotted lines arrive at the same stop box on the right — missing one gate and missing four look identical from here. Note what the box at the end of the solid chain says: candidate, still not executed.
Provenance sits on top of the five gates, not inside them. Joining the repository, installing, or starting must satisfy every isolation-testing gate above and carry an approved immutable artifact or image digest with source-to-build attestation. If those conditions are incomplete: stop, do not add the repository, do not install, do not start. This chapter performs none of those actions in any case.
What the paper proves

What a signed page proves, and exactly where it stops

Evidence has limits, and the limits are narrower than they feel when you are holding a folder of it. The document only proves the content of the document. The approval only proves the scope of the approval. The isolation plan only proves the preparation conditions.

flowchart TD
  D["The document"] --> DP["proves the content
of the document"] A["The approval"] --> AP["proves the scope
of the approval"] I["The isolation plan"] --> IP["proves the preparation
conditions"] DP --> N["None of the three proves a result for the daemon,
the listener, the KNX bus, the ETS project
or the Home Assistant integration"] AP --> N IP --> N
Three sources, one shared limitAcross the top, the three kinds of evidence a ticket collects. Directly beneath each one, the single claim it supports. All three arrows then converge on one box at the bottom, and that box is the sentence people skip: a full folder still says nothing about the daemon, the listener, the bus, the ETS project or the integration.
Advanced note: documented concepts and Core metadata are two different sources. The pinned source snapshots support the vocabulary of entity configuration concepts. The separately locked Core manifests support this version's integration registration and dependency boundaries. Neither proves that a card has become an entity, and neither proves a mapping, a state, or version compatibility. Keep the two apart on the card — that is what the evidence-status field is for.
Advanced note: pinned sources support diagnostic concepts, not live results. The locked knxd files support documented driver-diagnostic and startup-failure concepts. The Add-on files support only the published evidence and screenshot boundaries. Neither authorizes execution, and neither proves the status of the adapter, the daemon, the listener, the KNX bus, the ETS project, or the Home Assistant integration.

Completion check for the ticket

A valid classification ticket stops an unsafe action before it is executed. That is the test of it, and it is a test the ticket can pass while containing nothing interesting at all.

  • It contains no commands, no test programs, and no execution results.
  • Each atomic action carries exactly one of the four labels, and where two applied, the stricter one was taken.
  • Every safe-class item is an offline read-only pinned source, or placeholder work that does not access the execution environment at all and has no side effects.
  • Every isolated-test candidate shows explicit approval, a non-production environment, administrator presence, limited network exposure, disconnection conditions, stop conditions and recovery gates — all visible on the ticket.
  • Every approval-required item has clear written approval, a limited scope, and de-identification requirements, and read-only viewing of a live or running environment is listed in that category.
  • Every never-automate item has been removed, with no directives and no alternative testing methods left behind in its place.
  • All environment, bus, ETS and Home Assistant integration results remain unproven, and the ticket says so.
When the sheet drifts

The ways both exercises drift, and how to pull them back

On the cards

What you noticeWhat you do
A label has started to resemble a live field nameChange it to a general use, removing family, space, equipment and people clues
Somebody is inferring the data meaning from a nameReplace the inference with pending source confirmation. A name is not evidence of a type
A value, mapping or direction has appeared in the field-role sectionRemove it immediately, leaving only the entity, device identity or shared communication topic category
The card is starting to look ready to importRemove the setting shape and the field order, and add the mark that says it cannot be executed
Somebody asks for a service call or a control exampleRefuse. This chapter deals only with the offline model
A screen status is being treated as bus evidenceLimit the conclusion to a software observation. This chapter provides no live-environment results

On the ticket

What you noticeWhat you do
A column behaves like two categories at onceBreak it into smaller actions, and apply the stricter category first
The approval is verbal onlyIt counts as not approved. The item remains stopped
The isolation is logical onlyThat is not isolation testing. The canonical isolation gate applies, and for a lifecycle drill all KNX interfaces, device mappings, physical buses, production networks, ETS projects and loads must be disconnected
There is no restoration baselineDo not enter any change candidates. Complete the plan on paper first
Provenance for adding or installing is missingStop. Do not add the repository, do not install, do not start
Somebody suggests doing a prohibited action by hand insteadRefuse. Changing the tool does not change the safety classification
Test results are appearing on the ticketRemove the results. This is pre-execution classification only
Questions people ask

Questions that come up on both exercises

Is the semantic object the field device?
No. It is a semantic tag in software. The device on the wall is a separate thing with its own identity, and that identity is the individual address.
Are an entity, an individual address and a group address interchangeable?
No. They are, respectively, a user-facing semantic object, a KNX device identity, and a shared communication topic defined by the KNX design. This chapter creates no mappings between them.
Can I put a fictitious address on the card to make the idea clearer?
No. A fictional value can be misused as easily as a real one, and it will be copied by somebody who is in a hurry. This chapter does not include addresses at all.
Can you demonstrate the payload or the service call?
No. This chapter provides neither the information content nor the implementation form.
Does a completed card mean the entity has evidence of execution?
No. Complete means only that the classification on paper is ready for review.
Does approval move a never-automate action into the approval-required class?
No. Approval cannot change the fixed never-automate boundary.
Does using non-production equipment count as isolation testing?
No. All of the isolation, approval, scope, stop-condition and recovery gates must be in place. One of them on its own is not the gate.
Can the safe class include starting a daemon, or viewing a running environment?
No. The safe class is limited to offline read-only pinned sources, or placeholder work that never accesses an execution environment. A live or running environment requires approval even for read-only access.
Does completing the classification mean the work can start?
No. A classification ticket is not an authorization to execute.
Can I run it first and write the stop-condition plan afterwards?
No. All gates must be complete before any action.
Will this part produce any testing evidence?
No. It generates classification and stop records that have not yet been executed. Every environment, hardware, network and KNX bus claim remains outside what the pinned sources can support.
Next

Where to go from here

sorted, and still stopped

Everything is classified. Nothing has been executed.

That closes the ETS and Home Assistant stretch. Part 7 opens the last one: Chapter 17 draws the paper boundaries around backup and restore, and Chapter 18 sets the security baseline. Both of them assume the ticket you have just sealed, and neither of them reopens the fourth tray.

Open the full guide

Part 6 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
Nine cards and a worksheet, with not one real value on any of them