92 lines
2.1 KiB
YAML
92 lines
2.1 KiB
YAML
esphome:
|
|
name: mateuszs-tv
|
|
friendly_name: Mateusz's TV
|
|
|
|
esp32:
|
|
board: esp32dev
|
|
framework:
|
|
type: arduino
|
|
|
|
# Enable logging
|
|
logger:
|
|
|
|
# Enable Home Assistant API
|
|
api:
|
|
encryption:
|
|
key: "sn7OnWvf695dM1BAlpkhUFeFbBOyLCFwob+vOEiz6MY="
|
|
|
|
ota:
|
|
platform: esphome
|
|
password: !secret ota
|
|
|
|
wifi:
|
|
ssid: !secret wifi_ssid
|
|
password: !secret wifi_password
|
|
|
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
|
ap:
|
|
ssid: "Mateuszs-Tv Fallback Hotspot"
|
|
password: "j781muxx0RXE"
|
|
|
|
captive_portal:
|
|
|
|
web_server:
|
|
|
|
# Define the TV state binary sensor (connected to GPIO34)
|
|
binary_sensor:
|
|
- platform: gpio
|
|
pin:
|
|
number: 34
|
|
mode: INPUT
|
|
name: "Status"
|
|
id: status
|
|
device_class: power
|
|
|
|
text_sensor:
|
|
- platform: homeassistant
|
|
entity_id: remote.chromecast_hd
|
|
id: tv_status
|
|
on_value:
|
|
- lambda: |-
|
|
if (id(override).state == false) {
|
|
if (x == "on" && !id(power_switch).state) {
|
|
id(power_switch).turn_on();
|
|
} else if (x == "off" && id(power_switch).state) {
|
|
id(power_switch).turn_off();
|
|
}
|
|
}
|
|
|
|
# Define the switch to control TV power (Only toggled via Home Assistant)
|
|
switch:
|
|
- platform: template
|
|
name: "Switch"
|
|
id: power_switch
|
|
restore_mode: RESTORE_DEFAULT_OFF
|
|
# turn_on_action:
|
|
# - output.turn_off: tv_relay # Set P23 LOW
|
|
# - delay: 300ms
|
|
# - output.turn_on: tv_relay # Set P23 HIGH
|
|
optimistic: true
|
|
turn_off_action:
|
|
- lambda: |-
|
|
if (millis() > 5000) { // Check if 5 seconds have passed since startup
|
|
id(tv_relay).turn_off(); // Set P23 LOW
|
|
delay(1500); // Delay for 1500ms
|
|
id(tv_relay).turn_on(); // Set P23 HIGH
|
|
}
|
|
|
|
- platform: template
|
|
name: "Override"
|
|
id: override
|
|
optimistic: true
|
|
restore_mode: RESTORE_DEFAULT_OFF
|
|
|
|
# Define GPIO23 as the output (normally pull-up)
|
|
output:
|
|
- platform: gpio
|
|
id: tv_relay
|
|
pin:
|
|
number: 23
|
|
mode: OUTPUT
|
|
inverted: false # Normal logic (LOW = active)
|