substitutions:
  devicename: qia-smart-switch
  friendly_name: QIA Smart switch
esphome:
  name: ${devicename}
bk72xx:
  board: generic-bk7231n-qfn32-tuya
logger:
api:
  encryption:
    key: !secret encryption_key
ota:
  password: !secret ota_password
wifi:
  networks:
    - ssid: !secret wifi_ssid
      password: !secret wifi_password
  ap:
    ssid: ${friendly_name} Hotspot
    password: !secret ap_password
captive_portal:
time:
  - platform: homeassistant
    id: homeassistant_time
web_server:
  port: 80
debug:
  update_interval: 5s
sensor:
  - platform: debug
    free:
      name: ${friendly_name} Heap Free
    loop_time:
      name: ${friendly_name} Loop Time
  - platform: wifi_signal
    name: ${friendly_name} WiFi Signal
    update_interval: 30s
  - platform: uptime
    name: Uptime Sensor
    id: uptime_sensor
    update_interval: 60s
    on_raw_value:
      then:
        - text_sensor.template.publish:
            id: uptime_human
            state: !lambda |-
              int seconds = round(id(uptime_sensor).raw_state);
              int days = seconds / (24 * 3600);
              seconds = seconds % (24 * 3600);
              int hours = seconds / 3600;
              seconds = seconds % 3600;
              int minutes = seconds /  60;
              seconds = seconds % 60;
              return (
                (days ? to_string(days) + "d " : "") +
                (hours ? to_string(hours) + "h " : "") +
                (minutes ? to_string(minutes) + "m " : "") +
                (to_string(seconds) + "s")
              ).c_str();
text_sensor:
  - platform: libretiny
    version:
      name: ${friendly_name} LibreTiny Version
      icon: mdi:cube-outline
  - platform: wifi_info
    ip_address:
      name: "${friendly_name} IP address"
    ssid:
      name: "${friendly_name} connected SSID"
    mac_address:
      name: "${friendly_name} MAC WiFi address"
  - platform: template
    name: Uptime Human Readable
    id: uptime_human
    icon: mdi:clock-start
  - platform: debug
    device:
      name: Device Info
    reset_reason:
      name: Reset Reason
light:
  - platform: status_led
    name: "led"
    internal: true
    id: led
    pin:
      number: P10
      inverted: true
binary_sensor:
  - platform: status
    name: ${friendly_name} status
  - platform: gpio
    pin:
      number: P7
      mode: INPUT_PULLUP
      inverted: true
    name: ${friendly_name} button
    internal: true
    filters:
      - delayed_on: 10ms
      - delayed_off: 10ms
    on_press:
      - switch.toggle: relay
switch:
  - platform: gpio
    id: relay
    name: ${friendly_name} relay
    pin: P8
    icon: mdi:electric-switch
    on_turn_on:
      - light.turn_on: led
    on_turn_off:
      - light.turn_off: led
button:
  - platform: restart
    id: restart_button
    name: ${friendly_name} restart
    entity_category: diagnostic