configs/sthome-ut1.yaml
2025-08-23 17:02:53 +02:00

179 lines
4.0 KiB
YAML

esphome:
name: sthome-ut1
friendly_name: sthome-ut1
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
level: INFO
# Enable Home Assistant API
api:
encryption:
key: "0Ki4j7JX8Y1IkMGh1fBBu2Dg6DgrnUq8GEXKZvkzeSY="
ota:
- platform: esphome
password: "37f546590fcc15e1323d273540eb623a"
wifi:
#ssid: !secret wifi_ssid
#password: !secret wifi_password
# we will use local dns server for local dns resolution
domain: ".sthome.org"
networks:
- ssid: !secret wifi_ssid1
password: !secret wifi_password1
- ssid: !secret wifi_ssid2
password: !secret wifi_password2
- ssid: !secret wifi_ssid3
password: !secret wifi_password3
- ssid: !secret wifi_ssid4
password: !secret wifi_password4
- ssid: !secret wifi_ssid5
password: !secret wifi_password5
manual_ip:
# For faster connection startup, set a static IP address
# Set this to the IP of the ESP
static_ip: 10.0.2.1
gateway: 10.0.0.2
subnet: 255.255.240.0
dns1: 10.0.0.1
dns2: 10.0.0.2
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "sthome-ut1 Fallback Hotspot"
password: "7SglIlgdkpAD"
captive_portal:
#preferences:
# flash_write_interval: 30s
sun:
id: sun_sensor
latitude: !secret latitude
longitude: !secret longitude
time:
- platform: homeassistant
#define OUTPUT_R1 16
#define OUTPUT_R2 17
#define OUTPUT_R3 18
#define OUTPUT_R4 19
switch:
- platform: gpio
pin:
number: GPIO16
inverted: true
id: relay1
name: "Floodlights Backyard"
icon: "mdi:light-flood-down"
restore_mode: RESTORE_DEFAULT_OFF
# the backyard floodlight auto turns off in 4min 14 sec. So we need to switch relay off just before or at this time
# TODO: remove or extend auto turn off to >= 10min
on_turn_on:
- delay: 250s
- switch.turn_off: relay1
- platform: gpio
pin:
number: GPIO17
inverted: true
id: relay2
name: "Relay 2"
icon: "mdi:run-fast"
restore_mode: RESTORE_DEFAULT_OFF
on_turn_on:
- delay: 1000ms
- switch.turn_off: relay2
- platform: gpio
pin:
number: GPIO18
inverted: true
id: relay3
name: "Relay 3"
icon: "mdi:run-fast"
restore_mode: RESTORE_DEFAULT_OFF
on_turn_on:
- delay: 1000ms
- switch.turn_off: relay3
- platform: gpio
pin:
number: GPIO19
inverted: true
id: relay4
name: "Alarm Zone 4"
icon: "mdi:alarm-light-outline"
restore_mode: RESTORE_DEFAULT_OFF
on_turn_on:
- if:
condition:
- lambda: |-
double sun_elevation = id(sun_sensor).elevation();
return (sun_elevation <= -6); // -6° = civil twilight, -12° = nautical twilight, -18° = astronomical twilight
#- sun.is_below_horizon:
then:
- switch.turn_on: relay1
- if:
condition:
- binary_sensor.is_on: floodlight_test
then:
- switch.turn_on: relay1
- delay: 30s
- switch.turn_off: relay4
# define DIGITAL_D1 04
binary_sensor:
- platform: gpio
# device_class: light
id: floodlight_test
pin:
number: GPIO04
mode:
input: true
pullup: true
filters:
- delayed_off: 100ms
name: "Floodlights Test Mode"
icon: "mdi:lightbulb-on-outline"
#define ANALOG_A1 33
#define ANALOG_A2 32
#define ANALOG_A3 35
#define ANALOG_A4 34
#define ANALOG_A5 39
#define ANALOG_A6 36
sensor:
- platform: adc
pin: 35
name: "Alarm Signal"
id: alarm_signal
update_interval: 2000ms
attenuation: 12db
sampling_mode: avg
filters:
- lambda:
if (x >= 3.11) {
return x * 1.60256;
} else if (x <= 0.25) {
return 0;
} else {
return x * 1.51;
}
on_value:
then:
# switch on floodlights
lambda: |-
if (id(alarm_signal).state > 1.5) {
id(relay1).turn_on();
}