HomeAutomation/garage.yaml
Jason Williams c3225ab919 Update garage.yaml
Adding additional code to immediately set the status of the garage door when the status of the fully open or fully closed sensor changes
2023-05-15 11:54:03 -06:00

162 lines
3.7 KiB
YAML

esphome:
name: garage
platform: ESP8266
board: nodemcuv2
logger:
level: INFO
ota:
password: "143fd33979958ada2bb06df1622d5a4d"
wifi:
ssid: !secret ssid
password: !secret pass
fast_connect: true
mqtt:
broker: henry.int.jnf.me
username: esphome
password: esphome
topic_prefix: esphome/garage
dallas:
- pin: D7
sensor:
- platform: dallas
address: 0x7701143100966C28
name: "Freezer"
id: garage_freezer
- platform: dallas
address: 0x200114310A086F28
name: "Garage"
id: garage_temp
- platform: ultrasonic
trigger_pin: D5
echo_pin: D8
id: garage_spot_1
internal: true
- platform: ultrasonic
trigger_pin: D3
echo_pin: D4
id: garage_spot_2
internal: true
text_sensor:
- platform: template
name: "Garage Door State"
id: garage_door_state
lambda: !lambda |-
if (id(garage_door_open).state && id(garage_door_closed).state) {
return {"Error"};
} else if (id(garage_door_open).state) {
return {"Open"};
} else if (id(garage_door_closed).state) {
return {"Closed"};
} else return {"Moving"};
binary_sensor:
- platform: gpio
pin: D0
name: "Garage Door"
device_class: door
id: garage_door_open
filters:
- invert:
on_press:
then:
- lambda: |-
id(garage_door).current_operation = COVER_OPERATION_IDLE;
id(garage_door).position = COVER_OPEN;
id(garage_door_state).publish_state("Open");
on_release:
then:
- lambda: |-
id(garage_door).current_operation = COVER_OPERATION_CLOSING;
id(garage_door).publish_state();
id(garage_door_state).publish_state("Moving");
- platform: gpio
pin: D1
id: garage_door_closed
filters:
- invert:
internal: true
on_press:
then:
- lambda: |-
id(garage_door).current_operation = COVER_OPERATION_IDLE;
id(garage_door).position = COVER_CLOSED;
id(garage_door_state).publish_state("Closed");
on_release:
then:
- lambda: |-
id(garage_door).current_operation = COVER_OPERATION_OPENING;
id(garage_door).publish_state();
id(garage_door_state).publish_state("Moving");
- platform: gpio
pin: D2
name: "Side Door"
device_class: door
filters:
- invert
- delayed_off: 5s
- platform: template
name: "Left Parking Spot"
device_class: occupancy
lambda: |-
if (id(garage_spot_1).state < 2) {
return true;
} else {
return false;
}
- platform: template
name: "Right Parking Spot"
device_class: occupancy
lambda: |-
if (id(garage_spot_2).state < 2) {
return true;
} else {
return false;
}
switch:
- platform: gpio
pin:
number: D6
inverted: true
id: garage_door_switch
on_turn_on:
- delay: 500ms
- switch.turn_off: garage_door_switch
internal: true
cover:
- platform: template
name: "Garage Door"
id: garage_door
device_class: garage
lambda: !lambda |-
if (id(garage_door_open).state) {
return COVER_OPEN;
} else if (id(garage_door_closed).state) {
return COVER_CLOSED;
} else return {};
open_action:
- switch.turn_on: garage_door_switch
- delay: 3s
- if:
condition:
binary_sensor.is_on: garage_door_closed
then:
- switch.turn_on: garage_door_switch
close_action:
- switch.turn_on: garage_door_switch
- delay: 3s
- if:
condition:
binary_sensor.is_on: garage_door_open
then:
- switch.turn_on: garage_door_switch