Garagedoor: KNX & HomeKit problems

Hi!
I have a “Hörmann” garage door that is controlled via KNX. It supports moving up and down using a binary (Group Address).

Door can be stopped using another binary (Group Address) It also sends a door position in %. By default 0 = closed, 100% = open. I use a KNX Logik module to invert the position. From HA perspective 100% is closed now, 0% is open.

In HA I use a “cover” with device class “garage” to control the garage door.

configuration.yaml:

      name: "Garagentor"
      move_long_address: '10/5/1'
      #stop_address: '10/5/2' 
      position_state_address: '10/5/14'
      device_class: garage
      travelling_time_down: 23
      travelling_time_up: 15

The garage door is also visible as a garage door in HomeKit. It is working, besides some disturbing side effects:

(1) I have to disable “stop_address” because if enabled, the garage door will stop suddenly and unexpected on different positons.

(2) When closing the garage door, status in HomeKit is first changing to “closing”, but after a few seconds, when the door is at around 60% status will suddenly change to “openend” and will remain there, until the door is in final position. Then it changes to “closed”.

Is this faulty behavior known? Did I do something wrong?

Thanks for your help,
Seb

Apart from HomeKit, does it work / show the correct state in HA Lovelace?
What Telegrams are sent while moving?

HA just reads the status GA from KNX and status is correct, when viewing ETS diagnosis / Bus telegrams.

So HA and HK both show the same (incorrect) status? Please show the telegram log.

Yes, what’s shown in Apple Home is also visible in HA.

It’s hard to post a telegram log because the Hörmann KNX Gateway posts status each % and the logic inverts each percent. One cycle up and down is more than 400 telegrams, a printout about 13 pages DIN A4 as pdf.

Well, it was not my intention to print that out 🤷 If you like, contact me on xknx Discord - you can share files there. XKNX
or create an issue on GitHub.

Maybe try to reduce the outgoing telegrams to every 5 % or so.

Was there any resolution? I have a similar issue with the Hörmann KNX garage door.

I hope so. See

Thanks @farmio. Much appretiated. Inversion of status worked so far. However in HomeKit I can not operate the garage door.

The situation is as follows:

knx:
    - name: "Garagentor"
      #stop_address: "2/7/1"
      #device_class: garage
      move_long_address: "2/7/0"
      position_address: "2/7/4"
      travelling_time_down: 24
      travelling_time_up: 14
      invert_updown: false
      invert_position: true

Current status:

  • Door is physically closed and Status in HA is closed with status 0%
  • Door can be operated from HA UI very well (up/down/light on/off)
  • With device_type: garage Status in Homekit is unavailable.
  • Without device_type: garage I can see the correct status in HomeKit … however operating it from Homekit is not possible. Operating it updates the status in Homekit (obviosly, but physically nothing moves)

Anyone with a Hörrman KNX Garagedoor and able to operate it from HomeKit as well?

Its the installation of my dad and he insists on opening the garage door via HomeKit as well (app/whatch).

Can anyone shed some light on the HA Homekit connection. Is there a need to sync after changes … or wait some time until changes from HA made it to HomeKit?

Have a great weekend.
Ralf

Short update …

Here the log on the KNX Bus.

  1. Initiated from HA … works



  2. Inititated from HK … fails. It does not send the 00 to the 2/7/0. Instead it tries to set the percentage to 100% which should open it … but it doesnt.

In the 2nd case … when Homekit is not sending the “up” signal on 2/7/0 but … tries to set the status to 100% which should initiate the opening of the door.

As the 100% is received on the KNX Bus its send from HomeKit via Home Assistant to the bus … but its not opening the door.

The KNX Gateway is a Hörmann KNX-Gateway, Art.-Nr. 4511630. This device has no position object to set the desired percentage for opening.

Is there a way to tell HA to not send the desired state 100% (aka open) but instead send an “open” to the move_long_address?

An interim solution is to create two automations which listens on the status group adress on KNX and if there is a 0% or a 100% message received its sends the related UP/DOWN signal.

automation:
  - alias: "Garage - Transalte Set Position Event 100% from HomeKit to Cover UP"
    id: 33082f5f-7cbe-45a4-afdc-783568249326
    trigger:
      - platform: event
        event_type: knx_event
        event_data:
          destination: "2/7/4"
          value: 100
    action:
      - service: cover.open_cover
        entity_id: cover.garagentor
  - alias: "Garage - Transalte Set Position Event 0% from HomeKit to Cover DOWN"
    id: f13e8dd2-79c4-4929-bdd9-844c251c6307
    trigger:
      - platform: event
        event_type: knx_event
        event_data:
          destination: "2/7/4"
          value: 0
    action:
      - service: cover.close_cover
        entity_id: cover.garagentor

WORKS!

If the device has no object to set a position just don’t configure a position_address.
If it has a position status address (for reading the position) you may configure a position_state_address.

I was not aware that there is a separate state address. Thank you!

Tried this:

Doing so the garage cover gets not initialized.

    - name: "Garagentor"
      # stop_address: "2/7/1"
      # device_class: garage
      move_long_address: "2/7/0"
      position_state_address: "2/7/4"
      travelling_time_down: 24
      travelling_time_up: 14
      invert_updown: false
      invert_position: true

With position_adress instead of position_state_adress it initialises.

In fact without any *_state_address it doesn’t initializes from Bus, but just assumes it starts at open (I think) state.
Using a *_state_address requires a device to answer a GroupValueRead request - thus having a Read-flag set in ETS.
You can test that from ETS GroupMonitor by hitting the “Read” button.