216 lines
5.5 KiB
YAML
216 lines
5.5 KiB
YAML
esphome:
|
|
name: garage
|
|
platform: ESP8266
|
|
board: esp01_1m
|
|
on_boot:
|
|
then:
|
|
- if:
|
|
condition:
|
|
and:
|
|
- binary_sensor.is_on: SensorUnten
|
|
- binary_sensor.is_off: SensorOben
|
|
then:
|
|
- lambda: |-
|
|
id(GarageStatus) = 2;
|
|
- if:
|
|
condition:
|
|
and:
|
|
- binary_sensor.is_off: SensorUnten
|
|
- binary_sensor.is_on: SensorOben
|
|
then:
|
|
- lambda: |-
|
|
id(GarageStatus) = 0;
|
|
- if:
|
|
condition:
|
|
and:
|
|
- binary_sensor.is_off: SensorUnten
|
|
- binary_sensor.is_off: SensorOben
|
|
then:
|
|
- lambda: |-
|
|
id(GarageStatus) = 1;
|
|
|
|
# Enable logging
|
|
logger:
|
|
|
|
# Enable Home Assistant API
|
|
#api:
|
|
|
|
ota:
|
|
password: "6e5ed3fb02234218269a67f7fb3dc2fb"
|
|
|
|
wifi:
|
|
ssid: "EasyBox-368239"
|
|
password: "inginf95"
|
|
|
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
|
ap:
|
|
ssid: "Garage Fallback Hotspot"
|
|
password: "inginf95"
|
|
|
|
captive_portal:
|
|
|
|
web_server:
|
|
port: 80
|
|
auth:
|
|
username: nils
|
|
password: inginf95
|
|
|
|
globals:
|
|
- id: GarageStatus
|
|
type: int
|
|
restore_value: no
|
|
initial_value: '0'
|
|
#0 = open
|
|
#1 = in transit
|
|
#2 = closed, assume the garage is closed
|
|
|
|
mqtt:
|
|
broker: 192.168.178.36
|
|
port: 1884
|
|
username: nils
|
|
password: inginf95
|
|
|
|
switch:
|
|
- platform: gpio
|
|
name: "Relay"
|
|
id: pushbutton
|
|
pin: 14
|
|
inverted: true
|
|
on_turn_on:
|
|
- delay: 500ms
|
|
- switch.turn_off: pushbutton
|
|
|
|
text_sensor:
|
|
- platform: mqtt_subscribe
|
|
name: "Garage Command"
|
|
id: command
|
|
topic: cmnd/Badezimmer/MQTTGateway/Garage/target
|
|
on_value:
|
|
- if:
|
|
condition:
|
|
text_sensor.state:
|
|
id: command
|
|
state: 'OPEN'
|
|
then:
|
|
- mqtt.publish:
|
|
topic: stat/Garage/status
|
|
payload: "Garage soll geöffnet werden"
|
|
- if:
|
|
condition:
|
|
lambda: 'return (id(GarageStatus)==2);'
|
|
then:
|
|
- switch.turn_on: pushbutton
|
|
- if:
|
|
condition:
|
|
text_sensor.state:
|
|
id: command
|
|
state: 'CLOSE'
|
|
then:
|
|
- mqtt.publish:
|
|
topic: stat/Garage/status
|
|
payload: "Garage soll geschlossen werden"
|
|
- if:
|
|
condition:
|
|
lambda: 'return (id(GarageStatus)==0);'
|
|
then:
|
|
- switch.turn_on: pushbutton
|
|
|
|
|
|
|
|
|
|
binary_sensor:
|
|
- platform: gpio
|
|
pin:
|
|
number: 5
|
|
name: SensorOben
|
|
id: SensorOben
|
|
on_state:
|
|
if:
|
|
condition:
|
|
binary_sensor.is_on: SensorOben
|
|
then:
|
|
if:
|
|
condition:
|
|
binary_sensor.is_off: SensorUnten
|
|
then:
|
|
- mqtt.publish:
|
|
topic: stat/Garage/status
|
|
payload: "Garage ist offen"
|
|
- mqtt.publish:
|
|
topic: stat/Badezimmer/MQTTGateway/Garage/status
|
|
payload: "OPENED"
|
|
- lambda: |-
|
|
id(GarageStatus) = 0;
|
|
else: #is off
|
|
if:
|
|
condition:
|
|
binary_sensor.is_on: SensorUnten
|
|
then:
|
|
- mqtt.publish:
|
|
topic: stat/Garage/status
|
|
payload: "Garage ist geschlossen"
|
|
- mqtt.publish:
|
|
topic: stat/Badezimmer/MQTTGateway/Garage/status
|
|
payload: "CLOSED"
|
|
- lambda: |-
|
|
id(GarageStatus) = 2;
|
|
else:
|
|
- mqtt.publish:
|
|
topic: stat/Garage/status
|
|
payload: "Garage ist in Transit"
|
|
- mqtt.publish:
|
|
topic: stat/Badezimmer/MQTTGateway/Garage/status
|
|
payload: "IN TRANSIT"
|
|
- lambda: |-
|
|
id(GarageStatus) = 1;
|
|
- platform: gpio
|
|
pin:
|
|
number: 4
|
|
name: SensorUnten
|
|
id: SensorUnten
|
|
on_state:
|
|
if:
|
|
condition:
|
|
binary_sensor.is_on: SensorUnten
|
|
then:
|
|
if:
|
|
condition:
|
|
binary_sensor.is_off: SensorOben
|
|
then:
|
|
- mqtt.publish:
|
|
topic: stat/Garage/status
|
|
payload: "Garage ist geschlossen"
|
|
- mqtt.publish:
|
|
topic: stat/Badezimmer/MQTTGateway/Garage/status
|
|
payload: "CLOSED"
|
|
- lambda: |-
|
|
id(GarageStatus) = 2;
|
|
else: #is off
|
|
if:
|
|
condition:
|
|
binary_sensor.is_on: SensorOben
|
|
then:
|
|
- mqtt.publish:
|
|
topic: stat/Garage/status
|
|
payload: "Garage ist offen"
|
|
- mqtt.publish:
|
|
topic: stat/Badezimmer/MQTTGateway/Garage/status
|
|
payload: "OPENED"
|
|
- lambda: |-
|
|
id(GarageStatus) = 0;
|
|
else:
|
|
- mqtt.publish:
|
|
topic: stat/Garage/status
|
|
payload: "Garage ist in Transit"
|
|
- mqtt.publish:
|
|
topic: stat/Badezimmer/MQTTGateway/Garage/status
|
|
payload: "IN TRANSIT"
|
|
- lambda: |-
|
|
id(GarageStatus) = 1;
|
|
|
|
sensor:
|
|
- platform: wifi_signal
|
|
name: "WiFi Signal Sensor"
|
|
update_interval: 60s
|
|
- platform: uptime
|
|
name: Uptime Sensor |