Сборка из исходников

RBgrid — это прошивочное приложение для ESP32, а не библиотека, которую вы подключаете к своему скетчу. «Сборка из исходного кода» означает сборку образа хаба в том виде, в каком он есть, и прошивку его на плату; затем вы настраиваете датчики и точки во время работы в веб-приложении или через API (см. Датчики и единицы измерения).

📦 Исходный код: исходный код прошивки опубликован на github.com/rb-amp/RBgrid вместе с файлами LICENSE, COMMERCIAL.md и NOTICE.

Требования

  • Плата: ESP32 с PSRAM — обязательно (RBgrid использует PSRAM; без неё на ESP32 он не работает). ESP32-WROVER или, начиная с v1.1.8, ESP32-S3 на модуле N16R8. 16 MB флеш-памяти; на WROVER 16 MB с PSRAM — менее распространённый вариант, поэтому проверьте уже имеющуюся плату, прежде чем на неё рассчитывать: esptool.py -p <PORT> flash_id выводит, что в ней есть (не указывайте --chip, и esptool определит плату сам).
  • Набор инструментов: ESP-IDF v5.5.1 — версия, с которой собирается релиз начиная с v1.1.7. v5.4.1 тоже собирает то же дерево исходников, поэтому менять уже имеющуюся установку не нужно. Целевая платформа esp32 или esp32s3 для хаба на ESP32-S3.
  • openssl на машине сборки (используется один раз для создания сертификата для разработки).

Лицензия

Прошивка RBgrid распространяется как source-available по лицензии PolyForm Noncommercial 1.0.0 — её можно бесплатно использовать, изменять и собирать для личного и некоммерческого использования; коммерческое использование требует лицензии (пишите на info@rbamp.com). Это не лицензия OSI «open source». Файлы LICENSE, COMMERCIAL.md и NOTICE находятся в репозитории; исходный код веб-приложения находится в webapp/ под той же лицензией.

Шаги сборки

  1. Клонируйте репозиторий: bash git clone https://github.com/rb-amp/RBgrid.git cd RBgrid
  2. Создайте сертификат для разработки (один раз, до первой сборки). Скрипт записывает самоподписанный сертификат для разработки, который встраивается в сборку (rbgrid_dev_cert.pem + rbgrid_dev_key.pem, срок действия 10 лет); закрытый ключ в репозиторий не входит. Хаб отдаёт веб-приложение по обычному HTTP в вашей локальной сети; HTTPS не является пользовательской функцией. bash components/rbpower/certs/gen_dev_cert.sh
  3. (Необязательно) задайте собственный пароль точки доступа для первого входа. Скопируйте шаблон и задайте пароль из 8–63 символов: bash cp components/rbpower/include/ap_provision.example.h components/rbpower/include/ap_provision.h # edit ap_provision.h and set your AP password Если пропустить этот шаг, сборка использует публичное значение из шаблона и выведет предупреждение; свой пароль можно задать позже в приложении (Настройки → Точка доступа хаба).

  4. Соберите: bash idf.py build

  5. Прошейте по USB (записываются загрузчик, таблица разделов, данные OTA и приложение): bash idf.py -p <PORT> flash <PORT> — последовательный порт платы (например, /dev/ttyUSB0, COM3).

После этой первой прошивки по USB хаб можно обновлять по воздуху (OTA): новый образ загружается из веб-приложения. Прошивка хранит два слота OTA с откатом.

Нет набора инструментов? Прошейте четыре файла из последнего релиза; команда esptool и SHA-256 каждого файла указаны в заметках к релизу.

Установка веб-приложения

Этот шаг можно пропустить и открыть приложение на webapp.rbgrid.io (Chrome или Edge, в той же сети, что и хаб). Чтобы приложение было на самом хабе, установите его один раз. Это отдельный пакет на странице релиза, rbgrid-ui_v1.1.5.zip (kit/ и ui-manifest.json рядом). Распакуйте его и установите на хаб через его API:

bash
HUB=http://<your-hub-address>     # e.g. http://192.168.4.1 on the hub's own Wi-Fi
cd kit                              # in the folder where you unpacked the zip
for f in $(find . -type f | sed 's|^\./||'); do
  curl -sf -X POST "$HUB/api/system/ui-upload?path=$f" \
       -H 'Content-Type: application/octet-stream' --data-binary "@$f" || { echo "upload failed: $f"; exit 1; }
done
curl -sf -X POST "$HUB/api/system/ui-commit" -H 'Content-Type: application/json' --data-binary @../ui-manifest.json

Если вы задали API-токен, добавьте -H "Authorization: Bearer <token>" в оба вызова. Собрать пакет самостоятельно из webapp/: npm ci, затем npm run build:embedded (см. webapp/README.md).

Доступ браузера к хабу ограничен списком разрешённых адресов: собственные страницы хаба и приложение RBgrid (https://webapp.rbgrid.io, https://demo.rbgrid.io) разрешены всегда. Чтобы запускать веб-приложение со своего адреса (например, http://localhost:5173), добавьте его в приложении в Настройки → Доступ из браузера (CORS); можно до 8 сайтов.

Первый запуск

  1. Хаб запускает собственную Wi-Fi-сеть rbgrid-<mac4> (последние четыре символа его MAC-адреса) с паролем первого входа.
  2. Подключитесь к ней и откройте 192.168.4.1.
  3. Сохраните домашнюю Wi-Fi, чтобы хаб подключился к вашей сети.
  4. По желанию задайте MQTT-брокер в приложении (Настройки → Home Assistant): хаб поставляется без брокера по умолчанию.

Собственная Wi-Fi-сеть хаба остаётся включённой, чтобы к хабу можно было подключиться в любой момент. Смените её пароль в приложении (Настройки → Точка доступа хаба) и задайте API-токен (Настройки → Безопасность), чтобы никто рядом не мог изменить ваш хаб.

Дальше откройте приложение на webapp.rbgrid.io или установите его на хаб (см. выше), добавьте модули rbAmp и привяжите каналы к точкам, как описано в Датчики и единицы измерения и Первые измерения. После добавления точек перезагрузите хаб, чтобы они начали хранить историю.

🔒 В локальной сети запись в API хаба открыта, пока вы не задали административный токен (POST /api/system/token). Рекомендуется его задать.