Files
esp32-configs/athom-zigbee-gateway.yaml
T
2025-08-19 17:07:02 +08:00

179 lines
4.1 KiB
YAML

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: "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.4"
# 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
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: 1100ms
window: 1100ms
active: true
bluetooth_proxy:
active: true
#WT32-ETH01 Ethernet
ethernet:
type: LAN8720
mdc_pin: GPIO23
mdio_pin: GPIO18
clk_mode: GPIO17_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"