Weird issue - SwitchBot Blind Tilt

Okay so here’s the deal:

SwitchBot Blind Tilt Bluetooth Integration → Home Assistant → HomeKit Bridge

It works great in the SwitchBot app (updated to latest firmware here), it works great in Home Assistant however, in Apple Home, it works as expected in the settings page for the device in Apple Home, but not in the actual device page in Apple Home itself…

So it works when adjusting here perfectly fine, and as you’d expect:

But on this page, it never moves, no matter how you adjust the blind, the graphic just immediately snaps back to closed at the bottom. It never moves, it never updates, unlike in the settings page above, where it works great:

I have it export with the HomeKit Bridge integration in Home Assistant, with it set to ‘Accessory’ and ‘Include - Cover’ (set to the Left Blind device in HA).

I’ve tried:

  • force closing the Apple Home app
  • restarting the HomeKit Bridge integration
  • rebooting Home Assistant entirely

If it didn’t work at all in Apple Home, I’d be less perplexed, but working on the settings page for the device, and not the main page for the device? What’s the difference between the two here that’s causing it to not work on one, where it works perfectly on the other?

Your help is appreciated!

Did you ever get this resolved? I have the same weird issue.

Sadly not, no.

I’ve rebooted HA since, still no joy. There’s obviously a difference between the device view, and settings view for the device in the Apple Home app, I’m just not smart enough to know what it is, to work out how to fix it.

I’ve tried changing the “show as” type to various options to no avail. I’ve tried blind/shade/shutter/etc. This has worked previously when exporting the Konnected GDO blaQ to HomeKit which won’t work properly until you change the “show as” type to ‘Garage Door’.

I’m hoping those with more knowledge of Homekit Bridge can chime in. I wonder if Homebridge also has this issue.

Did you by any chance work this out? :smiley:

Still having the same issue and I’m pretty much up to date on everything. Tried deleting the homekit bridge accessory and creating a new one, but still no luck.

I found a working solution after digging a little into how HomeKit handles cover devices. SwitchBot Blind Tilt devices only report current_tilt_position (no current_position), but HomeKit apparently expects covers to have both position and tilt characteristics.

I debugged a bit on my Mac and found that when HA’s HomeKit bridge exposes a tilt-only cover, it results in a malformed HomeKit accessory. When using the tile (or whatever it’s called) to adjust the tilt, homed throws errors about tile rendering and an error that I assume is HomeKit trying to get current_position. Though the logs didn’t contain enough info to confirm.

The fix is wrapping it in a template cover that maps tilt to position. An example of one called “Blind Tilt Left” (adjust the name and entity as needed for your setup):

template:
  - cover:
      - name: "Blind Tilt Left HomeKit"
        unique_id: blind_tilt_left_homekit
        device_class: blind
        open_cover:
          service: cover.open_cover_tilt
          target:
            entity_id: cover.blind_tilt_left
        close_cover:
          service: cover.close_cover_tilt
          target:
            entity_id: cover.blind_tilt_left
        stop_cover:
          service: cover.stop_cover_tilt
          target:
            entity_id: cover.blind_tilt_left
        set_cover_position:
          service: cover.set_cover_tilt_position
          data:
            tilt_position: "{{ position }}"
          target:
            entity_id: cover.blind_tilt_left
        set_cover_tilt_position:
          service: cover.set_cover_tilt_position
          data:
            tilt_position: "{{ tilt }}"
          target:
            entity_id: cover.blind_tilt_left
        position: "{{ state_attr('cover.blind_tilt_left', 'current_tilt_position') }}"
        tilt: "{{ state_attr('cover.blind_tilt_left', 'current_tilt_position') }}"

Add this to the top level of your HA configuration.yaml and restart HA. Then:

  1. In your HA HomeKit Bridge configuration, exclude or remove the original cover.blind_tilt_left from HomeKit
  2. Include the new cover.blind_tilt_left_homekit instead
  3. Restart HA again to apply the HomeKit changes (you might be able to just reload the integration, I forgot exactly what I did)
  4. Apple Home should show the new accessory rather than the old one, and it should work now

Note that status updates from the device seem to be a bit slower than you might be used to from some lights and other devices.

This might be considered a bug in the HA HomeKit integration, because it looks like it needs to add this mapping if position is missing.