86 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			1.8 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
 | |
|     on_state:
 | |
|       - lambda: |-
 | |
|           if (!id(power_switch).state == x) {
 | |
|             id(power_switch).publish_state(x);
 | |
|           }
 | |
| 
 | |
| text_sensor:
 | |
|   - platform: homeassistant
 | |
|     entity_id: remote.chromecast_hd
 | |
|     id: tv_status
 | |
|     on_value:
 | |
|       - lambda: |-
 | |
|           if (x == "on") {
 | |
|             id(power_switch).turn_on();
 | |
|           } else {
 | |
|             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
 | |
|     optimistic: true
 | |
|     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
 | |
|     turn_off_action:
 | |
|       - output.turn_off: tv_relay  # Set P23 LOW
 | |
|       - delay: 1500ms
 | |
|       - output.turn_on: tv_relay   # Set P23 HIGH
 | |
| 
 | |
| # 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)
 |