Control Jarolift TDEF 433 MHz motorized roller shutters natively from Home Assistant.
This integration uses the HA 2026.5 radio_frequency entity platform — it generates
Keeloq-encrypted OOK command frames in Python and transmits them through an
ESPHome + CC1101 RF transmitter entity. No cloud, no custom firmware
protocol layer — pure Home Assistant.
| Component | Details |
|---|---|
| ESP32 (any variant) | WROOM, WROVER, S2, S3, C3, … |
| CC1101 433 MHz module | e.g. EBYTE E07-M1101D-SMA or standard green CC1101 |
| Jarolift TDEF shutters | RF 433 MHz rolling-code (Keeloq) |
Default ESP32 ↔ CC1101 wiring (matches the ESP32-Jarolift-Controller pinout):
| CC1101 | ESP32 GPIO |
|---|---|
| SCK | 18 |
| MOSI | 23 |
| MISO | 19 |
| CS | 5 |
| GD0 | 21 |
| GD2 | 22 |
Install ESPHome and configure the CC1101 module as an RF transmitter.
Once added to Home Assistant, the ESP32 appears as a radio_frequency transmitter entity.
Refer to the ESPHome CC1101 documentation for the YAML configuration.
The integration needs the 64-bit Keeloq manufacturer master key for your Jarolift devices, split into two 32-bit hex values (MSB and LSB).
If you already have a working ESP32-Jarolift-Controller, the master key is in its
config.json under the fields ulMasterMSB / ulMasterLSB.
Note: The Keeloq master key is device-family-specific and not publicly distributed. Community resources and existing controller configurations are the primary source.
- Open HACS → Integrations → ⋮ → Custom repositories
- Add
https://github.com/jonilala796/ha-jarolift— category Integration - Search for Jarolift and install
- Restart Home Assistant
- Copy
custom_components/jarolift/into your HAconfig/custom_components/directory - Restart Home Assistant
- Go to Settings → Devices & Services → Add Integration
- Search for Jarolift
Choose the ESPHome CC1101 entity from the dropdown. Only compatible 433 MHz OOK transmitters are shown.
| Field | Description |
|---|---|
| Master Key MSB | Upper 32 bits of the Keeloq master key (8 hex digits, e.g. 1A2B3C4D) |
| Master Key LSB | Lower 32 bits of the Keeloq master key (8 hex digits, e.g. 5E6F7A8B) |
| Serial Number | 28-bit virtual remote serial (7 hex digits, any unique value, e.g. 0A1B2C3) |
| Initial Counter | Set to a value higher than the last counter used by any existing controller for the same serial. Default 0 for a brand-new virtual remote. |
| Repeat Count | Extra transmissions per command (default 2 = 3 total). Higher = more reliable but slower. |
Syncing with an existing ESP32-Jarolift-Controller: If you are replacing an existing controller, set the serial and master key to match, and set the initial counter to the last-used counter value + a safety margin (e.g. +100).
Enable and name the shutter channels you want to control (1-16 available).
Each enabled channel creates one Cover entity:
| Feature | Supported |
|---|---|
| Open | ✅ |
| Close | ✅ |
| Stop | ✅ |
| Shade / Sun-protection position | ✅ (set position to the configured shade value, default 90) |
State is optimistic — the position shown in HA reflects the last command sent, not a sensor reading (Jarolift motors have no position feedback).
Set the cover position to the configured shade value (default 90) to send the Jarolift shade/sun-protection command. Any other position is rounded to fully open (>50) or fully closed (≤50).
You can change the shade position threshold in Options (Settings → Devices & Services → Jarolift → Configure).
Access via Settings → Devices & Services → Jarolift → Configure:
- Change the RF transmitter entity
- Adjust the repeat count
- Adjust the shade position value
- Enable/disable and rename individual channels
| Property | Value |
|---|---|
| Frequency | 433.92 MHz |
| Modulation | OOK (On-Off Keying) |
| Cipher | Keeloq (linear LFSR variant, AN745 / KeeloqLib) |
| Frame | 72 bits: [4 button][28 serial][32 hopcode][8 disc_high] |
| Sync | 13 × (400 µs space + 380 µs pulse) |
| Bit '0' | 400 µs space + 800 µs pulse |
| Bit '1' | 800 µs space + 400 µs pulse |
Shutters do not respond:
- Verify the CC1101 is wired correctly and the ESPHome device appears in HA
- Check that the master key MSB/LSB are correct
- If migrating from another controller: ensure the counter is set higher than the last used value (Keeloq receivers reject replayed or too-old counters — a gap of 100+ should be safe)
Counter synchronisation:
The rolling counter is stored in .storage/jarolift_counters.json.
You can inspect or reset it there if needed.
"No compatible RF transmitter found":
- Flash ESPHome with the CC1101 component and add it to Home Assistant first
- Ensure the ESPHome device has been integrated (Settings → Devices & Services → ESPHome)
Pull requests and bug reports are welcome at github.com/jonilala796/ha-jarolift.
MIT — see LICENSE.