From 87710d88dbbc59b82e458dfde1d6a8d21ec213a7 Mon Sep 17 00:00:00 2001 From: Jared Bunting Date: Tue, 7 Jul 2026 10:27:32 -0400 Subject: [PATCH] Switch garage controller to jbunting/esphome-gdo with 3 doors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces ratgdo/esphome-ratgdo with the Security+ secplus_gdo component and defines three openers: Jeep, Van, Toy. - external_components: jbunting/esphome-gdo @2026.7.0 (Renovate-tracked), components: [secplus_gdo] - secplus_gdo is UART-based (not ratgdo's single dry-contact pins): one hub per opener on a dedicated hardware UART (0/1/2), each with a garage cover + light. - Console moved to USB-Serial-JTAG so all three UARTs are free for the openers while logs + improv_serial provisioning keep working over USB. - Dropped the old ratgdo block, the leftover `temp` test binary_sensor, and the stale commented package block. Device shell (S3 board, web_server, prometheus, API encryption, OTA, improv/captive WiFi, warning LED, restart) unchanged. tx/rx pins are PLACEHOLDERS (GPIO4/5, 6/7, 15/16) — set them to match the actual wiring before flashing. Verified with a local `esphome compile` (2026.6.4); HW/wiring not tested. Co-Authored-By: Claude Opus 4.8 (1M context) --- devices/garage-door-controller.yaml | 98 +++++++++++++++++------------ 1 file changed, 58 insertions(+), 40 deletions(-) diff --git a/devices/garage-door-controller.yaml b/devices/garage-door-controller.yaml index 0210c1c..2134b3b 100644 --- a/devices/garage-door-controller.yaml +++ b/devices/garage-door-controller.yaml @@ -1,10 +1,11 @@ external_components: - source: type: git - url: https://github.com/ratgdo/esphome-ratgdo - # renovate: datasource=github-releases depName=ratgdo/esphome-ratgdo versioning=loose - ref: v1510 - refresh: 1s + url: https://github.com/jbunting/esphome-gdo + # renovate: datasource=github-releases depName=jbunting/esphome-gdo + ref: 2026.7.0 + components: [secplus_gdo] + refresh: 1d esphome: name: garage-doors @@ -22,8 +23,11 @@ text_sensor: - platform: version name: "Firmware Version" -# Enable logging +# Console on USB-Serial-JTAG frees all three hardware UARTs (0/1/2) for the +# openers below, while keeping logs + improv_serial provisioning over USB. +# Connect to the S3 devkit's native USB port (not the UART bridge port). logger: + hardware_uart: USB_SERIAL_JTAG web_server: port: 80 @@ -67,45 +71,59 @@ button: name: "Garage Door Restart" id: restart_button +# --- Security+ garage door openers (jbunting/esphome-gdo) --- +# +# Three openers, one per hardware UART (0/1/2). gdolib remaps each UART to the +# tx/rx pins below via the GPIO matrix. +# +# ⚠️ PLACEHOLDER PINS — set tx_pin/rx_pin to match your actual wiring before +# flashing. Avoid GPIO10 (warning LED), GPIO19/20 (USB), and the flash/PSRAM +# pins. invert_uart is standard for the Security+ signal. +secplus_gdo: + - id: gdo_jeep + uart_num: 0 + tx_pin: GPIO4 + rx_pin: GPIO5 + invert_uart: true + - id: gdo_van + uart_num: 1 + tx_pin: GPIO6 + rx_pin: GPIO7 + invert_uart: true + - id: gdo_toy + uart_num: 2 + tx_pin: GPIO15 + rx_pin: GPIO16 + invert_uart: true + +cover: + - platform: secplus_gdo + secplus_gdo_id: gdo_jeep + name: Jeep + device_class: garage + - platform: secplus_gdo + secplus_gdo_id: gdo_van + name: Van + device_class: garage + - platform: secplus_gdo + secplus_gdo_id: gdo_toy + name: Toy + device_class: garage + light: + # Warning indicator (not tied to a door). - id: warning_led platform: binary output: warning_led_output effects: - strobe: internal: true - -ratgdo: - id: gdo_toy - input_gdo_pin: GPIO21 - output_gdo_pin: GPIO16 - input_obst_pin: none - -binary_sensor: - - platform: gpio - pin: GPIO15 - id: temp - -# packages: - # jeep_garage_door: !include - # file: common/garage-door.yaml - # vars: - # id: jeep - # name: Jeep - # output_pin: GPIO36 - # input_pin: GPIO37 - # van_garage_door: !include - # file: common/ratgdo-door.yaml - # vars: - # id: van - # name: Van - # output_pin: GPIO1 - # input_pin: GPIO2 - # toy_garage_door: !include - # file: common/ratgdo-door.yaml - # vars: - # id: toy - # name: Toy - # output_pin: GPIO16 - # input_pin: GPIO21 - + - platform: secplus_gdo + secplus_gdo_id: gdo_jeep + name: Jeep Light + - platform: secplus_gdo + secplus_gdo_id: gdo_van + name: Van Light + - platform: secplus_gdo + secplus_gdo_id: gdo_toy + name: Toy Light