Инструменты пользователя

Инструменты сайта


iot:firmware:ravensystem:haa:sonoff:rfr2

Прошивка Sonoff RFR2 под RavenSystem HAA

Эта статья описывает процедуру OTA-прошивки и настройки реле Sonoff RFR2 с использованием программатора USB-TTL и скрипта Esptool под RavenSystem «HAA»1), которая позволяет напрямую добавить устройство в HomeKit2).

:!: Прошивка под Tasmota рассмотрена тут.

Фотографии

Подготовка

  1. Скачать и установить Python;
  2. Запустить Командную строку от имени администратора;
  3. Ввести команду pip install esptool.

Подключение

  1. Припаять гребенку на плату3);
  2. Проверить напряжение на программаторе – должно быть 3V34);
  3. Соединить контакты, перекрестив прием и передачу5), а остальные соединить прямо6);
  4. Нажать кнопку на реле, вставить программатор в USB и сразу кнопку отпустить7).

Прошивка

Для последующего удобства работы, создайте папку, к примеру, «Temp» в корне системного диска8) и перейдите в нее, набрав в консоли команду cd c:\Temp.

Проверка соединения

Введите, к примеру, команду esptool.py read_mac9). Если в ответ скрипт выдаст примерно следующее, то все хорошо, можно приступать к дальнейшим действиям.

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 программатором можно прошивать двумя способами:

  1. используя технологию OTA, когда на устройство пишется только часть данных, остальные автоматически загружаются при первом запуске;
  2. без использования OTA, когда при прошивке все данные сразу пишутся в нужные адреса памяти.

На мой взгляд, второй вариант, хоть и быстрее, но более сложный и муторный. Ввиду этого, я пользуюсь первым, т.к. подождать минут 5-10, пока устройство докачает необходимые данные, для меня не проблема.

Для OTA прошивки, нужно загрузить из репозитория последний релиз13) файла «fullhaaboot.bin», сохранить его в рабочей папке и выполнить команду esptool.py write_flash -fs 1MB -fm dout -ff 40m 0x0 fullhaaboot.bin14), указав правильный объем памяти.

Аналогичный вывод показывает, что все хорошо:

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-сеть

Для подключения к Wi-Fi-сети, нужно:

  1. открыть список доступных сетей на телефоне или ноутбуке;
  2. подключиться сети, название которой начинается на «HAA-» и содержит MAC-адрес свежепрошитого реле;
  3. перейти браузером по адресу http://192.168.4.1:456715), ввести SSID и пароль к вашей сети и нажать «Save».

Теперь осталось подождать минут 5-10, пока на устройство загрузятся все необходимые данные и оно не начнет открываться по выданному вашим DHCP-сервером адресу на порту 456716).

Строка JSON

Тут все просто и одновременно не очень, т.к. формат этой строки совершенно не интуитивен и без постоянного подглядывания в документацию малопонятен… если не сказать большего… LOL

В общем, для работы реле 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 раза.


Дисклеймер

  • Использование материалов данной базы знаний разрешено на условиях лицензии, указанной внизу каждой страницы! При использовании материалов активная гиперссылка на соответствующую страницу данной базы знаний обязательна!
  • Автор не несет и не может нести какую либо ответственность за последствия использования материалов, размещенных в данной базе знаний. Все материалы предоставляются по принципу «как есть». Используйте их исключительно на свой страх и риск.
  • Все высказывания, мысли или идеи автора, размещенные в материалах данной базе знаний, являются исключительно его личным субъективным мнением и могут не совпадать с мнением читателей!
  • При размещении ссылок в данной базе знаний на интернет-страницы третьих лиц автор не несет ответственности за их техническую функциональность (особенно отсутствие вирусов) и содержание! При обнаружении таких ссылок, можно и желательно сообщить о них в комментариях к соответствующей статье.
1)
Она же «RavenCore v2», она же «Home Accessory Architect».
2)
Оно же приложение «Дом» или «Home App» на iPhone/iPad.
3)
Она находится тут, расписание выводов на обратной стороне платы.
4)
Обычно, это, или джампер или микропереключатель на плате, к примеру.
5)
То есть, на реле контакт RX подключить к контакту TX на конвертере, а TX, соответственно, к RX.
6)
Т.е. 3V3 к 3V3, а GND к GND.
7)
Ничего держать и считать секунды не надо! Нажали, вставили, отпустили.
8)
Чаще всего, это «C:».
9)
В версии Esptool 3.0 ничего кроме указывать не надо! В общем случае, и порт, и скорость, и всё прочее она определит сама.
10)
Ходят слухи, что прошивка привязывается к аппаратному обеспечению и не подходит от другого такого же устройства… Не проверял.
11) , 14)
На момент написания статьи, реле Sonoff RFR2 содержит 1 мегабайт встроенной флеш-памяти и все команды, по умолчанию, указаны для этого размера!
12)
Для 1 мб, будет «0x100000», для двух – «0x200000» и т.д.
13)
На момент написания статьи используется релиз за номером 4.3.x. Также проверена версия 6.8.x – пока все соответствует.
15)
«Captive portal» отключили в HAA v4.9.0 и HAA OTA v4.4.0… Зачем?!
16)
Изменили в HAA v4.9.0 и HAA OTA v4.4.0, раньше открывалось по стандартному порту 80… Не менее – зачем?!

Обсуждение

Ваш комментарий:
E K J Y J G H A T J E B D B O L
 
Последнее изменение: 2022/02/16 19:09 — Николай Солошин