144 lines
3.3 KiB
YAML
144 lines
3.3 KiB
YAML
substitutions:
|
|
devicename: bathroom-switch-1
|
|
# Name for the relays
|
|
channel_1: Light
|
|
channel_2: Air
|
|
max_power: "2000.0" # watt
|
|
max_temp: "80.0" # °C
|
|
|
|
esphome:
|
|
name: ${devicename}
|
|
platform: ESP8266
|
|
board: esp01_1m
|
|
|
|
wifi:
|
|
ssid: !secret wifi_ssid
|
|
password: !secret wifi_password
|
|
|
|
# Enable Home Assistant API
|
|
api:
|
|
|
|
i2c:
|
|
sda: GPIO12
|
|
scl: GPIO14
|
|
|
|
sensor:
|
|
- platform: ade7953_i2c
|
|
voltage:
|
|
name: ${devicename} voltage
|
|
current_a:
|
|
name: ${channel_2} current
|
|
internal: true
|
|
current_b:
|
|
name: ${channel_1} current
|
|
internal: true
|
|
active_power_a:
|
|
name: ${channel_2} power
|
|
id: power_channel_2
|
|
filters:
|
|
- multiply: 1
|
|
on_value_range:
|
|
- above: ${max_power}
|
|
then:
|
|
- output.turn_off: shelly_25_relay_2
|
|
- homeassistant.service:
|
|
service: persistent_notification.create
|
|
data:
|
|
title: Message from ${devicename}
|
|
data_template:
|
|
message: Switch turned off because power exceeded ${max_power}W
|
|
active_power_b:
|
|
name: ${channel_1} power
|
|
id: power_channel_1
|
|
filters:
|
|
- multiply: -1
|
|
on_value_range:
|
|
- above: ${max_power}
|
|
then:
|
|
- output.turn_off: shelly_25_relay_1
|
|
- homeassistant.service:
|
|
service: persistent_notification.create
|
|
data:
|
|
title: Message from ${devicename}
|
|
data_template:
|
|
message: Switch turned off because power exceeded ${max_power}W
|
|
update_interval: 30s
|
|
|
|
# NTC Temperature
|
|
- platform: ntc
|
|
sensor: temp_resistance_reading
|
|
name: ${devicename} temperature
|
|
unit_of_measurement: "°C"
|
|
accuracy_decimals: 1
|
|
icon: "mdi:thermometer"
|
|
calibration:
|
|
b_constant: 3350
|
|
reference_resistance: 10kOhm
|
|
reference_temperature: 298.15K
|
|
on_value_range:
|
|
- above: ${max_temp}
|
|
then:
|
|
- output.turn_off: shelly_25_relay_1
|
|
- output.turn_off: shelly_25_relay_2
|
|
- homeassistant.service:
|
|
service: persistent_notification.create
|
|
data:
|
|
title: Message from ${devicename}
|
|
data_template:
|
|
message: Switch turned off because temperature exceeded ${max_temp}°C
|
|
- platform: resistance
|
|
id: temp_resistance_reading
|
|
sensor: temp_analog_reading
|
|
configuration: DOWNSTREAM
|
|
resistor: 32kOhm
|
|
- platform: adc
|
|
id: temp_analog_reading
|
|
pin: A0
|
|
|
|
status_led:
|
|
pin:
|
|
number: GPIO0
|
|
inverted: yes
|
|
|
|
output:
|
|
- platform: gpio
|
|
pin: GPIO4
|
|
id: shelly_25_relay_1
|
|
- platform: gpio
|
|
pin: GPIO15
|
|
id: shelly_25_relay_2
|
|
|
|
light:
|
|
- platform: binary
|
|
name: "${channel_1}"
|
|
output: shelly_25_relay_1
|
|
id: lightid
|
|
- platform: binary
|
|
name: "${channel_2}"
|
|
output: shelly_25_relay_2
|
|
id: airid
|
|
|
|
binary_sensor:
|
|
- platform: gpio
|
|
pin:
|
|
number: GPIO13
|
|
name: "${channel_1} input"
|
|
internal: true
|
|
on_state:
|
|
then:
|
|
- light.toggle: lightid
|
|
- platform: gpio
|
|
pin:
|
|
number: GPIO5
|
|
name: "${channel_2} input"
|
|
internal: true
|
|
on_state:
|
|
then:
|
|
- light.toggle: airid
|
|
|
|
# Prevent short circuit with "floating" pin!
|
|
- platform: gpio
|
|
pin: GPIO16
|
|
name: "ade7953 IRQ pin"
|
|
internal: true
|