ESPHome can now act as a Somfy RTS remote. Pull request #16502 by RobertH1993, merged into the development branch on 12 October 2026, adds a remote_transmitter.transmit_somfy_rts action. With a 433.42 MHz transmitter connected to an ESP32 or ESP8266, an automation or a button in Home Assistant can send Up, Down, My (stop) and Prog commands to Somfy RTS blinds, shutters and awnings. The pull request had been open since May, and it is the author's first contribution to ESPHome.
It is not part of the ESPHome 2026.10 betas (2026.10.0b4 was released on 13 October), so 2026.11 is the first release that can include it.
Pairing ESPHome as an extra remote
RTS is a one-way protocol. Every remote has a 24-bit address and a 16-bit rolling code, and each command has to carry a higher code than the last one, otherwise the motor ignores it. ESPHome does not clone an existing remote. It joins as an additional one: you pick any address and stick with it, hold the program button on a remote that is already paired until the motor jogs, and then send the Prog command (control: 0x8) from ESPHome.
The rolling code is the part that needs care. The documentation says to keep it in a globals variable with restore_value: true and to increment it in the lambda on every command. A code that goes back to its starting value after a reboot is lower than the last one the motor accepted, so the commands that follow are ignored.
Real remotes send each frame several times, and the docs recommend the repeat option for the same reason. The example from the pull request:
remote_transmitter:
id: rf_transmitter
pin: GPIO4
carrier_duty_percent: 100%
globals:
- id: rolling_code
type: uint16_t
restore_value: true
initial_value: "1"
button:
- platform: template
name: Blind Up
on_press:
- remote_transmitter.transmit_somfy_rts:
transmitter_id: rf_transmitter
address: 0x123456
control: 0x2
key: 0xA0
rolling_code: !lambda return id(rolling_code)++;
repeat:
times: 3
wait_time: 30ms
The control values are 0x1 My, 0x2 Up, 0x4 Down and 0x8 Prog, and combinations such as 0x3 are sent as given. According to the docs, a key of 0xA0 works for most receivers. Some remotes put the command in the key byte instead; the control_in_key option covers them.
Transmit only
There is no decoder yet. ESPHome cannot read the blind's position or listen to the original remote, and the pull request registers no binary sensor, trigger or dumper for the protocol. A cover you build on top of these commands only knows what it last sent, so if someone uses the original remote, Home Assistant will not notice.
The author tested the code on the ESP32 with both the Arduino and ESP-IDF frameworks and on the ESP8266. For anyone who has so far controlled Somfy RTS motors through a separate RF bridge or a cloud hub, an ESP board with a 433.42 MHz transmitter is now a local alternative.