Support for Switchbot Blind Tilt

So the new integration still requires bluetooth, apparently. I’m more than willing to check out an ESPHome, but I really need this dumbed down, as it’s new for me, and a bit more advanced than I’m used to.

SO - my HA PC is in my basement. I need to control 5 blindtilts in my Living Room, and 2 in my dining room. I need to get two of THESE right?

So once I have these… What do I do with them? I assume I need to power them? How? And how do I connect them to HA? I’m guessing the ESP things have both WiFi and bluetooth, so i’m guessing they connect to HA through Wifi? And then the blindtilts are controlled by HA sending commands through WiFi, which then sends the commands to the blindtilts using bluetooth?

Any help would be greatly appreciated, especially if you speak slowly and use small words! :slight_smile:

EDIT!! I have one of THESE laying around from when I was messing with WLED stuff - will this work?

SECOND Edit: I don’t think it will work - plugged it into my PC - even though it says “connected” at the ESPHome website - it just hangs on “Connect” and then fails.

I left my last post up just for info purposes, but I’m here to report that I kind of got it working. Found some directions for the board I had. FINALLY, FINALLY got it into HA and working.

It discovered all 7 of my Blind tilts! It opened all of them when I clicked “open”!

And the board promptly went offline. Then online. Then offline. Etc. Etc. It’s just about next to the router antenna. It’s between both rooms with the blind tilts.

Also - not quite as responsive as I’d like… Do I have to move the board closer?

Yeah yeah me again. So on the official integration page, it shows a template towards the bottom of the page. I never ever use “close blinds up”. Open is, well, opened, blinds horizontal. And closed is always blinds fully down. I’ve got Living Room Blind 1, Living Room Blind 2, 3, 4, 5… How do I make that Template my own?

I am in a similar position to you, would you mind outlining what your solution ended up being? Right now I deal with bluetooth via MQTT; a pi-zero sits out there with and passes what it hears on bluetooth back to HA via MQTT.

I’ve got the ESP32 connected to HA with ESP Home integration. HA sends the commands wireless to the ESP32, which sends Bluetooth commands to each of the the blind tilts. Not very well.though - I need to see where the commands are dropped. But overall not terrible - I’m needing to send a command a couple times in a few cases. No real rhyme or reason to it.

Thanks! Would love to know if there’s something more robust, I’ve held off on setting up blind tilt for way too long now, thought this might finally be it!

When I got up this morning - I found that both of my automations worked. One automation has two blinds opening at sunrise, the other is part of an automation that’s triggered by a motion detector, opens the other five blinds. It all worked.

Nice, if I can’t solve it using the existing pi-zero, I’ll add the ESP32 into the mix. I like the idea of it being rock-solid, since ideally I’d have it open/close blinds when I’m travelling, without having to send the commands multiple times.
Apart from all that, not super excited about the blinds not closing then my evening lights routine coming on, ha.

I think you should replace the example entity id (entity_id: cover.example_blinds) in your template yaml with the entity id of the blinds you’d like to control. You can find the entity id by clicking on the device → controls entity (should have blind icon) → gear icon

HA! Can you tell I’ve never worked with templates?!? So I’ll need to do individual templates for each of my 7 blinds, or can I just list all 7, one under the other? Either way, I can do that. Thanks!

I think you want them each to have their own template entity, but you can control a group of them via a single template entity if you want. I set up a template entity named “All Covers” based on the cover template docs example that lets me easily control all of my covers (nicer to call from an automation than closing all of them individually!). I also have template entities for each of the switchbot blinds based on the example, which I use to expose to google home.

If I look WAY over my head - i can see your post as it flies by! :slight_smile: LOL No, I got my answer, that I do need to do a template entry for each blind individually. But you lost me after the first comma in the first sentence! Heh, as i said, I’ve never worked with templates.

Sorry! Yes one for each blind if you want to expose them as 100% → open and 0% → closed.

This example: Template Cover - Home Assistant
Shows how to make a single template entity (basically a single cover controller which you can click open/close on) that will look like a single blind, but actually control a group of them.

Imagine your living room has 3 sets of blinds. You probably want them all to open and close together, so you can make a template entity (eg “Living Room Blinds”) to control all of them together. The way this works is you set the ‘open’ action of “Living Room Blinds” to be a script which opens (‘cover.living_room_blinds’, ‘cover.living_room_blinds_1’, ‘cover.living_room_blinds_2’). Do the same for the ‘close’, ‘set_position’ etc!

I created a template entity like “Living Room Blinds” described above. However, I made mine control a group of all the blinds & curtains in my house. Now I can open/close all of them at once. Let me know if that clarifies anything.

I THINK I’ve almost got it, thanks!

In your example:

to be a script which opens (‘cover.living_room_blinds’, ‘cover.living_room_blinds_1’, ‘cover.living_room_blinds_2

my question is: If you have a template entity called “cover.living_room_blinds” which is a group of blinds consisting of: cover.living_room_blinds_1’, ‘cover.living_room_blinds_2 then why would the script need to do more than have “cover.living_room_blinds” open? Wouldn’t the script just need to call the template entity “cover.living_room_blinds” to open, instead of calling out the template entity and the individual entities?

Yes, you’re correct! You’d use the created template entity ‘cover.living_room_blinds’ to control the group of covers from scripts and automations instead of needing to do operations on all the group members.

The script I was referring to was the script called by the template. The template entity is defined so that when you call ‘close’ on ‘cover.living_room_blinds’, a script is called which closes each of the group members. See the example linked above for more details and note the action is a script service call.

So… I’d use a script… To call a template… Which calls a script. scream

1 Like

I ended up using the ESP32 bluetooth proxy, which solved a ton of other issues at the same time, and gave me ‘native’ connection to the blind tilt (i.e. using the newly added support for Switchbot Tilt) with very little effort. Can’t believe I didn’t find this earlier, and thanks @withay for mentioning ESP32 earlier in the thread.

As a bonus it found all my thermometer units that were previously relaying through a dedicated pi zero, so that will be next in the queue to finish setting up.

It all works great for controlling the Switchbot, although the current status doesn’t seem to refresh after an action, for example if I close the blinds, the status reads “Closing” for quite some time (not sure how long, possibly until I issue another command). Is there some way to change the polling time, or is there something else I can tweak to improve the status refresh?


Hmm. There was an ESPHome update yesterday (day before?) and now I have no blind-tilt functionality. I’d welcome any suggestions.

And now, a day later, randomly… It’s working again. Sigh.

Although not every blind works every time - I have to go in and manually control one here and there.

Did you find an answer to the refresh/polling issue? I also have the Blind Tilt and see the same problem - the status takes forever to update in HA. In the Switchbot app its fine and I can control the blinds via HA as well, it’s the status update that is the problem. Stays stuck in “Opening” or similar.