Эта статья описывает процедуру OTA-прошивки и настройки реле Sonoff RFR2 с использованием программатора USB-TTL и скрипта Esptool под RavenSystem «HAA»1), которая позволяет напрямую добавить устройство в HomeKit2).
Прошивка под Tasmota рассмотрена тут.
Командную строку
от имени администратора;pip install esptool
.
Для последующего удобства работы, создайте папку, к примеру, «Temp» в корне системного диска8) и перейдите в нее, набрав в консоли команду cd c:\Temp
.
Введите, к примеру, команду esptool.py read_mac
9). Если в ответ скрипт выдаст примерно следующее, то все хорошо, можно приступать к дальнейшим действиям.
esptool.py v3.0 Found 1 serial ports Serial port COM3 Connecting.... Detecting chip type... ESP8266 Chip is ESP8285 Features: WiFi, Embedded Flash Crystal is 26MHz MAC: XX:XX:XX:XX:XX:XX Uploading stub... Running stub... Stub running... MAC: XX:XX:XX:XX:XX:XX Hard resetting via RTS pin...
После выполнения каждой команды нужно переподключить программатор!
Перед любыми манипуляциями с использованием программатора, необходимо сделать резервную копию заводской прошивки10)!
Для этого сперва надо узнать объем флеш-памяти11), введя команду esptool.py flash_id
.
esptool.py v3.0 Found 1 serial ports Serial port COM3 Connecting.... Detecting chip type... ESP8266 Chip is ESP8285 Features: WiFi, Embedded Flash Crystal is 26MHz MAC: XX:XX:XX:XX:XX:XX Uploading stub... Running stub... Stub running... Manufacturer: 51 Device: 4014 Detected flash size: 1MB Hard resetting via RTS pin...
Потом команду esptool.py read_flash 0x000000 0x100000 flash_backup.bin
, изменив значение «0x100000» на соответствующее12).
esptool.py v3.0 Found 1 serial ports Serial port COM3 Connecting.... Detecting chip type... ESP8266 Chip is ESP8285 Features: WiFi, Embedded Flash Crystal is 26MHz MAC: XX:XX:XX:XX:XX:XX Uploading stub... Running stub... Stub running... 1048576 (100 %) 1048576 (100 %) Read 1048576 bytes at 0x0 in 96.2 seconds (87.2 kbit/s)... Hard resetting via RTS pin...
Перед записью новой прошивки желательно полностью очистить флеш-память от всего наследия, которое там может остаться. Для этого введите команду esptool.py erase_flash
:
esptool.py v3.0 Found 1 serial ports Serial port COM3 Connecting.... Detecting chip type... ESP8266 Chip is ESP8285 Features: WiFi, Embedded Flash Crystal is 26MHz MAC: XX:XX:XX:XX:XX:XX Uploading stub... Running stub... Stub running... Erasing flash (this may take a while)... Chip erase completed successfully in 1.0s Hard resetting via RTS pin...
Вообще, RavenCore программатором можно прошивать двумя способами:
На мой взгляд, второй вариант, хоть и быстрее, но более сложный и муторный. Ввиду этого, я пользуюсь первым, т.к. подождать минут 5-10, пока устройство докачает необходимые данные, для меня не проблема.
Для OTA прошивки, нужно загрузить из репозитория последний релиз13) файла «fullhaaboot.bin», сохранить его в рабочей папке и выполнить команду esptool.py write_flash -fs 1MB -fm dout -ff 40m 0x0 fullhaaboot.bin
14), указав правильный объем памяти.
Аналогичный вывод показывает, что все хорошо:
esptool.py v3.0 Found 1 serial ports Serial port COM3 Connecting.... Detecting chip type... ESP8266 Chip is ESP8285 Features: WiFi, Embedded Flash Crystal is 26MHz MAC: XX:XX:XX:XX:XX:XX Uploading stub... Running stub... Stub running... Configuring flash size... Compressed 403308 bytes to 285570... Wrote 403308 bytes (285570 compressed) at 0x00000000 in 25.1 seconds (effective 128.4 kbit/s)... Hash of data verified. Leaving... Hard resetting via RTS pin...
Настройка данной прошивки, в общем случае, сводится к подключению ее к Wi-Fi-сети и записи в нее JSON строки, описывающей конфигурацию устройства.
Для подключения к Wi-Fi-сети, нужно:
http://192.168.4.1:4567
15), ввести SSID и пароль к вашей сети и нажать «Save».Теперь осталось подождать минут 5-10, пока на устройство загрузятся все необходимые данные и оно не начнет открываться по выданному вашим DHCP-сервером адресу на порту 456716).
Тут все просто и одновременно не очень, т.к. формат этой строки совершенно не интуитивен и без постоянного подглядывания в документацию малопонятен… если не сказать большего…
В общем, для работы реле RFR2 нужно открыть страницу конфигурации устройства, вставить в поле «JSON Config» эту строку и нажать «Save»:
{"c":{"l":13,"b":[{"g":0,"t":5}],"z":0},"a":[{"0":{"r":[{"g":12}]},"1":{"r":[{"g":12,"v":1}]},"b":[{"g":0}]}]}
Для автоматического выключения реле по таймеру, нужно добавить ключ "d"
, как в примере ниже, где он установлен на 600 секунд, что равняется 10 минутам.
{"c":{"l":13,"b":[{"g":0,"t":5}],"z":0},"a":[{"0":{"r":[{"g":12}]},"1":{"r":[{"g":12,"v":1}]},"b":[{"g":0}],"d":600}]}
Для перевода реле в режим настройки после записи строки, нужно нажать физическую кнопку на корпусе и подержать ее 8 секунд! В обычном режиме веб-сервер прошивки не доступен!
Собственно, на этом и все! Осталось только добавить в HomeKit, используя этот код и радоваться современной и удобной жизни!
Для сопряжения выключателей с устройством, на реле нужно нажать кнопку на 3 секунды, пока светодиод не моргнет один раз, и нажать нужную кнопку на выключателе. Для удаления – нажать на 5 секунд, пока не моргнет 2 раза.
Обсуждение