ESPHome configurations and a custom secplus_gdo external component for CircuitSetup garage door opener hardware.
This repository builds on the original garage door opener work from Konnected Inc., whose earlier ESPHome support helped establish the foundation for this project.
Use CircuitSetup garage door firmware in one of these four ways:
- CircuitSetup ESP Web Installer The quickest path if you want pre-compiled firmware and browser-based flashing.
circuitsetup-gdo-default.yamlThe simplest starter/import path for CircuitSetup Security+ hardware.circuitsetup-secplus-garage-door-opener.yamlThe full editable reference config for the Security+ opener.components/secplus_gdo/README.mdThe advanced path for directexternal_componentsusage and fully custom YAML.
For most users, start with the default or full Security+ YAML and only edit the documented substitutions near the top of the file.
For CircuitSetup Security+ hardware, the quickest starting point is:
packages:
circuitsetup.secplus-garage-door-opener: github://CircuitSetup/circuitsetup-esphome/circuitsetup-gdo-default.yaml@masterThat starter file pulls in the full Security+ package bundle from master, while the shipped configuration pins gdolib to the tested v1.2.0 release.
The full Security+ YAML now has a supported "safe customization surface" near the top of the file. Most users should only need to edit:
- Device name and friendly name
garage_label, which renames the common Garage Door / Garage Light / Garage Openings / Garage Temp / Garage Humidity entities together- Close-warning duration
- Temperature update interval and sensor offsets
- Logger level
- Wi-Fi response tuning
Example:
substitutions:
name: shop-gdo
friendly_name: Shop Door Opener
garage_label: Shop
garage_door_close_warning_duration: 8s
temp_update_interval: 30s
logger_level: INFO
wifi_power_save_mode: NONE
wifi_post_connect_roaming: "false"For Home Assistant 2026.2+ deployments, the shipped YAML documents the recommended secrets-based security settings:
api:
encryption:
key: !secret api_encryption_key
ota:
- platform: esphome
password: !secret ota_passwordUse the full Security+ YAML for common name, timing, logger, and Wi-Fi changes.
Switch to a local copy of the full YAML when you want to:
- Remove or replace packages such as
temp-sensor.yaml - Change package internals instead of top-level substitutions
- Edit the custom
secplus_gdocomponent locally
Remote package composition works well for normal setup, but it is not the best fit for deep feature toggles. For those cases, use a local checkout and the local external_components / local package workflow documented in components/secplus_gdo/README.md.
If you want to use the external component directly instead of the full package bundle, see components/secplus_gdo/README.md.
The component now starts itself during setup, so custom configs no longer need a hidden wifi.on_connect hook to call id(cs_gdo).start_gdo().