From 42f3060771c544590ead1c7002b25f30604503c0 Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Tue, 22 Feb 2022 14:44:32 +0100 Subject: [PATCH] Add router support (Closes: #12) (#14) --- .gitignore | 2 +- README.md | 54 ++++------------------ docs/flashing.md | 12 +++-- docs/router.md | 85 +++++++++++++++++++++++++++++++++++ images/zha-paired-router.png | Bin 0 -> 39474 bytes router-example.yaml | 2 +- 6 files changed, 105 insertions(+), 50 deletions(-) create mode 100644 docs/router.md create mode 100644 images/zha-paired-router.png diff --git a/.gitignore b/.gitignore index dd71e15..862848c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ .idea/ -secret.yaml +secrets.yaml .esphome/ **/.pioenvs/ **/.piolibdeps/ diff --git a/README.md b/README.md index d5a210a..6c38f71 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ![GitHub watchers](https://img.shields.io/github/watchers/syssi/esphome-zb-gw03) [!["Buy Me A Coffee"](https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg)](https://www.buymeacoffee.com/syssi) -ESPHome custom firmware for ZB-GW03 eWeLink Ethernet Zigbee Gateway. +ESPHome custom firmware for ZB-GW03 eWeLink Ethernet Zigbee Gateway ## Compatible hardware @@ -23,55 +23,19 @@ ZB-GW03 Zigbee to LAN bridge/gateway based on Espressif ESP32 and a Silicon Labs ## Requirements -* [ESPHome 2021.10.0 or higher](https://github.com/esphome/esphome/releases). +* [ESPHome 2021.9.3](https://github.com/esphome/esphome/releases) (see "Known issues") -## Installation +## Quick start guides -Use the `example.yaml` as proof of concept: - -```bash -# Install esphome -pip3 install esphome - -# Clone this external component -git clone https://github.com/syssi/esphome-zb-gw03.git -cd esphome-zb-gw03 - -# Validate the configuration, create a binary, upload it, and start logs -esphome run example.yaml -``` - -## Flash the Zigbee module via telnet - -This step is required only if the Zigbee module (SM-011 V1.0, EFR32MG21) wasn't flashed via Tasmota. - -```bash -apt-get install lrzsz -wget https://github.com/arendst/Tasmota/raw/development/tools/fw_SonoffZigbeeBridge_ezsp/ncp-uart-sw_6.7.8_115200.ota - -# Turn "download mode" switch ON -# Toggle "zigbee reset" switch -# Turn "download mode" switch OFF -# Shutdown Home Assistant (we are trying to avoid multiple cnnections to the stream_server) - -telnet 192.168.132.230 6638 - -# Press return -# Press 1 (upload gbl) -# Close the telnet connection -# Upload the new firmware -sx -vv -X -b --tcp-client 192.168.132.230:6638 ncp-uart-sw_6.7.8_115200.ota -``` - -Additional (yet untested) firmware versions: - -* https://github.com/xsp1989/zigbeeFirmware/tree/master/firmware/ZigbeeBridge_SM-011 -* https://github.com/xsp1989/zigbeeFirmware/tree/master/firmware/Zigbee3.0_Dongle/EZSP -* https://github.com/xsp1989/zigbeeFirmware/tree/master/firmware/Zigbee3.0_Dongle/RouterForDongle +* [Flash ESPHome and use the ZB-GW03 as Zigbee Coordinator](docs/flashing.md) +* [How to convert the router into a coordinator](docs/router.md) ## Known issues -None. +* Watchdog heartbeat timeouts if you use ESPHome `>2021.9.3` ([#8][i8])
+ https://github.com/oxan/esphome-stream-server/issues/14 + +[i8]: https://github.com/syssi/esphome-zb-gw03/issues/8 ## References diff --git a/docs/flashing.md b/docs/flashing.md index 8fe0958..a411d67 100644 --- a/docs/flashing.md +++ b/docs/flashing.md @@ -1,5 +1,11 @@ # Flashing guide +![GitHub actions](https://github.com/syssi/esphome-zb-gw03/actions/workflows/ci.yaml/badge.svg) +![GitHub stars](https://img.shields.io/github/stars/syssi/esphome-zb-gw03) +![GitHub forks](https://img.shields.io/github/forks/syssi/esphome-zb-gw03) +![GitHub watchers](https://img.shields.io/github/watchers/syssi/esphome-zb-gw03) +[!["Buy Me A Coffee"](https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg)](https://www.buymeacoffee.com/syssi) + Table of contents: * [Warning](#warning) * [Tools needed](#tools-needed) @@ -127,8 +133,8 @@ Setup an ESPHome Project (see [README.md](../README.md)), compile the firmware f flash the firmware to the device: ``` -$ esphome run example.yaml -INFO Reading configuration example.yaml... +$ esphome run coordinator-example.yaml +INFO Reading configuration coordinator-example.yaml... WARNING GPIO4 is a Strapping PIN and should be avoided. Attaching external pullup/down resistors to strapping pins can cause unexpected failures. See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins @@ -255,4 +261,4 @@ Turn "download mode" switch OFF and toggle "zigbee reset" again. The Zigbee modu * Search for "ZHA" (Zigbee Home Automation) * Choose "Enter Manually" at the serial port selection dialog * Choose "EZSP" as type of your Zigbee radio -* The serial device path is `socket://esphome_node_name.local:6638` (f.e. `socket://zb-gw03.local:6638` if you use the `example.yaml`). Enter `115200` baud as port speed and the "data flow control" is `software` +* The serial device path is `socket://esphome_node_name.local:6638` (f.e. `socket://zb-gw03.local:6638` if you use the `coordinator-example.yaml`). Enter `115200` baud as port speed and the "data flow control" is `software` diff --git a/docs/router.md b/docs/router.md new file mode 100644 index 0000000..84a57ad --- /dev/null +++ b/docs/router.md @@ -0,0 +1,85 @@ +# How to convert the router into a coordinator + +![GitHub actions](https://github.com/syssi/esphome-zb-gw03/actions/workflows/ci.yaml/badge.svg) +![GitHub stars](https://img.shields.io/github/stars/syssi/esphome-zb-gw03) +![GitHub forks](https://img.shields.io/github/forks/syssi/esphome-zb-gw03) +![GitHub watchers](https://img.shields.io/github/watchers/syssi/esphome-zb-gw03) +[!["Buy Me A Coffee"](https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg)](https://www.buymeacoffee.com/syssi) + +#### 1. Make sure Home Assistant (ZHA) doesn't use the device as coordinator + +#### 2. Flash the `router-example.yaml` to your ZB-GW03 + +``` +esphome run router-example.yaml +``` + +#### 3. Install the xmodem file transfer tool lrzsz + +``` +apt-get install lrzsz +``` + +#### 4. Download the Zigbee router firmware image + +``` +wget https://github.com/digiblur/Tasmota/raw/development/zigbee_router/efr32mg21_zigbee_router_signed-6.7.10.gbl.ota +``` + +#### 5. Boot the Zigbee module into the download mode + +- Turn on the `Download Mode` switch entity via Home Assistant +- Turn on the `Zigbee Reset` switch entity via Home Assistant (goes to "off" automatically) +- Turn off the `Download Mode` + +#### 6. Telnet to the bootloader of the Zigbee module and select "upload gbl" + +- `telnet 192.168.132.230 6638` +- Press `return` +- Press `1` and `return` to select "upload gbl" + +``` +$ telnet 192.168.132.230 6638 +Trying 192.168.132.230... +Connected to 192.168.132.230. +Escape character is '^]'. + +Gecko Bootloader v1.9.1.04 +1. upload gbl +2. run +3. ebl info +BL > +Gecko Bootloader v1.9.1.04 +1. upload gbl +2. run +3. ebl info +BL > 1 + +begin upload +``` + +#### 7. Goto a second terminal and upload the new firmware. You don't need to cancel the telnet session + +``` +$ sx -vv -X -b --tcp-client 192.168.132.230:6638 efr32mg21_zigbee_router_signed-6.7.10.gbl.ota +connecting to [192.168.132.230] <6638> + +Sending efr32mg21_zigbee_router_signed-6.7.10.gbl.ota, 1843 blocks: Give your local XMODEM receive command now. +Bytes Sent: 236032 BPS:3556 + +Transfer complete +``` + +#### 8. Restart the Zigbee module via Home Asisstant or Reboot the whole device + +Press the `Zigbee Reset` switch or `Restart` switch. + +#### 9. Enable the "Pairing Mode" + +Goto the ESPHome device in Home Assistant and turn the "Enable Pairing Mode" switch on. + +#### 10. The Router can be paired now with your Zigbee Coordinator + +If you use ZHA go to your Zigbee Coordinator Device and press "Add device". + +![Paired Zigbee router](../images/zha-paired-router.png "Paired Zigbee router") diff --git a/images/zha-paired-router.png b/images/zha-paired-router.png new file mode 100644 index 0000000000000000000000000000000000000000..7be82eb976f768e6f8c9afbe0eff4bc106158f73 GIT binary patch literal 39474 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