- ESPHome firmware for an ESP32 + CC1101 433 MHz RF sniffer that captures RF remote button presses and forwards them to Home Assistant as events
- Optional Home Assistant dimmer-control script for turning repeated RF button presses into useful brightness changes
This repository contains only the hardware/control pieces from its predecessor project, rf433-remote-ha-mapper. The mapper, learning card, and Home Assistant integration files have moved to the separate ha-event2action project.
- QUICKSTART.md - minimal setup flow
- WIRING.md - ESP32, CC1101, and status LED wiring
- dimmer_control/dimmer_control.yaml - Home Assistant script
- esphome/433mhz-sniffer.yaml - main ESPHome configuration
- esphome/hardware-config.yaml - pins and RF settings
- esphome/rf_handlers.h - RF debounce and logging handler
- dimmer_control/README_dimmer_control.md - optional dimmer script behavior and examples
- Sniffer Output - using the
esphome.rf433event in Home Assistant - 3D printable enclosure - optional ESP32/CC1101 case
The ESPHome node listens for 433 MHz RF remote codes and forwards debounced RC Switch events into Home Assistant as esphome.rf433 events. The dimmer script can then be called by your own automations or by the separate mapper project to step a light through brightness values.
The final output of the sniffer is a Home Assistant event named esphome.rf433. Each debounced RF button press is forwarded as an event with the decoded protocol and code values, so Home Assistant can use ordinary event-based automations to react to RF remotes.
The recommended next step is to feed this event into ha-event2action. That project provides the mapping and learning-card workflow for turning incoming esphome.rf433 events into Home Assistant actions, including calls to the optional dimmer-control script in this repository.
- ESP32 development board
- CC1101 433 MHz sub-GHz transceiver module
- WS2812/WS2811 status LED, optional but useful
- Jumper wires, breakout board, or custom wiring
- Optional 3D printed enclosure
- ESPHome with CC1101 support
- Home Assistant, if you want to receive
esphome.rf433events or use the dimmer script
-
Copy the files from esphome into your ESPHome configuration folder:
433mhz-sniffer.yamlhardware-config.yamlrf_handlers.h
-
Create
secrets.yamlin that ESPHome folder:wifi_ssid: "YourWiFiSSID" wifi_password: "YourWiFiPassword" api_encryption_key: "generate-with-openssl-rand-base64-32" ota_password: "generate-with-openssl-rand-hex-16"
-
Adjust hardware-config.yaml for your board, LED, CC1101 pins, RF debounce, and logging settings.
-
Flash the device:
esphome run 433mhz-sniffer.yaml
After the ESPHome device is adopted by Home Assistant, pressing an RF remote button should fire an event named esphome.rf433 with protocol and code fields.
To verify reception:
- Open Home Assistant Developer Tools.
- Go to Events.
- Listen for
esphome.rf433. - Press a 433 MHz remote button.
For dimming behavior, add dimmer_control/dimmer_control.yaml to your Home Assistant scripts and call it from an automation or mapper action. See dimmer_control/README_dimmer_control.md for examples.
Edit esphome/hardware-config.yaml to change:
- ESP32 board type
- SPI pins for the CC1101
- RF receive pin
- status LED pin, chipset, RGB order, and brightness
- RF idle/filter/tolerance/buffer settings
- debounce timing
- raw RF logging
- fallback access point credentials
The default debounce is 350ms, which is usually a good starting point for RF remotes used as dimmer buttons.
rf433-remote-ha-mapper/
├── dimmer_control/
│ ├── README_dimmer_control.md
│ ├── dimmer_control.yaml
│ └── smart plug-in dimmer case.jpeg
├── esphome/
│ ├── 433mhz-sniffer.yaml
│ ├── hardware-config.yaml
│ └── rf_handlers.h
├── CHANGELOG.md
├── LICENSE
├── QUICKSTART.md
├── README.md
└── WIRING.md
No RF events received
- Check the CC1101 wiring, especially VCC at 3.3 V and GDO0 to the configured receive pin.
- Check ESPHome logs with
esphome logs 433mhz-sniffer.yaml. - Confirm the ESPHome device is online in Home Assistant.
- Try moving the antenna or receiver away from power supplies and Wi-Fi equipment.
- Temporarily enable more RF logging in
hardware-config.yaml.
Duplicate or sluggish button behavior
- Tune
rf_debounce_msinhardware-config.yaml. - Use lower values for quicker repeated presses.
- Use higher values if a single press creates duplicates.
Status LED does not behave as expected
- Confirm
status_led_pin,led_chipset, andled_rgb_orderinhardware-config.yaml. - Check whether your LED expects 5 V power and a shared ground with the ESP32.
This project is open source and available under the MIT License.