The light works, but the app says it is on when it is off. Why?
Why a KNX light shows the wrong state in Home Assistant
The light works. The app is wrong only after someone uses a wall switch, a scene or a timer. That is the sign of a status object that was never wired.
Short answer. The light has a command address but no status address. The app cannot read the real state, so it shows the last thing it sent. Wire the status object and the app can show the true state.
Why it happens
A KNX output usually has two objects. The command object receives the order to switch. The status object sends what the output is doing now.
If the status object has no group address, nothing on the bus says what the light is doing. Home Assistant then assumes the command worked. That is right until something else changes the light: a wall switch, a scene stored in the actuator, a central off, a staircase timer or a power cut.
So the app is not wrong at random. It is wrong after someone uses the house.
One exception: if the wall switch writes to the same address as the app’s command, the app does hear it. The fault shows when the wall switch uses a different address.
Why you miss it at commissioning
Everything you test works. You press the button and the light comes on. The fault is a missing report, not a broken output. In ETS you only see it if you open each device and notice an object with no group address.
Fix it in ETS
- Open the actuator. Many actuators hide the status object until you turn it on in the device parameters. Look for a setting such as “status object” or “feedback” and enable it.
- Open the list of communication objects. Find the status object for that channel. It sends but does not receive. Do not rely on the name, because names change between products and languages.
- Give it a group address in your status range.
- Set the datapoint type to match the object. For on/off status this is often 1.011 (state), but check the product. See group addresses with no datapoint type.
- Download the device after you change it.
Check this now
Open the group monitor in ETS (Diagnostics). Press the wall switch. You should see a telegram from the status address. If you see nothing, the status is not working yet. An address on an object that never sends is the same problem.
What Readback reports
Readback lists the status objects each product declares and the ones this installation wired. Where one command is bound, no status is bound and a status object is free, it proposes the binding. Where one channel carries several outputs, such as a DALI gateway, it reports what it sees and leaves the choice to you. It reads the project file. It writes nothing to your project.
Run a free Readback. Readback is free to use today.
Next note: Group addresses with no datapoint type
Missing status addresses — every status object the product declares, against the ones this installation actually wired.