2023-06-09 14:20:53 -05:00
---
2023-06-08 12:48:16 -05:00
2023-06-07 18:26:40 -05:00
external_components :
- source :
type : git
2023-09-12 18:42:17 -05:00
url : https://github.com/ratgdo/esphome-ratgdo
2023-06-07 18:26:40 -05:00
refresh : 1s
2023-06-25 10:45:37 -05:00
preferences :
flash_write_interval : 5s
2023-06-07 18:26:40 -05:00
ratgdo :
id : ${id_prefix}
2023-06-23 06:52:29 -07:00
input_gdo_pin : ${uart_rx_pin}
output_gdo_pin : ${uart_tx_pin}
input_obst_pin : ${input_obst_pin}
2023-07-07 15:56:12 -07:00
on_sync_failed :
then :
- homeassistant.service :
service : persistent_notification.create
data :
title : "${friendly_name} sync failed"
message : "Failed to communicate with garage opener on startup; Check the ${friendly_name} Rolling code counter number entity history and set the entity to one number larger than the largest value in history. [ESPHome devices](/config/devices/dashboard?domain=esphome)"
notification_id : "esphome_ratgdo_${id_prefix}_sync_failed"
2023-06-07 18:26:40 -05:00
2023-06-09 17:36:56 -05:00
sensor :
- platform : ratgdo
id : ${id_prefix}_openings
type : openings
entity_category : diagnostic
ratgdo_id : ${id_prefix}
2023-06-09 17:58:46 -05:00
name : "Openings"
2023-06-09 17:36:56 -05:00
unit_of_measurement : "openings"
2023-06-09 17:53:27 -05:00
icon : mdi:open-in-app
2023-06-09 17:36:56 -05:00
2023-12-05 16:12:01 -08:00
lock :
2023-06-09 15:54:20 -05:00
- platform : ratgdo
id : ${id_prefix}_lock_remotes
ratgdo_id : ${id_prefix}
2023-06-09 17:58:46 -05:00
name : "Lock remotes"
2023-12-05 16:12:01 -08:00
switch :
2023-06-09 15:41:36 -05:00
- platform : gpio
id : "${id_prefix}_status_door"
2023-06-09 17:45:15 -05:00
internal : true
2023-10-18 14:23:30 -10:00
pin :
2023-06-13 11:30:38 -10:00
number : ${status_door_pin} # D0 output door status, HIGH for open, LOW for closed
2023-06-09 15:41:36 -05:00
mode :
output : true
2023-06-09 17:58:46 -05:00
name : "Status door"
2023-06-09 15:41:36 -05:00
entity_category : diagnostic
- platform : gpio
id : "${id_prefix}_status_obstruction"
2023-06-09 17:45:15 -05:00
internal : true
2023-10-18 14:23:30 -10:00
pin :
2023-06-13 11:30:38 -10:00
number : ${status_obstruction_pin} # D8 output for obstruction status, HIGH for obstructed, LOW for clear
2023-06-09 15:41:36 -05:00
mode :
output : true
2023-06-09 17:58:46 -05:00
name : "Status obstruction"
2023-06-09 15:41:36 -05:00
entity_category : diagnostic
2023-10-08 21:36:09 -07:00
- platform : template
id : ${id_prefix}_stop_while_closing_workaround
entity_category : config
name : "Stop while closing workaround"
optimistic : true
restore_mode : RESTORE_DEFAULT_OFF
turn_on_action :
- lambda : |-
id(${id_prefix})->set_stop_while_closing_workaround(true);
turn_off_action :
- lambda : |-
id(${id_prefix})->set_stop_while_closing_workaround(false);
2023-06-09 15:41:36 -05:00
2023-06-07 18:26:40 -05:00
binary_sensor :
- platform : ratgdo
type : motion
id : ${id_prefix}_motion
ratgdo_id : ${id_prefix}
2023-06-09 17:58:46 -05:00
name : "Motion"
2023-06-07 18:26:40 -05:00
device_class : motion
- platform : ratgdo
type : obstruction
id : ${id_prefix}_obstruction
ratgdo_id : ${id_prefix}
2023-06-09 17:58:46 -05:00
name : "Obstruction"
2023-06-07 18:26:40 -05:00
device_class : problem
2023-06-09 15:41:36 -05:00
on_press :
- switch.turn_on : ${id_prefix}_status_obstruction
on_release :
- switch.turn_off : ${id_prefix}_status_obstruction
2023-06-09 18:05:06 -05:00
- platform : ratgdo
type : button
id : ${id_prefix}_button
ratgdo_id : ${id_prefix}
name : "Button"
2023-10-18 14:23:30 -10:00
entity_category : diagnostic
2023-06-07 21:40:07 -05:00
- platform : ratgdo
type : motor
id : ${id_prefix}_motor
ratgdo_id : ${id_prefix}
2023-06-09 17:58:46 -05:00
name : "Motor"
2023-06-07 21:40:07 -05:00
device_class : running
2023-06-08 06:54:05 -05:00
entity_category : diagnostic
2023-06-09 11:08:16 -05:00
- platform : gpio
2023-06-09 14:38:21 -05:00
id : "${id_prefix}_dry_contact_open"
2023-10-18 14:23:30 -10:00
pin :
2023-06-13 11:30:38 -10:00
number : ${dry_contact_open_pin} # D5 dry contact for opening door
2023-06-09 14:28:41 -05:00
inverted : true
mode :
input : true
pullup : true
2023-06-09 17:58:46 -05:00
name : "Dry contact open"
2023-06-09 14:13:40 -05:00
entity_category : diagnostic
2023-11-16 09:00:47 -06:00
filters :
- delayed_on_off : 500ms
2023-06-09 12:33:18 -05:00
on_press :
2023-06-09 14:38:21 -05:00
- if :
condition :
binary_sensor.is_off : ${id_prefix}_dry_contact_close
then :
2023-06-09 17:56:47 -05:00
- cover.open : ${id_prefix}_garage_door
2023-06-09 12:33:18 -05:00
- platform : gpio
2023-06-09 14:38:21 -05:00
id : "${id_prefix}_dry_contact_close"
2023-10-18 14:23:30 -10:00
pin :
2023-06-13 11:30:38 -10:00
number : ${dry_contact_close_pin} # D6 dry contact for closing door
2023-06-09 14:28:41 -05:00
inverted : true
mode :
input : true
2023-10-18 14:23:30 -10:00
pullup : true
2023-06-09 17:58:46 -05:00
name : "Dry contact close"
2023-06-09 14:13:40 -05:00
entity_category : diagnostic
2023-11-16 09:00:47 -06:00
filters :
- delayed_on_off : 500ms
2023-06-09 12:33:18 -05:00
on_press :
2023-06-09 14:38:21 -05:00
- if :
condition :
binary_sensor.is_off : ${id_prefix}_dry_contact_open
then :
2023-06-09 17:56:47 -05:00
- cover.close : ${id_prefix}_garage_door
2023-06-09 12:33:18 -05:00
- platform : gpio
2023-06-09 14:38:21 -05:00
id : "${id_prefix}_dry_contact_light"
2023-10-18 14:23:30 -10:00
pin :
2023-06-13 11:30:38 -10:00
number : ${dry_contact_light_pin} # D3 dry contact for triggering light (no discrete light commands, so toggle only)
2023-06-09 14:28:41 -05:00
inverted : true
mode :
input : true
2023-10-18 14:23:30 -10:00
pullup : true
2023-06-09 17:58:46 -05:00
name : "Dry contact light"
2023-06-09 14:13:40 -05:00
entity_category : diagnostic
2023-11-16 09:00:47 -06:00
filters :
- delayed_on_off : 500ms
2023-06-09 12:33:18 -05:00
on_press :
2023-06-09 14:23:18 -05:00
- light.toggle : ${id_prefix}_light
2023-06-07 18:26:40 -05:00
number :
- platform : ratgdo
id : ${id_prefix}_rolling_code_counter
type : rolling_code_counter
entity_category : config
ratgdo_id : ${id_prefix}
2023-06-09 17:58:46 -05:00
name : "Rolling code counter"
2023-06-07 18:34:24 -05:00
mode : box
unit_of_measurement : "codes"
2023-10-18 14:23:30 -10:00
2023-06-25 16:03:39 -07:00
- platform : ratgdo
id : ${id_prefix}_opening_duration
type : opening_duration
entity_category : config
ratgdo_id : ${id_prefix}
name : "Opening duration"
unit_of_measurement : "s"
- platform : ratgdo
id : ${id_prefix}_closing_duration
type : closing_duration
entity_category : config
ratgdo_id : ${id_prefix}
name : "Closing duration"
unit_of_measurement : "s"
2023-06-07 18:26:40 -05:00
2023-10-26 12:04:35 -05:00
- platform : ratgdo
id : ${id_prefix}_client_id
type : client_id
entity_category : config
ratgdo_id : ${id_prefix}
name : "Client ID"
mode : box
2023-06-07 18:26:40 -05:00
cover :
- platform : ratgdo
2023-06-09 17:56:17 -05:00
id : ${id_prefix}_garage_door
2023-06-07 18:26:40 -05:00
device_class : garage
2023-06-09 17:58:46 -05:00
name : "Door"
2023-06-07 18:26:40 -05:00
ratgdo_id : ${id_prefix}
2023-06-09 15:43:13 -05:00
on_closed :
2023-06-09 15:41:36 -05:00
- switch.turn_off : ${id_prefix}_status_door
2023-06-09 15:42:01 -05:00
on_open :
2023-06-09 15:41:36 -05:00
- switch.turn_on : ${id_prefix}_status_door
2023-06-07 18:26:40 -05:00
light :
- platform : ratgdo
2023-06-09 14:23:41 -05:00
id : ${id_prefix}_light
2023-06-09 17:58:46 -05:00
name : "Light"
2023-06-07 18:26:40 -05:00
ratgdo_id : ${id_prefix}
button :
- platform : restart
2023-06-09 17:58:46 -05:00
name : "Restart"
2023-06-08 11:50:39 -05:00
- platform : safe_mode
2023-06-09 17:58:46 -05:00
name : "Safe mode boot"
2023-06-08 11:50:39 -05:00
entity_category : diagnostic
2023-10-18 14:23:30 -10:00
2023-06-24 16:51:19 -07:00
- platform : template
id : ${id_prefix}_query_status
2023-06-07 18:45:37 -05:00
entity_category : diagnostic
2023-06-24 16:51:19 -07:00
name : "Query status"
2023-10-18 14:23:30 -10:00
on_press :
2023-06-24 16:51:19 -07:00
then :
lambda : !lambda |-
2023-10-18 14:23:30 -10:00
id($id_prefix).query_status();
2023-06-24 16:51:19 -07:00
- platform : template
id : ${id_prefix}_query_openings
name : "Query openings"
entity_category : diagnostic
2023-10-18 14:23:30 -10:00
on_press :
2023-06-24 16:51:19 -07:00
then :
lambda : !lambda |-
id($id_prefix).query_openings();
- platform : template
2023-06-25 08:52:16 -07:00
id : ${id_prefix}_sync
2023-06-09 17:58:46 -05:00
name : "Sync"
2023-06-07 18:59:49 -05:00
entity_category : diagnostic
2023-10-18 14:23:30 -10:00
on_press :
2023-06-24 16:51:19 -07:00
then :
lambda : !lambda |-
2023-10-18 17:18:42 -07:00
id($id_prefix).sync();
- platform : template
id : ${id_prefix}_toggle_door
name : "Toggle door"
2023-10-18 14:23:30 -10:00
on_press :
2023-10-18 17:18:42 -07:00
then :
lambda : !lambda |-
id($id_prefix).toggle_door();