Задача: Хочу перепрошить Sonoff ZigBee Bridge с заводской прошивки на прошивку Tasmota дабы после данное устройство можно было подключить в систему «Умный дом» базирующееся под именем Domoticz.

Кстати я начал вести еще один блог посвященной практической постройке «Умного дома»: https://home.ekzorchik.ru

У меня уже есть два устройства от Sonoff — это реле Sonoff TH10 & Sonoff TH16 которые успешно функционируют в Domoticz на прошивке Tasmota через протокол MQTT

Мне в данном задумке понадобится:

  • Паяльник (канифоль, припой, провода)
  • Набор для пайки REXANT
  • Большой комплект отверток Braumann 122в1 с размагничивателем и гибким удлинителем
  • Шлюз Sonoff ZBBridge WiFi
    • Input: 5V ≈ 1A
    • Working temperature: -10 до +40
    • Wireless connections: Wi-Fi 802.11 b/g/n 2.4 GHz, ZigBee 3.0
  • Рабочая система Lubuntu 18.04 Desktop
  • PL2303 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

У меня плата ZigBee Bridge V1.1 от 2020.02.28

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

 

Схема соединения 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 сети

Указываю параметры подключения шлюза к своей домашней Wi-Fi сети

  • AP1 SSId(): test
  • AP1 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.