--- esphome: name: ${id_prefix} friendly_name: ${friendly_name} name_add_mac_suffix: true project: name: ratgdo.esphome version: "1.0" esp8266: board: d1_mini_lite restore_from_flash: true external_components: - source: type: git url: https://github.com/esphome-ratgdo/esphome-ratgdo ref: dev refresh: 1s ratgdo: id: ${id_prefix} uart: tx_pin: number: D4 # red control terminal / GarageDoorOpener (UART1 TX) pin is D4 on D1 Mini inverted: true rx_pin: number: D2 # red control terminal / GarageDoorOpener (UART1 RX) pin is D2 on D1 Mini inverted: true baud_rate: 9600 switch: - platform: ratgdo id: ${id_prefix}_lock_remotes type: lock entity_category: config ratgdo_id: ${id_prefix} name: "${friendly_name} Lock remotes" - platform: gpio id: "${id_prefix}_status_door" pin: number: D0 # D0 output door status, HIGH for open, LOW for closed mode: output: true name: "${friendly_name} Status door" entity_category: diagnostic - platform: gpio id: "${id_prefix}_status_obstruction" pin: number: D8 # D8 output for obstruction status, HIGH for obstructed, LOW for clear mode: output: true name: "${friendly_name} Status obstruction" entity_category: diagnostic binary_sensor: - platform: ratgdo type: motion id: ${id_prefix}_motion ratgdo_id: ${id_prefix} name: "${friendly_name} Motion" device_class: motion - platform: ratgdo type: obstruction id: ${id_prefix}_obstruction ratgdo_id: ${id_prefix} name: "${friendly_name} Obstruction" device_class: problem on_press: - switch.turn_on: ${id_prefix}_status_obstruction on_release: - switch.turn_off: ${id_prefix}_status_obstruction - platform: ratgdo type: motor id: ${id_prefix}_motor ratgdo_id: ${id_prefix} name: "${friendly_name} Motor" device_class: running entity_category: diagnostic - platform: gpio id: "${id_prefix}_dry_contact_open" pin: number: D5 # D5 dry contact for opening door inverted: true mode: input: true pullup: true name: "${friendly_name} Dry contact open" entity_category: diagnostic on_press: - if: condition: binary_sensor.is_off: ${id_prefix}_dry_contact_close then: - cover.open: ${id_prefix}_garage - platform: gpio id: "${id_prefix}_dry_contact_close" pin: number: D6 # D6 dry contact for closing door inverted: true mode: input: true pullup: true name: "${friendly_name} Dry contact close" entity_category: diagnostic on_press: - if: condition: binary_sensor.is_off: ${id_prefix}_dry_contact_open then: - cover.close: ${id_prefix}_garage - platform: gpio id: "${id_prefix}_dry_contact_light" pin: number: D3 # D3 dry contact for triggering light (no discrete light commands, so toggle only) inverted: true mode: input: true pullup: true name: "${friendly_name} Dry contact light" entity_category: diagnostic on_press: - light.toggle: ${id_prefix}_light number: - platform: ratgdo id: ${id_prefix}_rolling_code_counter type: rolling_code_counter entity_category: config ratgdo_id: ${id_prefix} name: "${friendly_name} Rolling code counter" mode: box unit_of_measurement: "codes" cover: - platform: ratgdo id: ${id_prefix}_garage device_class: garage name: ${friendly_name} ratgdo_id: ${id_prefix} on_closed: - switch.turn_off: ${id_prefix}_status_door on_open: - switch.turn_on: ${id_prefix}_status_door light: - platform: ratgdo id: ${id_prefix}_light name: "${friendly_name} Light" ratgdo_id: ${id_prefix} button: - platform: restart name: "${friendly_name} Restart" - platform: safe_mode name: "${friendly_name} Safe mode boot" entity_category: diagnostic - platform: ratgdo id: ${id_prefix}_sync type: sync entity_category: diagnostic ratgdo_id: ${id_prefix} name: "${friendly_name} Sync" - platform: ratgdo id: ${id_prefix}_query type: query entity_category: diagnostic ratgdo_id: ${id_prefix} name: "${friendly_name} Query"