Hi all,
Thank you for this great thread.
I recently bought also a ZB-GW03 v1.4 gateway.
Inspired by @syssi and @tube0013 GitHub repo I connected a Z-Wave module (zooz ZAC93) to the ZB-GW03 … and it’s working .
Also modified the case a bit by cutting some parts away so the additional PCB will fit and adding some magnets to the bottom side.
Here some screenshots:
Here the EspHome yaml:
substitutions:
name: "ZB-GW03 Coordinator"
device_description: "ZB-GW03 v1.4 (SM-011) eWeLink Ethernet Zigbee Gateway based Zigbee Coordinator"
mdns_name: "zb-gw03-coordinator"
pin_zw_tx: GPIO1
pin_zw_rx: GPIO3
pin_zb_tx: GPIO2
pin_zb_rx: GPIO4
pin_bsl: GPIO12
pin_rst: GPIO13
pin_led_green: GPIO14
pin_led_red: GPIO15
pin_eth_power: GPIO16
pin_eth_mdio: GPIO18
pin_eth_mdc: GPIO23
pin_scl: GPIO32
pin_sda: GPIO33
pin_btn: GPIO34
esphome:
name: ${mdns_name}
friendly_name: ${name}
comment: ${device_description}
min_version: 2024.6.0
project:
name: "syssi.esphome-zb-gw03"
version: 2.1.0
on_boot:
priority: 600
then:
- switch.turn_off: download_mode
- switch.turn_on: zigbee_reset
- lambda: |-
id(mdns0).add_extra_service({
"_zigbee-coordinator",
"_tcp",
6638,
{
{"name", "ZB-GW03"},
{"serial_number", get_mac_address()},
{"radio_type", "ezsp"}
}
});
id(mdns0).add_extra_service({
"_zwave",
"_tcp",
6639,
{
{"version", "1.0"},
{"name", "ZB-GW03"},
{"serial_number", get_mac_address()}
}
});
esp32:
board: esp-wrover-kit
framework:
type: esp-idf
external_components:
- source: github://oxan/esphome-stream-server@master
mdns:
id: mdns0
ota:
platform: esphome
password: !secret ota_password
id: ota_pass
api:
encryption:
key: !secret ha_api_key
web_server:
port: 80
auth:
username: !secret webserver_username
password: !secret webserver_password
logger:
level: INFO
hardware_uart: UART1
debug:
update_interval: 5s
i2c:
- id: i2c_bus
sda: $pin_sda
scl: $pin_scl
scan: true
uart:
- id: uart_zigbee
rx_pin: $pin_zb_rx
tx_pin: $pin_zb_tx
baud_rate: 115200
- id: uart_zwave
rx_pin: $pin_zw_rx
tx_pin: $pin_zw_tx
baud_rate: 115200
stream_server:
- id: server_zigbee
uart_id: uart_zigbee
port: 6638
- id: server_zwave
uart_id: uart_zwave
port: 6639
ethernet:
type: LAN8720
mdc_pin: $pin_eth_mdc
mdio_pin: $pin_eth_mdio
clk_mode: GPIO17_OUT
phy_addr: 1
power_pin: $pin_eth_power
status_led:
pin:
number: $pin_led_red
inverted: true
light:
- platform: monochromatic
name: "Green LED"
output: output_led
output:
- platform: ledc
pin: $pin_led_green
id: output_led
inverted: true
button:
- platform: restart
name: "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
# SM-011 V1.0 nRST
- platform: gpio
id: zigbee_rst
pin: $pin_rst
name: "Zigbee nRST"
inverted: true
internal: true
restore_mode: ALWAYS_OFF
# SM-011 V1.0 PA00
- platform: gpio
id: download_mode
pin: $pin_bsl
name: "Zigbee Download Mode"
inverted: true
restore_mode: ALWAYS_OFF
binary_sensor:
- platform: gpio
name: "Zigbee Reset Button"
pin:
number: $pin_btn
inverted: true
on_press:
- switch.turn_off: download_mode
- switch.turn_on: zigbee_reset
- platform: stream_server
stream_server: server_zigbee
connected:
name: "Zigbee Serial Connected"
- platform: stream_server
stream_server: server_zwave
connected:
name: "Z-Wave Serial Connected"
text_sensor:
- platform: version
hide_timestamp: true
name: "ESPHome Version"
- platform: ethernet_info
ip_address:
name: "IP Address"
dns_address:
name: "DNS Address"
mac_address:
name: "MAC Address"