substitutions:
  # Default name
  name: "athom-zigbee-gateway"
  # Default friendly name   
  friendly_name: "Athom Zigbee Gateway"
  # Allows ESP device to be automatically linked to an 'Area' in Home Assistant. Typically used for areas such as 'Lounge Room', 'Kitchen' etc  
  room: ""
  # Description as appears in ESPHome & top of webserver page
  device_description: "athom eth zigbee gateway"
  # Project Name
  project_name: "China Athom Technology.Athom Zigbee Gateway"
  # Projection version denotes the release version of the yaml file, allowing checking of deployed vs latest version
  project_version: "v2.0.6"
  # Define a domain for this device to use. i.e. iot.home.lan (so device will appear as athom-smart-plug-v2.iot.home.lan in DNS/DHCP logs)
  dns_domain: ".local"
  # Set timezone of the smart plug. Useful if the plug is in a location different to the HA server. Can be entered in unix Country/Area format (i.e. "Australia/Sydney") 
  timezone: ""
  # Define logging level: NONE, ERROR, WARN, INFO, DEBUG (Default), VERBOSE, VERY_VERBOSE
  log_level: "DEBUG"


esphome:
  name: "${name}"
  friendly_name: "${friendly_name}"
  comment: "${device_description}"
  area: "${room}"
  name_add_mac_suffix: true
  project:
    name: "${project_name}"
    version: "${project_version}"
  platformio_options:
    # board_build.mcu: esp32dev
    # board_build.variant: esp32dev
    board_build.flash_mode: dio

esp32:
  board: esp32dev
  flash_size: 4MB
  framework:
    type: esp-idf
    version: recommended

external_components:
  - source: github://oxan/esphome-stream-server
    refresh: 0s

dashboard_import:
  package_import_url: github://athom-tech/esp32-configs/athom-zigbee-gateway.yaml

esp32_ble_tracker:
  scan_parameters:
    interval: 320ms
    window: 320ms
    active: true

bluetooth_proxy:
  active: true

#WT32-ETH01 Ethernet
ethernet:
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk:
    pin: GPIO17
    mode: CLK_OUT
  phy_addr: 1

# wifi:
#   # This spawns an AP with the device name and mac address with no password.
#   ap: {}
#   # Allow rapid re-connection to previously connect WiFi SSID, skipping scan of all SSID
#   fast_connect: "${wifi_fast_connect}"
#   # Define dns domain / suffix to add to hostname
#   domain: "${dns_domain}"

# captive_portal:

# Enable logging
logger:
  baud_rate: 115200
  level: ${log_level}
  
# Enable Home Assistant API
api:
  reboot_timeout: 0s

ota:
  platform: esphome

web_server:
  port: 80
  local: True

switch:
  - platform: gpio
    pin: 32
    id: zRST_gpio
    inverted: yes
    restore_mode: ALWAYS_OFF

  - platform: gpio
    pin: 33
    name: "zBSL"
    id: zBSL
    inverted: yes
    restore_mode: ALWAYS_OFF

  - platform: template
    name: "Prep the cc2652p2 for firmware update"
    turn_on_action:
      - script.execute: fw_update_mode
    turn_off_action:
      - button.press: zRST

button:
  - platform: restart
    name: "Restart the Device"

  - platform: template
    name: "Zigbee Module Restart"
    id: zRST
    on_press:
      - switch.turn_on: zRST_gpio
      - delay: 15ms
      - switch.turn_off: zRST_gpio

uart:
  id: uart_bus
  rx_pin: GPIO14
  tx_pin: GPIO12
  baud_rate: 115200

stream_server:
  uart_id: uart_bus
  id: ss
  port: 8888 # optional, default is 8888

binary_sensor:
  - platform: stream_server
    connected:
      name: "AthomZB Serial Connected"

  - platform: status
    name: "Status"
    entity_category: diagnostic

mdns:
  services:
    - service: "_athomzb"
      protocol: "_tcp"
      port: 8888
      txt:
        version: 1.0
        name: AthomZB
        radio_type: znp
        baud_rate: 115200
        data_flow_control: software

light:
  - platform: status_led
    name: "Status LED"
    id: blue_led
    disabled_by_default: true
    pin:
      inverted: true
      number: GPIO15

script:
  - id: fw_update_mode
    then:
      - switch.turn_on: zBSL
      - delay: 1s
      - switch.turn_on: zRST_gpio
      - delay: 1s
      - switch.turn_off: zRST_gpio
      - logger.log: "Delaying ~10 seconds for cc2652p2 to settle"
      - delay: 11s
      - switch.turn_off: zBSL
      - logger.log: "Please try update with cc2538-bsl tool now"
      - logger.log: "cc-bsl usage: cc2538-bsl.py -p socket://ip-of-gw:8888 -evw firmware.hex"
