Skip to content

Instantly share code, notes, and snippets.

@gretel
Last active November 8, 2025 21:53
Show Gist options
  • Select an option

  • Save gretel/e7f2aa35206679c62b40aa95dd111d04 to your computer and use it in GitHub Desktop.

Select an option

Save gretel/e7f2aa35206679c62b40aa95dd111d04 to your computer and use it in GitHub Desktop.
ESPHome Configuration for a ZigBee-Coordinator on ZB-GW03 hardware. Condensation of https://github.com/syssi/esphome-zb-gw03 into one file with some changes.
---
# https://gist.github.com/gretel/e7f2aa35206679c62b40aa95dd111d04
# based on https://github.com/syssi/esphome-zb-gw03
substitutions:
devicename: 'hallzigbee'
area: 'Hall'
logger_level: 'INFO'
domain: '.jitter.local'
enable_ipv6: False
esphome:
name: ${devicename}
comment: 'https://zigbee.blakadder.com/eWeLink_ZB-GW03.html'
project:
name: 'gretel.crs'
version: '0.2025.11.08'
min_version: 2025.10.0
area: ${area}
on_boot:
priority: 600
then:
- switch.turn_off: download_mode
- switch.turn_on: zigbee_reset
esp32:
board: esp-wrover-kit
framework:
type: esp-idf
external_components:
#- source: github://oxan/esphome-stream-server@master
- source: github://tube0013/esphome-stream-server-v2
logger:
level: ${logger_level}
network:
enable_ipv6: ${enable_ipv6}
min_ipv6_addr_count: 2
ethernet:
type: LAN8720
mdc_pin: GPIO23
mdio_pin: GPIO18
power_pin: GPIO16
clk:
pin: GPIO17
mode: CLK_OUT
phy_addr: 1
domain: ${domain}
ota:
- platform: esphome
password: !secret ota_key
time:
- platform: homeassistant
id: homeassistant_time
api:
reboot_timeout: 0s # disable
encryption:
key: !secret zigbee_key
status_led:
pin:
number: GPIO15 # Red LED
inverted: True
mdns:
services:
- service: "_zigbee-coordinator"
protocol: "_tcp"
port: 6638
txt:
version: 1
name: "ZB-GW03"
radio_type: "ezsp"
serial_number: !lambda 'return esphome::get_mac_address();'
i2c:
- id: i2c_bus
sda: GPIO33
scl: GPIO32
scan: False
uart:
id: uart_zigbee
rx_pin: GPIO4
tx_pin: GPIO2
baud_rate: 115200
stream_server:
id: sserver
uart_id: uart_zigbee
port: 6638
sensor:
- platform: internal_temperature
name: "Core Temperature"
update_interval: 15s
- platform: uptime
name: "Uptime"
update_interval: 15s
icon: "mdi:clock-start"
binary_sensor:
- platform: status
name: "Status"
- platform: stream_server
name: "Stream Server Status"
stream_server: sserver
text_sensor:
- platform: version
name: "Version"
icon: "mdi:exponent-box"
- platform: ethernet_info
ip_address:
name: "IP Address"
address_0:
name: "IP Address 0"
address_1:
name: "IP Address 1"
address_2:
name: "IP Address 2"
address_3:
name: "IP Address 3"
address_4:
name: "IP Address 4"
dns_address:
name: "DNS Address"
mac_address:
name: "MAC Address"
button:
- platform: restart
name: "Restart"
icon: "mdi:restart"
switch:
- platform: template
id: zigbee_reset
name: "Zigbee Reset"
turn_on_action:
- switch.turn_on: zigbee_rst
- delay: 10ms
- switch.turn_off: zigbee_rst
- platform: gpio
id: zigbee_rst
pin: GPIO13 # nRST
name: "Zigbee nRST"
inverted: True
internal: True
restore_mode: ALWAYS_OFF
- platform: gpio
id: download_mode
pin: GPIO12 # PA00
name: "Zigbee Download Mode"
inverted: True
restore_mode: ALWAYS_OFF
- platform: template
id: zigbee_pairing_mode
name: "Zigbee Pairing mode"
turn_on_action:
- switch.turn_on: download_mode
- delay: 5s
- switch.turn_off: download_mode
light:
- platform: monochromatic
name: "Green LED"
output: output0
output:
- platform: ledc
pin: GPIO14
id: output0
inverted: True
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment