Задача: Хочу перепрошить Sonoff ZigBee Bridge с заводской прошивки на прошивку Tasmota дабы после данное устройство можно было подключить в систему «Умный дом» базирующееся под именем Domoticz.
Кстати я начал вести еще один блог посвященной практической постройке «Умного дома»: https://home.ekzorchik.ru
У меня уже есть два устройства от Sonoff — это реле Sonoff TH10 & Sonoff TH16 которые успешно функционируют в Domoticz на прошивке Tasmota через протокол MQTT
Мне в данном задумке понадобится:
Паяльник (канифоль, припой, провода)Набор для пайки REXANTБольшой комплект отверток Braumann 122в1 с размагничивателем и гибким удлинителемШлюз Sonoff ZBBridge WiFiInput: 5V ≈ 1AWorking temperature: -10 до +40Wireless connections: Wi-Fi 802.11 b/g/n 2.4 GHz, ZigBee 3.0
Рабочая система Lubuntu 18.04 DesktopPL2303 USB UART Board (mini), Преобразователь USB-UART на базе PL2303 с разъемом USB mini-AB
Шаг №1: Разбираю шлюз Sonoff ZBBridge Bridge посредством одной из насадок из набора Braumann 122в1.
Шаг №2: Включаю паяльник и жду когда он прогреется и будет готов к работе.
Шаг №3: После разбора шлюза осматриваю плату.
У меня плата ZigBee Bridge V1.1 от 2020.02.28
За WiFi отвечает модуль ESP8266, за Zigbee EFR32MG21

Шаг №4: У меня есть схема посредством посредством которой мне нужно будет посредством паяльника объединить шлюз и преобразовать USB-UART

| Sonoff ZigBee Bridge | PL2303 USB UART Board |
| 3V3 | VCC/3.3.V |
| GND | GND |
| ERX | TX |
| ETX | RX |
| IO0(GPIO00) | GND (for flash only) |
В ней на первый момент как я на нее посмотрел не совсем понятно было IO0 к GND, но после я понял, что нужно на контакт на плате IO0 приходит GND от преобразователя и после от него выходит провод на GND.
Ниже скриншот который я сделал для себя дабы в последствии если я буду проделывать еще раз мне все стало понятно и я не переживал как же все таки я до нового момента это сделал и написал данную пошаговую заметку.

