ESP32 + NRF24L01+ ESPHOME library to control Levolor blinds
This is a library known to work with ESP32 and NRF24L01+. It allows direct control of Levolor blinds by replaying stored remote codes. The easiest way to use this is to install the library and open the Directolor example. You can then clone one of the Directolor remotes to a remote you own. Then you can program your shades to the new cloned remote or using Directolor and control the blinds with either Directolor or your own remote.
This differs from Wevolor (https://wevolor.com/) in that you DON'T need a Levolor 6 button remote.
Typical usage: Install the solution to your ESP32 by including the example below and modifying to fit your needs. Don't worry about the radio_code just yet.
Press the stop button on your existing remote a few times
View the ESPHome device logs and look for something like:
14:26:47 [I] [nrf24l01_base:228] Received Stop from: 0B 65 B0 51
14:26:49 [D] [nrf24l01_base:178] bytes: 20 pipe: 1: 11 00 05 CB FF FF B0 51 86 06 10 01 00 B0 51 52 53 00 F7 BD AA
14:26:49 [I] [nrf24l01_base:228] Received Stop from: 0B 65 B0 51
Copy the bytes from your remote into the radio_code below, keeping the same position. For the example above, you'd use:
- 0x0B
- 0x65
- 0xB0
- 0x51
You've now cloned your remote into directolor. Test that you can control your shades via the web interface buttons.
You can include multiple "- path: directolor_cover.yaml" sections, you will typically have one for each shade.
For the vars:
id is any valid ESPHome id
name is the name you'd like it to have
radio_code - see above or just put random values (hex) in here and join your blinds to it
channel - the number of the blind on your remote
movement_duration - a time value that tells how long it takes to fully open / close the blind. If you leave this out, you will NOT get positional control of your blind, just open / close
tilt_supported - whether or not the blind has tilt functions
disable_favorite_support - setting this to true will mark the "to favorite" and "set favorite" buttons as disabled in Home Assistant (you can enable them manually via the HA UI) and exclude them from the ESPHome webserver if you are using version 3
disable_program_support - setting this to true will mark the "duplicate", "join" and "remove" buttons as disabled in Home Assistant (you can enable them manually via the HA UI) and exclude them from the ESPHome webserver if you are using version 3
The ce_pin and cs_pin will match your physical hardware connections. Use what I have provided unless you know what you're doing for pins. If you change them, make sure to specify them for each vars section
nrf24_ce_pin - defaults to 22 if not provided
nrf24_cs_pin - defaults to 21 if not provided
# example configuration:
packages:
directolor:
url: https://github.com/loucks1/Directolor-ESPHome
files:
- path: directolor_cover.yaml
vars:
id: blind1
name: Directolor Blind 1
radio_code:
- 0x06
- 0x03
- 0x05
- 0x12
tilt_supported: true
channel: 1
disable_favorite_support: true
disable_program_support: true
- path: directolor_cover.yaml
vars:
id: blind2
name: Directolor Blind 2
radio_code:
- 0x06
- 0x03
- 0x05
- 0x12
tilt_supported: false
channel: 2
movement_duration: 17s
disable_favorite_support: false
disable_program_support: falseTo connect the ESP32 to the NRF24L01+ connect:
(Some have recommended a 10uF cap across ground and 3.3V - I haven't needed the cap.)
| ESP32 pin | rf24 pin |
|---|---|
| ground | 1 |
| 3.3v | 2 |
| 22 | 3 (CE) |
| 21 | 4 (CSN) |
| 18 | 5 (SCK) |
| 23 | 6 (MOSI) |
| 19 | 7 (MISO) |