How to send a DPT 1.001 value from HA to KNX?

I am trying to use a KNX Button to send a binary DPT 1.001 value of 1 to the KNX Bus. Unfortunately the KNX Integration does not support that DPT type for Buttons? Is there any reason why? If I use a DPT 5 (1byte_unsigned) in the following:

button: 
  - name: "Deckenventilator An"
    address: 3/7/21
    type: 1byte_unsigned
    value: 1

I actually do see an event on the KNX bus in the ETS diagnose mode, however, it is not actually switching on the actor that waits for a binary 1 with DPT 1.001 on GA 3/7/21. If I send “a real” DPT 1.001 with value 1 from e.g. a KNX touch sensor, the actor actually reacts normally and switches on. See the two different events in the ETS diagnose window here (the only difference visible in the diagnose output seems to be the column DPT):

Any idea how I can make this work?

Btw, what is also strange is that if I use the HA developer tools to send a knx_event to that group address like this:


the HA says “Event knx_event successfully fired!” but no event actually ever arrives on the KNX bus (in the ETS diagnose mode)?

And yes, I did register the GA in HA with the following:

service: knx.event_register
data:
  address:
    - 3/7/21 

Hi :wave:!
Just omit type. From the documentation:

payload_length integer (optional, default: 0) The length of the payload data in the telegram. Use 0 for DPT 1, 2 or 3.

There is even a “DPT 1 - True button” example in the documentation. https://www.home-assistant.io/integrations/knx/#button

You can’t send a knx_event to the bus… that’s only HA internal (like all events). You fire this event on the HA event bus.

To send telegrams use the knx.send service.

Great, thanks so much @farmio. I was stuck since in the Button description it says:
Screenshot 2022-12-22 at 16.55.39
and then links to value types table where it only starts with DPT 5. I just didn’t see that type 0 (or just not specifying a type) will be DPT 1,2,3.
But now that I also realized, that I need KNX send to actually send a message out to the bus, in that UI it also described the payload for DPT 1,2,3. Thanks a lot!

Hi all,

I have a similar issue with whd, except that I want to send a “0” to the KNX bus.

This is what I tried:

  - name: "Alles Uit"
    address: "5/0/3"
    payload: 0
    payload_length: 1

→ Nothing happens.

  - name: "Alles Uit"
    address: "5/0/3"
    value: 0
    type: 1byte_unsigned 

→ Nothing happens.

I also tried this:

  - name: "Alles Uit"
    address: "5/0/3"

But it sends a “1” instead of a “0”.

This workaround strangly enough works:

alias: Alles Uit 2
description: ""
triggers:
  - domain: knx
    device_id: f11a8a62f03c4a8f5876a6d3a3dd455c
    type: telegram
    trigger: device
    group_value_write: true
    group_value_response: true
    group_value_read: false
    incoming: true
    outgoing: true
    destination:
      - 5/0/3
    enabled: true
conditions: []
actions:
  - delay:
      hours: 0
      minutes: 0
      seconds: 5
      milliseconds: 0
  - action: knx.send
    metadata: {}
    data:
      response: false
      address: 5/0/3
      payload: 0
mode: single
initial_state: "true"

(but it creates a loop - but it is to ‘prove’ I have good communication to the KNX bus).

So how do I correctly define my KNX button?

Hi,
Never mind. I’ve found it:

  - name: "Alles Uit"
    address: "5/0/3"
    payload: 0
    payload_length: 0

It was a bit confusing for me that a length can also be “0”.