Задача: Хочу перепрошить реле Sonoff TH10
чтобы взаимодействовать с ним можно было не через облако производителя, а через свою собственную локальную сеть, ну а после я уже прикручу его к Home Assistant
на Ubuntu 18.04 Server
которая будет на моем домашнем сервере HP MicroServer Gen8 (ESXi 6.0)
. И никакой одноплатный компьютер в лице Raspberry Pi 3 Model B+
и выше (облако производителя) для этих целей я не приемлю.
Итак, для реализации задуманного мне понадобится:
рабочая станция в лице Ubuntu 18.04 Lubuntu Desktop
PL2303 USB UART Board (mini), Преобразователь USB-UART на базе PL2303 с разъемом USB mini-AB
Кабель miniUSB на USB
Sonoff Model: TH10
Провода типа «Мама-Папа»
Паяльник не потребуется.
Выход в интернет
Шаг №1:
Разбираю реле Sonoff TH10
до состояния когда вижу внутренности, к примеру как на представленном скриншоте ниже:
Шаг №2:
Проверяю, как моя система Lubuntu 18.04 Desktop
опознала преобразователь подключенный к ней через USB:
ekzorchik@srv-dbionic:~$ dmesg | grep tty [ 0.000000] console [tty0] enabled [ 1.158396] tty ttyS9: hash matches [ 699.655747] usb 5-1: pl2303 converter now attached to ttyUSB0 [ 768.209218] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0 [ 772.114834] usb 5-1: pl2303 converter now attached to ttyUSB0
Шаг №3:
Чтобы учетная запись ekzorchik
могла взаимодействовать с устройством ttyUSB
ее нужно включить в группу dialout
:
ekzorchik@srv-dbionic:~$ sudo usermod -aG dialout ekzorchik ekzorchik@srv-dbionic:~$ sudo apt-get install -y setserial ekzorchik@srv-dbionic:~$ sudo setserial -g /dev/ttyUSB0 /dev/ttyUSB0, UART: 16654, Port: 0x0000, IRQ: 0 ekzorchik@srv-dbionic:~$ ekzorchik@srv-dbionic:~$ sudo reboot
Шаг №4:
Далее соединяем Преобразователь USB-UART
на базе PL2303
и реле Sonoff TH10
проводами и выставляем переключатель на преобразователе, что работа должна вестись по питанию 3.3V:
USB-UART PL2303 | Sonoff TH10 |
VCC | VCC |
GND | GND |
TXD | E-RX |
RXD | E-TX |
Шаг №5:
На рабочей станции Lubuntu 18.04 Desktop
устанавливаю виртуальное окружение для Python
и скачиваю утилиту esptool:
ekzorchik@srv-bionic:~$ sudo apt-get install python3-pip build-essential libssl-dev libffi-dev python3-dev python3-venv ipython3 -y ekzorchik@srv-dbionic:~$ python3 -m venv /home/ekzorchik/esptool-env ekzorchik@srv-dbionic:~$ source /home/ekzorchik/esptool-env/bin/activate (esptool-env) ekzorchik@srv-dbionic:~$ (esptool-env) ekzorchik@srv-dbionic:~$ python3 -m pip install setuptools wheel esptool (esptool-env) ekzorchik@srv-dbionic:~$ cd ./esptool-env/bin/
Шаг №6:
Теперь чтобы взаимодействовать с реле Sonoff TH 10
через преобразователь нужно:
проверить что реле и преобразователь соединены правильно
Выставлен джампер на 3.3V
На реле нажимаем кнопку и держим (обязательно)
USB кабелем соединения преобразователь и систему (Рабочий компьютер или ноутбук, у меня ноутбук Sony VAIO)
Затем взаимодействуем через консоль
Шаг №7:
Проверяем, что можем считать MAC
адрес реле:
(esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ ./esptool.py read_mac esptool.py v3.0 Found 1 serial ports Serial port /dev/ttyUSB0 Connecting.... Detecting chip type... ESP8266 Chip is ESP8266EX Features: WiFi Crystal is 26MHz MAC: cc:50:e3:c7:c0:f4 Uploading stub... Running stub... Stub running... MAC: cc:50:e3:c7:c0:f4 Hard resetting via RTS pin... (esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$
На заметку: Я в момент когда идет подключение через esptool
кнопку не отжимаю.
Итого, я успешно подключился через преобразователь к реле Sonoff TH10
и считал некоторую информацию.
Шаг №8:
Проверяем, что можем считать FLASH_ID
адрес реле:
отсоединяю usb кабель от компьютера
на Sonoff TH10 нажимаю кнопку и держу
подключаю usb кабель к компьютеру
после в консоли Terminal запускаю команду
(esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ ./esptool.py flash_id esptool.py v3.0 Found 1 serial ports Serial port /dev/ttyUSB0 Connecting.... Detecting chip type... ESP8266 Chip is ESP8266EX Features: WiFi Crystal is 26MHz MAC: cc:50:e3:c7:c0:f4 Uploading stub... Running stub... Stub running... Manufacturer: 5e Device: 6014 Detected flash size: 1MB Hard resetting via RTS pin... (esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$
из этого вывода видно, что размер флеш накопителя в реле Sonoff TH10
равняется 1MB
Шаг №9:
Выполняю бекап заводской прошивки: (Нажатую кнопку включения я не отпускаю а держу на всем процессе покуда идут проценты с 1 до 100):
отсоединяю usb кабель от компьютера
на Sonoff TH10 нажимаю кнопку и держу
подключаю usb кабель к компьютеру
после в консоли Terminal запускаю команду
(esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ ./esptool.py read_flash 0x00000 0x100000 firmware1MB.bin esptool.py v3.0 Found 1 serial ports Serial port /dev/ttyUSB0 Connecting.... Detecting chip type... ESP8266 Chip is ESP8266EX Features: WiFi Crystal is 26MHz MAC: cc:50:e3:c7:c0:f4 Uploading stub... Running stub... Stub running... 1048576 (100 %) 1048576 (100 %) Read 1048576 bytes at 0x0 in 95.5 seconds (87.8 kbit/s)... Hard resetting via RTS pin... (esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ (esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ ls -lh firmware1MB.bin -rw-rw-r-- 1 ekzorchik ekzorchik 1.0M Nov 15 11:54 firmware1MB.bin (esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ file firmware1MB.bin firmware1MB.bin: DOS executable (COM) (esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ md5sum firmware1MB.bin b5e4b4d916accd43fc4b877d91d6d81f firmware1MB.bin (esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$
На заметку: Если размер флеш памяти на реле к примеру 4Mb
то команда будет другой:
(esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ ./esptool.py read_flash 0x00000 0x400000 firmware4MB.bin
Шаг №10:
Чтобы залить альтернативную прошивку, нужно сперва очистить текущую:
отсоединяю usb кабель от компьютера
на Sonoff TH10 нажимаю кнопку и держу
подключаю usb кабель к компьютеру
после в консоли Terminal запускаю команду
(esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ ./esptool.py erase_flash esptool.py v3.0 Found 1 serial ports Serial port /dev/ttyUSB0 Connecting.... Detecting chip type... ESP8266 Chip is ESP8266EX Features: WiFi Crystal is 26MHz MAC: cc:50:e3:c7:c0:f4 Uploading stub... Running stub... Stub running... Erasing flash (this may take a while)... Chip erase completed successfully in 3.8s Hard resetting via RTS pin... (esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$
Шаг №11:
Записываю прошивку tasmota
на Sonoff TH10:
отсоединяю usb кабель от компьютера
на Sonoff TH10 нажимаю кнопку и держу
подключаю usb кабель к компьютеру
после в консоли Terminal запускаю команду
(esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ wget http://ota.tasmota.com/tasmota/release/tasmota.bin --2020-11-15 12:01:40-- http://ota.tasmota.com/tasmota/release/tasmota.bin Resolving ota.tasmota.com (ota.tasmota.com)... 52.85.47.80, 52.85.47.2, 52.85.47.13, ... Connecting to ota.tasmota.com (ota.tasmota.com)|52.85.47.80|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 614656 (600K) [application/octet-stream] Saving to: ‘tasmota.bin’ tasmota.bin 100%[===================>] 600.25K --.-KB/s in 0.1s 2020-11-15 12:01:40 (5.38 MB/s) - ‘tasmota.bin’ saved [614656/614656] (esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ ./esptool.py write_flash -fs 1MB -fm dout 0x0 tasmota.bin esptool.py v3.0 Found 1 serial ports Serial port /dev/ttyUSB0 Connecting.... Detecting chip type... ESP8266 Chip is ESP8266EX Features: WiFi Crystal is 26MHz MAC: cc:50:e3:c7:c0:f4 Uploading stub... Running stub... Stub running... Configuring flash size... Compressed 614656 bytes to 436471... Wrote 614656 bytes (436471 compressed) at 0x00000000 in 39.1 seconds (effective 125.6 kbit/s)... Hash of data verified. Leaving... Hard resetting via RTS pin... (esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$
Шаг №12:
Отключаюсь от виртуального окружения Python:
(esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ deactivate ekzorchik@srv-dbionic:~/esptool-env/bin$ cd ~/
Шаг №13:
После перепрошивки подключаю теперь уже свое реле Sonoff TH10
к своей Wi-Fi
сети, для этого отсоединяем USB
кабель от компьютера и подключает
снова, ждем 1-3
минуту после чего в эфире радиовещания Wi-Fi
сетей появится мое
реле. На смартфоне включаю Wi-Fi
модуль и вижу сеть вида: tasmota_C7C0F4-0244
(без защиты)— это мое устройства кликаю по нему и оказываю подключенным к настройкам Sonoff Basic Module
где указываю параметры свой Wi-Fi
сети
AP1 Ssid(): test
AP1 Password: Aa1234567
Hostname: %s-%04d
после нажимаю Save
После Sonoff
реле отключится и подключится к моей домашней сети, а в общем эфире что оно работает как точка доступа исчезнет.
Шаг №14:
Проверяю на своем роутере Mikrotik rb2011UiAS-2Hnd-IN
, что мое Sonoff
реле TH10
подключилось к Wi-Fi
сети и ему присвоился IP
–адрес от DHCP
–сервиса:
Winbox — IP&DNS:PORT — user&pass — Wireless
— вкладка Registration
и вижу MAC
адрес своего реле:
А теперь какой IP-присвоился:
Winbox — IP&DNS:PORT — user&pass — ip — dhcp server
— вкладка Leases
и через фильтр по колонке MAC Address
нахожу что есть по MAC
адресу:
итого в моей локальной сети — это адрес 172.33.33.103
Проверяю, что вижу его с Lubuntu 18.04 Desktop
ekzorchik@srv-dbionic:~$ ping 172.33.33.103 PING 172.33.33.103 (172.33.33.103) 56(84) bytes of data. 64 bytes from 172.33.33.103: icmp_seq=1 ttl=255 time=20.2 ms 64 bytes from 172.33.33.103: icmp_seq=2 ttl=255 time=41.6 ms 64 bytes from 172.33.33.103: icmp_seq=3 ttl=255 time=64.1 ms 64 bytes from 172.33.33.103: icmp_seq=4 ttl=255 time=85.4 ms ^C --- 172.33.33.103 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3005ms rtt min/avg/max/mdev = 20.259/52.857/85.415/24.375 ms ekzorchik@srv-dbionic:~$
На заметку: Чтобы реле имело постоянный адрес правильнее сделать его статическим.
Шаг №15:
Обращаюсь через браузер к Web
–интерфейсу своего реле, т. е. Это выглядит так: http://172.33.33.103
Итого я успешно перепрошил реле Sonoff TH10
и оно уже теперь мое, т. е. Мое в смысле что я могу из своей локальной сети управлять им и более не привязана к облаку производителя.
Шаг №16:
Т.к. реле уже мое и подключено к моей ЛВС то я могу выполнить резервное копирование прошивки , дабы не проходить все шаги выше:
ekzorchik@srv-dbionic:~$ source esptool-env/bin/activate (esptool-env) ekzorchik@srv-dbionic:~$ cd ./esptool-env/bin/ (esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$
отсоединяю usb кабель от компьютера
на Sonoff TH10 нажимаю кнопку и держу
подключаю usb кабель к компьютеру
после в консоли Terminal запускаю команду
(esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ ./esptool.py read_flash 0x00000 0x100000 firmwaretasmotawork.bin esptool.py v3.0 Found 1 serial ports Serial port /dev/ttyUSB0 Connecting.... Detecting chip type... ESP8266 Chip is ESP8266EX Features: WiFi Crystal is 26MHz MAC: cc:50:e3:c7:c0:f4 Uploading stub... Running stub... Stub running... 1048576 (100 %) 1048576 (100 %) Read 1048576 bytes at 0x0 in 94.8 seconds (88.5 kbit/s)... Hard resetting via RTS pin... (esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ ls -lh firmwaretasmotawork.bin -rw-rw-r-- 1 ekzorchik ekzorchik 1.0M Nov 15 12:24 firmwaretasmotawork.bin (esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ file firmwaretasmotawork.bin firmwaretasmotawork.bin: DOS executable (COM) (esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ md5sum firmwaretasmotawork.bin c036fba66137e0b24dd88052e2042c3b firmwaretasmotawork.bin (esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ (esptool-env) ekzorchik@srv-dbionic:~/esptool-env/bin$ deactivate ekzorchik@srv-dbionic:~/esptool-env/bin$ cd ~ ekzorchik@srv-dbionic:~$
На заметку: После нужно отключить USB
от компьютера и подключиться снова без нажатия кнопки через которую я входил в режим перепрошивки дабы в последствии взаимодействовать с реле через Web
-интерфейс.
Шаг №17:
Чтобы взаимодействовать с реле из консоли bash
это понадобится
когда либо взаимодействовать через скрипты или системы «Умного дома»:
Нашел какими командами через CURL
запрос можно включать и выключать реле:
Commands can be executed via web (HTTP) requests, for example:
https://tasmota.github.io/docs/Commands/
Синтаксис:
http://<ip>/cm?cmnd=Power%20TOGGLE http://<ip>/cm?cmnd=Power%20On http://<ip>/cm?cmnd=Power%20off http://<ip>/cm?user=admin&password=joker&cmnd=Power%20Toggle
Включить реле:
ekzorchik@srv-dbionic:~$ sudo apt-get install -y curl ekzorchik@srv-dbionic:~$ curl http://172.33.33.103/cm?cmnd=Power%20On {"POWER":"ON"}ekzorchik@srv-dbionic:~$ ekzorchik@srv-dbionic:~$
Выключить реле:
ekzorchik@srv-dbionic:~$ curl http://172.33.33.103/cm?cmnd=Power%20Off {"POWER":"OFF"}ekzorchik@srv-dbionic:~$ ekzorchik@srv-dbionic:~$
Или так:
ekzorchik@srv-dbionic:~$ curl http://172.33.33.103/cm?cmnd=Power%20TOGGLE {"POWER":"OFF"}ekzorchik@srv-dbionic:~$ ekzorchik@srv-dbionic:~$ ekzorchik@srv-dbionic:~$ curl http://172.33.33.103/cm?cmnd=Power%20TOGGLE {"POWER":"ON"}ekzorchik@srv-dbionic:~$ ekzorchik@srv-dbionic:~$ ekzorchik@srv-dbionic:~$
Итого данная заметка полностью работоспособна и я сделал задачу которую долго не мог сделать, т. к. все форумы, консультации в Telegram
каналах приводили лишь к фразе: Тебя что в Google
забанили, уже сто раз все объясняли. Вообще да пошли все, лучше сделать самим и составить инструкцию для себя и не делиться. Свои наработки
— это свои наработки.
На заметку: Бекап заводской прошивки, на что прошиваю и бекап настроенной прошивки залил к себе в облако OwnCloud 10
с сделал общедоступную
ссылку
https://vpn.ekzorchik.ru/index.php/s/DrTczqgDpSy70M8
На этом заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.