esphome: name: couchlight on_boot: then: - lock.template.publish: id: child_lock state: UNLOCKED esp8266: board: d1_mini # Enable logging logger: # Enable Home Assistant API api: encryption: key: !secret api_encryption_key # OTA ota: - platform: esphome password: !secret ota_password # WiFi Credentials wifi: domain: .lan ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Couchlight Fallback Hotspot" password: !secret wifi_ap_password captive_portal: light: - id: light1 platform: binary name: "Couch 1" output: relay_light1 - id: light2 platform: binary name: "Couch 2" output: relay_light2 output: - id: relay_light1 platform: gpio pin: D1 - id: relay_light2 platform: gpio pin: D2 script: - id: reset_child_lock mode: restart then: - delay: 30min - lock.template.publish: id: child_lock state: UNLOCKED binary_sensor: - id: button_light1 name: "Couch 1 PushButton" platform: gpio pin: number: D7 mode: INPUT_PULLUP filters: - invert - delayed_on: 50ms on_press: then: - if: condition: lock.is_unlocked: child_lock then: - light.toggle: light1 internal: true # hide from UI - id: button_light2 name: "Couch 2 PushButton" platform: gpio pin: number: D6 mode: INPUT_PULLUP filters: - invert - delayed_on: 50ms on_press: then: - if: condition: lock.is_unlocked: child_lock then: - light.toggle: light2 internal: true # hide from UI lock: - id: child_lock platform: template name: "Child Lock" optimistic: true on_lock: - script.execute: reset_child_lock on_unlock: - script.stop: reset_child_lock