DISCLAIMER: This software is neither affiliated with nor endorsed by either Control4 or ESPHome.
Integrate ESPHome-based devices into Control4. ESPHome is an open-source system that transforms common microcontrollers, like ESP8266 and ESP32, into smart home devices through simple YAML configuration. ESPHome devices can be set up, monitored, and controlled using a web browser, Home Assistant, or other compatible platforms. This driver enables seamless monitoring and control of ESPHome devices directly from your Control4 system.
- Control4 OS 3.3+
- Local network communication requiring no cloud services
- Real-time updates from all supported entities exposed by the device
- Supports encrypted connections using the device encryption key
- Variable Programming Support
This driver will generically work with any ESPHome device, but we have tested extensively with the following devices:
If you try this driver on a product listed above, and it works, let us know!
| Entity Type | Supported |
|---|---|
| Alarm Control Panel | ❌ |
| API Noise | ❌ |
| Binary Sensor | ✅ |
| Bluetooth Proxy | ❌ |
| Button | ✅ |
| Climate | ❌ |
| Cover | ✅ |
| Datetime | ❌ |
| Date | ❌ |
| Time | ❌ |
| Camera | ❌ |
| Event | ❌ |
| Fan | ❌ |
| Light | ✅ |
| Lock | ✅ |
| Media Player | ❌ |
| Number | ✅ |
| Select | ❌ |
| Sensor | ✅ |
| Siren | ❌ |
| Switch | ✅ |
| Text | ✅ |
| Text Sensor | ✅ |
| Update | ❌ |
| Valve | ❌ |
| Voice Assistant | ❌ |
⚠️ Only a single driver instance is required per ESPHome device. Multiple instance of this driver connected to the same device will have unexpected behavior. However, you can have multiple instances of this driver connected to different ESPHome devices.
Driver installation and setup are similar to most other ip-based drivers. Below is an outline of the basic steps for your convenience.
-
Download the latest
control4-esphome.zipfrom Github. -
Extract and install the
esphome.c4z,esphome_light.c4z, andesphome_lock.c4zdrivers. -
Use the "Search" tab to find the "ESPHome" driver and add it to your project.
⚠️ A single driver instance is required per ESPHome device. -
Configure the Device Settings with the connection information.
-
After a few moments the
Driver Statuswill displayConnected. If the driver fails to connect, set theLog Modeproperty toPrintand re-set theIP Adressfield to reconnect. Then check the lua output window for more information. -
Once connected, the driver will automatically create variables and connections for each supported entity type.
-
To control lights and/or locks, use the "Search" tab to find the "ESPHome Light" and/or "ESPHome Lock" driver. Add one driver instance for each exposed light or lock entity in your project. In the "Connections" tab, select the "ESPHome" driver and bind the light or lock entities to the newly added drivers.
Turns on/off the GitHub cloud automatic updates.
Sets the update channel for which releases are considered during an automatic update from the GitHub repo releases.
Displays the current status of the driver.
Displays the current version of the driver.
Sets the logging level. Default is Info.
Sets the logging mode. Default is Off.
Sets the device IP address (e.g. 192.168.1.30). Domain names are
allowed as long as they can be resolved to an accessible IP address by
the controller. HTTPS is not supported.
⚠️ If you are using an IP address, you should ensure it will not change by assigning a static IP or creating a DHCP reservation.
Sets the device port. The default port for ESPHome devices is 6053.
Selects the authentication method for connecting to the ESPHome device.
- None: No authentication required.
- Password: Use a password for authentication (see below).
- Encryption Key: Use an encryption key for secure communication (see below).
Shown only if Authentication
Mode is set to
Password.
Sets the device password. This must match the password configured on the
ESPHome device.
Shown only if Authentication
Mode is set to
Encryption Key.
Sets the device encryption key for secure communication. This must match
the encryption key configured on the ESPHome device.
Displays the name of the connected ESPHome device.
Displays the model of the connected ESPHome device.
Displays the manufacturer of the connected ESPHome device.
Displays the MAC address of the connected ESPHome device.
Displays the firmware version of the connected ESPHome device.
Trigger the driver to update from the latest release on GitHub, regardless of the current version.
⚠️ This will reset all connection bindings and delete any programming associated with the variables.
Reset the driver connections and variables. This is useful if you change the connected ESPHome device or there are stale connections or variables.
This guide provides instructions for configuring the ESPHome driver to work with ratgdo devices for garage door control via relays in Control4 Composer Pro.
Add the desired relay controller driver to your Control4 project in Composer Pro.
The ratgdo device exposes a "Cover" entity in ESPHome, which maps to the relay controller functionality in Control4.
The ratgdo device uses a multi-relay configuration to control the garage door. In Composer Pro, you should configure the relay settings as follows:
- Set to 2 Relays (Open/Close) or 3 Relays (Open/Close/Stop)
- The ratgdo device uses separate commands for opening and closing the garage door
- If your ratgdo firmware supports the "stop" command, configure for 3 relays to enable the stop functionality. If you are not sure, you can look at the ratgdo connections in Composer Pro to see if the "Stop Door" relay is available.
- Set to Pulse
- ratgdo uses momentary pulses to trigger the garage door opener, similar to a wall button press
- Set all relay pulse times to 500 (default)
- This is the duration the relay will be activated
- Set all invert relay properties to No (default)
- Set all contact debounce times to 250 (default)
- This helps prevent false flapping of the garage door state sensors
- Set all invert contact properties to No (default)
For reference, here is an example of the relay controller properties in Composer Pro:
- Open: Connect to the ratgdo's "Open Door" relay
- Close: Connect to the ratgdo's "Close Door" relay
- Stop: Connect to the ratgdo's "Stop Door" relay, if available
- Closed Contact: Connect to the ratgdo's "Door Closed" contact
- Opened Contact: Connect to the ratgdo's "Door Open" contact
For reference, here is an example of how the connections should look in Composer Pro:
You can create programming in Control4 to:
- Open/close the garage door based on events
- Monitor the garage door state
- Set up notifications for garage door status changes
- Create custom buttons on touchscreens and remotes
Using the "Still Open Time" property from the relay controller driver:
- Set the "Still Open Time" to your desired duration (e.g., 10 minutes)
- Create a programming rule that triggers when the "Still Open" event fires
- Add actions to send notifications or perform other tasks
Depending on your ratgdo device, firmware, and its capabilities, there may be additional entities exposed by the ESPHome driver. These can come as additional connections or driver variables.
Please refer to ratgdo's documentation for more information on specific entities:
https://ratgdo.github.io/esphome-ratgdo/webui_documentation.html
If you have any questions or issues integrating this driver with Control4, you can file an issue on GitHub:
https://github.com/finitelabs/control4-esphome/issues/new
- Fixed compatibility with ESPHome 2025.10.0 for devices configured without passwords
- Improved password authentication failure detection and error reporting
- Fixed an issue with parsing unknown fields in protobuf messages
- Added support for OpenSSL with "Encryption Key" authentication mode across all applicable algorithms
- Fixed a bug with the authentication flow in the latest 2025.10.0 firmware
- Fixed switch entities not responding to bound relay proxies
- Fixed bug causing entities to not be discovered on connect
- Added support for encrypted connections using the device encryption key
- Added ratgdo specific documentation
- Initial Release