Шаг №5: После того как я все спаял, на рабочей станции под управлением Lubuntu 18.04 Desktop запускаю Terminal: Ctlr + Alt + T
Шаг №6: Дабы взаимодействовать с преобразователем USB-UART нужно в систему поставить утилиту esptool.py:
ekzorchik@srv-lubuntu:~$ sudo usermod -aG dialout ekzorchik
ekzorchik@srv-lubuntu:~$ sudo apt-get install -y setserial
ekzorchik@srv-lubuntu:~$ sudo apt-get install python3-pip build-essential libssl-dev libffi-dev python3-dev python3-venv ipython3 -y
ekzorchik@srv-lubuntu:~$ python3 -m venv /home/ekzorchik/esptool-env
ekzorchik@srv-lubuntu:~$ source /home/ekzorchik/esptool-env/bin/activate
(esptool-env) ekzorchik@srv-lubuntu:~$
(esptool-env) ekzorchik@srv-lubuntu:~$ python3 -m pip install setuptools wheel esptool
(esptool-env) ekzorchik@srv-lubuntu:~$ cd ./esptool-env/bin/
Шаг №7: Порядок взаимодействия через приложение esptool.py сводится к простым действиям перед каждым выполнением команд консоли:
Отключаю USB от преобразователя USB-UARTПодключаю USB от преобразователя USB-UART к компьютеруВвожу заранее набранную команду в консоли и нажимаю клавишу Enter и она исполняется.
Шаг №8: Посредством шагов из «Шаг №7» извлекаю содержимое chip_id из шлюза:
(esptool-env) ekzorchik@srv-lubuntu:~/esptool-env/bin$ esptool.py --port /dev/ttyUSB0 chip_id
esptool.py v3.0
Serial port /dev/ttyUSB0
Connecting...
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 98:f4:ab:e3:21:67
Uploading stub...
Running stub...
Stub running...
Chip ID: 0x00e32167
Hard resetting via RTS pin...
(esptool-env) ekzorchik@srv-lubuntu:~/esptool-env/bin$
Шаг №9: Посредством шагов из «Шаг №7» извлекаю содержимое flash_id из шлюза:
(esptool-env) ekzorchik@srv-lubuntu:~/esptool-env/bin$ esptool.py --port /dev/ttyUSB0 flash_id
esptool.py v3.0
Serial port /dev/ttyUSB0
Connecting...
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 98:f4:ab:e3:21:67
Uploading stub...
Running stub...
Stub running...
Manufacturer: a1
Device: 4015
Detected flash size: 2MB
Hard resetting via RTS pin...
(esptool-env) ekzorchik@srv-lubuntu:~/esptool-env/bin$
из вывода видно, что размер флеш памяти равняется 2MB это значение мне понадобится в дальнейшем:
Шаг №9: Посредством шагов из «Шаг №7» выполняю бекап заводской прошивки на случай если нужно будет вернуть все как было с завода:
(esptool-env) ekzorchik@srv-lubuntu:~/esptool-env/bin$ esptool.py --port /dev/ttyUSB0 read_flash 0 0x200000 sonoffdefault.bin
esptool.py v3.0
Serial port /dev/ttyUSB0
Connecting...
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 98:f4:ab:e3:21:67
Uploading stub...
Running stub...
Stub running...
2097152 (100 %)
2097152 (100 %)
Read 2097152 bytes at 0x0 in 190.7 seconds (88.0 kbit/s)...
Hard resetting via RTS pin...
(esptool-env) ekzorchik@srv-lubuntu:~/esptool-env/bin$
Шаг №10: Посредством шагов из «Шаг №7» выполняю очистку записанной в шлюз заводской прошивки дабы в следующем шаге залить прошивку от Tasmota:
(esptool-env) ekzorchik@srv-lubuntu:~/esptool-env/bin$ esptool.py --port /dev/ttyUSB0 erase_flash
esptool.py v3.0
Serial port /dev/ttyUSB0
Connecting...
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 98:f4:ab:e3:21:67
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 2.4s
Hard resetting via RTS pin...
(esptool-env) ekzorchik@srv-lubuntu:~/esptool-env/bin$
Шаг №11: Скачиваю прошивку tasmota-zbbridge.bin которая предназначена для шлюза Sonoff Zigbee Bridge на момент написания данной заметки:
(esptool-env) ekzorchik@srv-lubuntu:~/esptool-env/bin$ wget http://ota.tasmota.com/tasmota/release/tasmota-zbbridge.bin
(esptool-env) ekzorchik@srv-lubuntu:~/esptool-env/bin$ ls -lh tasmota-zbbridge.bin
-rw-rw-r-- 1 ekzorchik ekzorchik 587K Dec 21 17:06 tasmota-zbbridge.bin
Шаг №12: Посредством шагов из «Шаг №7» выполняю заливку прошивки в шлюз которую скачал в «Шаг №11»:
(esptool-env) ekzorchik@srv-lubuntu:~/esptool-env/bin$ esptool.py --port /dev/ttyUSB0 write_flash -fs 2MB -fm dout 0x0 tasmota-zbbridge.bin
esptool.py v3.0
Serial port /dev/ttyUSB0
Connecting...
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 98:f4:ab:e3:21:67
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Compressed 600976 bytes to 424904...
Wrote 600976 bytes (424904 compressed) at 0x00000000 in 38.1 seconds (effective 126.3 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
(esptool-env) ekzorchik@srv-lubuntu:~/esptool-env/bin$
Шаг №13: Теперь можно отключать uart адаптер, отпаивать провода и собирать все обратно в корпус.
Подаем питание на шлюз.
На смартфоне Honor 9X включаю Wi-Fi модуль и вижу сеть вида: tasmota_E32167— (без защиты) — это мое устройства кликаю по нему и оказываюсь подключенным к настройкам Sonoff ZbBridge Module где указываю параметры подключения шлюза к своей домашней Wi-Fi сети

AP1 SSId(): testAP1 Password: Aa1234567
и нажимаю Save, после чего шлюз отправится в перезагрузку и по итогу мне нужно будет на своем домашнем роутере.
Шаг №14: Проверяю на своем роутере Mikrotik rb2011UiAS-2Hnd-IN, что мой шлюз Sonoff ZBBridge Bridge подключился к Wi-Fi сети и ему присвоился IP—адрес от DHCP—сервиса:
Winbox — IP&DNS:PORT — user&pass — Wireless — вкладка Registration и вижу MAC адрес своего реле:
у меня это 172.33.33.105, сразу делаю его статическим.
Шаг №15: Обращаюсь через браузер к Web—интерфейсу своего шлюза, т. е. Это выглядит так: http://172.33.33.105

Итого я успешно перепрошил шлюз Sonoff ZBBridge Bridge и он уже теперь мой, т. е. Мой в смысле что я могу из своей локальной сети управлять им и он более не привязан к облаку производителя.
Итого данная заметка полностью работоспособна
и я сделал задачу которую долго не мог
сделать, т.к. все форумы, консультации в Telegram каналах приводили лишь к фразе: Тебя что в Google забанили, уже сто раз все объясняли. Вообще да пошли все, лучше сделать самим и составить инструкцию для себя и не делиться. Свои наработки — это свои наработки.
На этом заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.