Matthew Horoschun's Blog

A collection of notes related to cloud, automation and cyber security.

Integrating Blinds Online (Tuiss) Electric blinds with Home Assistant

Posted at — Jul 3, 2021

We have recently replaced a lot of the old blinds in our house with new ones from a company called Blinds Online. They’re a fairly cheap option, and can be quite easily installed DIY. We have a lot of windows in our living space, and here in Canberra it gets quite cold during the winter, so making sure that the blinds are all closed when the sun sets is important to reduce the amount of energy we’re wasting. To make it easier, we purchased all our blinds with electric (battery powered) operation.

The blinds are supplied with a BF-315 remote, but I really wanted the blinds to automatically open around sunrise and close at just before sunset. I already use Home Assistant, so controlling it from there was my preferred solution.

Goal

I don’t need to be able to determine the blind position, I’ll just trust that they’ve opened or closed when told to.

Required Hardware

Research

  1. ESPHome has a Remote Transmitter component which can send 433MHz RF signals. It includes a bunch of built-in protocols.
  2. The ESPHome Remote Receiver can capture 433 MHz signals, but in dump: all mode I just received a lot of noise and couldn’t figure out what was going on.
  3. Googling the BF-315 model number on the back of the supplied remote control led me to try the Antti Kirjavainen Markisol Arduino Control code.
  4. I tested out the RemoteCapture.ino and was able to capture some valid codes from my remote.
  5. Created a modified version with support for the BF-315 with all 15 channels supported.
  6. I tried used the Antti’s transmit code to confirm that I was able to control things, but intially didn’t get any response from the blinds.
  7. I needed to try to figure out where the issue was, so I tried a few things:
    • Used nooelec USB software defined radio to confirm that my transmitter was actually on the right frequency (which it was).
    • Added some debugging to my modified version of the RemoteCapture.ino code to output AGC and pulse times.
    • Monitored the transmission by sticking a DSO probe on the original remote control PCB to measure the timings at the source.
    • Eventually I went through a bunch of iterations fiddling with the timings, trying to find settings that actually made the blinds function.
    • Confirmed that my blinds would not function unless the trailing bits (which contain a checksum) were correct.
  8. Once I had timings, I created a rough Python script which generates ESPHome config suitable for operating the three most important actions (open, close and stop).
  9. I tested this in ESPHome and was successfully opening and closing my blinds consistently.

Next Steps

At this stage, the solution is working quite reliably. I would like to create a more generic solution which can be built into ESPHome:

  1. Figure out how to generate the trailing bits correctly. My blinds don’t operate unless the trailing bits checksum is correct. It looks like this has already been done.
  2. Investigate adding the ability to learn remotes in ESPHome and a remote_transmitter transmit action in ESPHome so its possible to add blinds easily.