Задача: Хочу перепрошить 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
Шаг №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(): 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.