ESPSomfy RTS is a DIY controller for Somfy RTS blinds and shades. It uses a 433MHz transceiver to emulate a Somfy remote control, and includes an integration to Home Assistant.
It’s an extremely impressive project, with lots of functionality and extensive documentation.
I currently have two Somfy roller blinds, and this controller will allow me to build automations for them and control them with non-Somfy devices (including Siri, via the HomeKit Bridge integration in Home Assistant).
Parts

- Lolin S3 Mini, from the LOLIN Official Store on AliExpress
- CC1101 Wireless RF Transceiver, from renoeay on eBay
- Double sided 5cm x 7cm breadboard, from Switch Electronics on eBay
- Hammond 1591XXMSBK 85 x 56 x 24mm ABS enclosure, from Switch Electronics on eBay
Installing the firmware
I started with the firmware, to make sure the S3 Mini was working correctly. I followed the documentation here and downloaded SomfyController.onboard.esp32s3.bin.zip.
I used the ESPHome Web method to flash the firmware, and I had to hold the “0” button on the board, as I connected it to the PC, to get it into firmware flashing mode.
Once the firmware was installed, I switched to this documentation and connected to the temporary Wi-Fi AP for the initial configuration. I joined it to my IOT VLAN and gave it a static IP at the router.
Helpfully, the radio functionality is disabled when the firmware is first installed, so there were no errors relating to the CC1101 transceiver not being connected.
Soldering and fabrication
The breadboard was slightly too long for the enclosure, so I used a small hacksaw to saw down the first row of pads. (Wear a mask if you do this).
Then I experimented with different orientations and alignments within the enclosure:

In this image, the CC1101 is deliberately moved away from the top edge, so I can see where the antenna connection will sit.
The CC1101 comes with male pin headers already soldered. On the S3 Mini I decided to use the outer set of pads only (which mostly matches the default configuration in the ESPSomfy RTS firmware, and includes the 3V3 pad).
I soldered male pin headers to the S3 Mini, and female pin headers in the corresponding locations on the breadboard.
Next, it was time to wire the two components together. There are 8 connections to make: 6 for data, and 2 for 3v3 and ground.
ESPSomfy RTS allows you to reconfigure the GPIO pins, but I stuck to the defaults for everything apart from TX and RX (more on that later).

This graphic was useful for understanding the pinout of the CC1101 (even though some of the terminology is slightly different):

Initially, I used pin 44 for TX, and pin 43 for RX (as they were out of the way, at the end of the row). This was a mistake! There seems to be something special about pin 44, as I was not able to transmit to my blinds.
I moved TX and RX to 16 and 18, and it worked perfectly.

I’ve since discovered that you can use a single pin for TX and RX:
ESPSomfy RTS will also allow you to share the transmit (TX) and receive (RX) functions using a single pin connected to GDO0. Simply set the dropdowns for RX and TX to the same pin connected to GDO0. ESPSomfy RTS will multiplex (switch the function back and forth) on this single pin when transmitting or receiving. There is no fundamental advantage to using two pins because the transceiver antenna can only transmit or receive at any given time.
The wiring ended up looking like this (professional solderers look away now):

Finally, it was time to carve out some holes in the enclosure with a Dremel and install the breadboard. I used 4 small blobs of hot glue to hold it in place.

Integrating with Home Assistant
Integrating with Home Assistant is straightforward with the ESPSomfy RTS-HA custom HACS repository.
Just add the custom repository to HACS, then add a new ESPSomfy RTS integration instance to Home Assistant.
Automation ideas
The two (very obvious) automation ideas that I’m exploring first are:
- Morning alarm clock – open the roller blinds at 6:30am, but only if the sun has already come up.
- Sunset – close the roller blinds to 10% when it gets dark, if the blinds were fully open. (10% in case a window is open, as wind can damage a fully closed blind).