KNX binary sensor - short state change not recognized

Hi guys,

I’ve a strange issue with my doorbell automation. It’s set as follows:

  • A simple wall switch is connected to a KNX switch interface.
  • When pressing the switch, the corresponding group address switches to “ON”, and “OFF” again (for the time it’s beeing pressed).
  • A KNX binary sensor in Home Assistant then triggers an automation.

All worked like a charme for a couple of month. But now, maybe it is related to the newest update, the doorbell is not ringing anymore. Why? Because the time the group address changes seems to be too short for beeing recognized by Home Assistant. When I long press the switch (button switch), it’s working.

So I would like to know if anyone has a similar issue, or if there is maybe a way to configure the time a senor state must be changed, before an event is recognized.

I don’t think it’s very helpful to share my yaml files in this case, because the issue is quite clear - it depends on the time the sensor state changes to let HA react.

Thanks for any help!


Try adding ignore_internal_state = False or context_timeout = 0 to your irrelevant config :wink:

You got me :upside_down_face:

Thanks a lot for the advice, will try tomorrow and let you know if it worked.

Hi farmio, that was the trick! I added both to my sensor configuration and now it’s again working.Thanks a lot!

  - name: tuerklingel
    state_address: "6/1/2"
    context_timeout: 0
    ignore_internal_state: False

:+1: one should en enough. ignore_internal_state = False disables the context feature for counters anyway.

OK, thanks for clarification. But I still don’t get it - the ignore_internal_state parameter is descriped the other way around, so that it should be set to false, if automations are triggered multiple times. In my case the automation wasn’t triggered at all.

ignore_internal_state boolean (optional, default: true)
If set to true the update callbacks are always executed regardless of the current binary sensor state. If some of your automations are triggered multiple times make sure this setting is False.

So, I’m happy it’s working now, but I would love to know why?

Yours seem to be a special case that was never considered.

If your doorbell would only send “1” every time it was pressed you would need iis True because the internal state would not change with the next “1”-telegram - it’s always “1”.

Yours send a “1”, “0” in short sequence - shorter than the context_timeout which is waiting for the next “1” to enable double/triple/… taps on switches.
Seems the “0” in the context_timeout clears the “1” so the 1 doesn’t fire a state change.

So context_timeout doesn’t work and is disabled without iis because internally a second “1” wouldn’t be processed.

The defaults for context_timeout and iis are going to be changed soon (already a PR); also the docs will (hopefully) get a bit clearer then.

Hope this is understandable :upside_down_face:

Yes, absolutely! I guess the part “Seems the “0” in the context_timeout clears the “1” so the 1 doesn’t fire a state change” was not clear to me. But makes sense, as I’m using a button switch an an MDT bus coupler configured to send “1” for the rising edge, and “0” for the descending edge. And it explains also why it was working, when manually changed the doorbell group address to “1”. I’ve configured it that way, in order to not need to clear the value after the door bell was pressed.

So again, thank you for your help! Really appreciated!