RBgrid v1.1.7

Вышел RBgrid v1.1.7. Выделяются две вещи: сохранённые энергия и настройки теперь переживают сбои, из-за которых раньше терялись, а хаб может собирать измерения с удалённых узлов по ESP-NOW — это второй блок в другой части здания, без проводов до хаба.

Получить

  • Прошивка: в релизе v1.1.7 есть набор образов для чистой прошивки по USB, у каждого файла свой SHA-256, и main_release.bin для обновления по воздуху.
  • Веб-приложение: установите rbgrid-ui_v1.1.7.zip с той же страницы, как описано в Сборка и прошивка, или используйте размещённое приложение на webapp.rbgrid.io.
  • Прошивка узла, если нужна: rbgrid-node_v1.1.7.bin (прошивается по адресу 0x10000) или rbgrid-node_v1.1.7_full.zip с загрузчиком и таблицей разделов.
  • Уже на v1.1.x? Обновите по воздуху из приложения файлом main_release.bin: Wi-Fi, настройки, точки и история сохраняются. Пошагово и с тем, что делать, если обновление прервалось на полпути: Что будет, если обновление прошивки прервётся на полпути.

Исправлено: ваши сохранённые данные переживают сбои

Этот раздел стоит минуты, даже если в вашей установке всё выглядит нормально. Независимый разбор кода искал способы, которыми сбой мог бы потерять энергию, удвоить её или сбросить настройки хаба. Каждое исправление воспроизводили на стенде с внесёнными сбоями — до и после правки.

  • Неудачная запись во флеш больше не теряет час. Запись за этот час сохраняется и записывается повторно в следующем 15-минутном периоде.
  • Ошибка чтения памяти при загрузке больше не стирает ваши настройки. Это важно знать. Раньше хранилище настроек форматировалось при любой ошибке монтирования — а заодно удалялись API-токены, и хаб оставался открытым. Теперь его форматируют, только если оно действительно повреждено или пусто; при любой другой ошибке хаб сохраняет ваши данные и остаётся закрытым до следующей перезагрузки.
  • Сохранение настроек сообщает о неудачной записи, а не об успехе, и старое значение остаётся на месте.
  • Точка восстановления — всё или ничего. Неполная отклоняется, и ничего не меняется; восстановление, которое прервалось на полпути, возвращает прежние настройки.
  • Энергия, измеренная, пока хаб был выключен больше суток, сохраняется. Раньше её отбрасывали. Теперь она попадает в итоги и в текущий час, который помечен outage, чтобы вы могли отличить её.
  • 15-минутный период тарифицируется по своему времени, в том числе когда обработан с опозданием, а новый тарифный план применяется за один шаг.

Новое: удалённые узлы по ESP-NOW

До сих пор всё должно было доходить до хаба по I²C — одна шина, один блок, одно место в здании. Узел — это второй ESP32, который измеряет на своём месте и передаёт показания хабу по радио.

Сопряжение не требует перезагрузки. Откройте окно сопряжения в приложении (10–600 секунд) и включите узел. Хаб и узел обмениваются ключами, точки узла появляются сразу, с историей с первого часа.

Каждый хаб создаёт собственный ключ при первой необходимости. В прошивку ключ не зашит: в опубликованном дереве лежит только пример заголовочного файла с заглушками.

Энергия попадает в нужный час, а не в тот, когда пришла. Узел закрывает каждый 15-минутный период по собственным часам и держит его, пока хаб вне досягаемости — до 8 периодов, около двух часов. Каждый затем учитывается и тарифицируется по времени своего закрытия. Именно это делает узел пригодным на связи, которая рвётся.

В приложении можно включить или выключить каждый вход узла и выбрать для него токовые клещи; карточка сообщает, когда узел применил изменение. Для контроля есть уровень сигнала, потерянные пакеты за последнюю минуту и время, когда узел был на связи последний раз; по MQTT — топик статуса и события для каждого узла, а в Home Assistant — датчик сигнала для каждого узла.

Ограничения: до 6 узлов на хаб и 4 входа на узел. История ведётся для существующих 12 точек хаба — точки узлов делят этот пул с точками самого хаба, а не добавляются к нему, поэтому добавленный узел занимает места у точек, для которых вы уже ведёте историю.

Прошивка узла опубликована: исходники в node/, а шаги сборки, прошивки и сопряжения — в его собственном README. Узлу нужен ESP32 с 4 МБ флеш-памяти (без PSRAM) и модули rbAmp на I²C.

⚠️ Узел не обновляется по воздуху. По воздуху обновляется хаб, узел — нет. Чтобы поставить на узел новую прошивку, прошейте его по USB так же, как в первый раз, — поэтому держите узлы там, куда вы сможете дотянуться.

Изменено: тарифы и взаимозачёт

  • Часы ещё не установлены — это включение без интернета, — и 15-минутные периоды тарифицируются по тарифному плану по умолчанию, а не ждут.
  • Выключенный взаимозачёт больше не собирает в фоне импорт и экспорт за месяц.
  • Условие зоны, которое выключено, больше не останавливает применение всей зоны.

Безопасность

  • Чтение по MQTT требует токен чтения, если на хабе заданы токены чтения и администратора, — так же, как чтение по HTTP.
  • MQTT через TLS теперь работает с брокером, сертификат которого выдан публичным удостоверяющим центром. Что это покрывает, а что нет, описано на странице MQTT.
  • Живые данные без токена в адресе: приложение теперь получает одноразовый билет, действующий 30 секунд, для потока живых данных.

Платформа

Прошивка переходит на ESP-IDF 5.5.1 (с 5.4.1). Обновление по воздуху с версий v1.1.x работает с загрузчиком, который уже стоит на вашем хабе, и протестированы и откат, и возврат на v1.1.6. Ядро учёта теперь отделено от веб-сервера и кода MQTT; API не меняется.

Веб-приложение 1.1.7

  • Раздел Узлы на странице «Точки»: включение и выключение радио, сопряжение с обратным отсчётом, карточки узлов и настройки узлов.
  • Живой поток использует одноразовый билет выше, а панель точки восстановления теперь говорит, что на самом деле произошло.

Полный список — в журнале изменений. Руководство пользователя: rbgrid.io/webapp/docs.