Датчики и единицы

RBgrid измеряет через два уровня:

  • Датчики — физические каналы, которые видит хаб. В хабе версии v1.1.x это каналы модулей rbAmp с шиной I²C: вход напряжения и один или несколько токовых каналов на модуль. Встроенного АЦП нет: модули измеряют, а хаб читает их по I²C.
  • Единицы — точки измерения, которые вы создаёте, привязывая канал. У точки есть собственный идентификатор, название, роль, статистика и история. Перенос точки на другой канал (перепривязка) сохраняет её идентификатор, название, историю и ячейку истории.

Писать код для добавления датчика или точки не нужно. Каналы появляются сами, когда подключён модуль; канал вы превращаете в точку в веб-приложении или через REST API во время работы.

Датчики — физические каналы

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

Каждый канал содержит:

  • ch_label — канал, как он подписан на корпусе модуля: I0, I1, … для токовых каналов (нумерация с 0), V для входа напряжения модуля и L1–L3 на модуле с учётом фаз.
  • Модель датчика тока — для токового канала модель трансформатора тока (ct_code / читаемое ct_name, например SCT-013-050, 50 A; ct_name не выводится, если модель неизвестна) и пределы модуля для неё. В приложении это Датчик тока точки. На модуле, который принимает токовые клещи по вашему выбору, модель задаёте вы (см. Выбор модели датчика тока ниже); на модуле, где датчик спарен с каналом на заводе, модель фиксирована.
  • Статус коррекции — применил ли модуль коррекцию для выбранной модели датчика. Если нет (readings not corrected), интерфейс показывает предупреждение и причину (канал не откалиброван · коэффициент усиления не соответствует модели датчика · модуль не знает эту модель датчика). Пока коррекция не применена, показания могут отличаться от реальных.

Сами модули берутся из конфигурации модулей хаба; один модуль по адресу по умолчанию (0x50) находится без какой-либо настройки (см. Начало работы). Семейства модулей rbAmp, их состав каналов и линейка датчиков тока описаны вместе с модулями — см. документацию модулей rbAmp.

Точки — точки измерения

Точка создаётся привязкой одного канала. Она содержит:

Поле Что это
unit_id идентификатор точки (4-значный шестнадцатеричный, например 0006, 0100)
point постоянный slug, который используют внешние системы (MQTT, API)
name / short_name отображаемые названия
role роль группы: DEVICE_LOAD, ZONE_LOAD, CIRCUIT_BREAKER, RENEWABLE_SOURCE, STORAGE_SYSTEM, EV_CHARGING, HEATING_COOLING, SMART_APPLIANCE, а также роли питания MAIN_SUPPLY и ALTERNATIVE_SUPPLY
location где находится группа
stat_class сохранено для совместимости; приложение всегда передаёт 1HOUR, и это значение по умолчанию, если его не указать. Оно не определяет, сохраняет ли точка историю (см. Статистика).
rated_power_w / max_current_a номинальные значения группы (для основного ввода — договорная мощность и главный автомат)
phase к какой линии относится канал (см. Фаза ниже)

В приложении роли называются: Прибор, Нагрузка, Автомат, Генерация, Накопитель, Зарядная станция, Отопление/охлаждение, Умный прибор, а для ролей питания — Ввод и Резервный ввод.

Две точки — особые точки питания: основной ввод (подключение к сети) и необязательный резервный ввод (собственная генерация). Приложение не предлагает роли питания при привязке и не позволяет их менять, а хаб блокирует обе: запрос, затрагивающий любую из ролей питания, отклоняется (HTTP 409). Они несут экономический учёт объекта. Точка напряжения (вход V модуля) и основной ввод не удаляются.

Настройка во время работы — веб-приложение или REST

Всё настраивается на работающем хабе. В C-коде ничего не задаётся.

Веб-приложение — Точки → Свободные датчики → Привязать превращает свободный канал в точку; параметры точки редактируются в её настройках.

REST — те же операции доступны по HTTP:

Операция Эндпоинт
Список физических каналов GET /api/v1/sensors (открыт, если не задан токен чтения)
Привязать канал → новая точка POST /api/v1/units
Изменить параметры точки (на лету) POST /api/v1/units/{id}
Перенести точку на другой канал POST /api/v1/units/{id}/rebind
Изменить slug точки POST /api/v1/units/{id}/rename
Удалить точку DELETE /api/v1/units/{id}

Операции записи требуют административный токен хаба, если он задан: задайте его командой POST /api/system/token и передавайте при записи; это рекомендуется. Пока токен не задан, запись открыта в локальной сети.

Пример привязки канала:

http
POST /api/v1/units
{
  "sensor": { "iface": "i2c", "bus": 0, "module": 0, "ch": 1 },
  "name": "Kitchen", "point": "kitchen",
  "role": "ZONE_LOAD", "stat_class": "1HOUR", "location": "ground floor"
}

В ответе приходит новый unit_id. Новые идентификаторы выделяются начиная с 0100. Переименование точки выводит старый slug из обращения, поэтому внешняя система не подхватит незаметно другую точку под тем же ключом.

Отвязка или удаление точки стирает её сохранённую историю безвозвратно; её канал снова становится свободным. Идентификатор удалённой точки можно использовать повторно намеренно: приложение предлагает его при привязке (Привязать с прежним идентификатором). Хаб тогда начинает историю заново, но Home Assistant и MQTT продолжают прежний ряд как одну точку.

Параметры вроде name, role, phase, rated_power_w, max_current_a и модель датчика тока меняются на лету через эндпоинт изменения и сохраняются после перезагрузки. Полный справочник полей — в API датчиков и единиц.

Выбор модели датчика тока

На канале модуля, который принимает токовые клещи по вашему выбору (серия SCT), задайте модель, соответствующую фактически установленным клещам: Датчик тока точки в её настройках или ct_code через эндпоинт изменения. Модель записывается в модуль вместе с калибровкой типа и привязывается к идентичности этого модуля, поэтому другой модуль в том же слоте хранит собственную сохранённую модель.

Меняйте её, только если действительно установлены другие клещи. Запись модели заменяет заводскую калибровку канала, а её нельзя восстановить. На канале со спаренным на заводе датчиком (серия CT) модель фиксирована: хаб отклоняет изменение. На неоткалиброванном модуле модель выбрать нельзя.

Фаза

phase указывает, к какой линии питания относится канал. При однофазном питании все каналы используют значение по умолчанию (1P / L1). Поддерживаются однофазное и трёхфазное питание. Мощность и энергия однофазной сети проверены на оборудовании. Мощность и энергия трёхфазной сети тоже проверены на оборудовании, с тремя входами напряжения на одной фазе стенда; настоящая трёхфазная сеть с углом 120° на стенде не испытывалась. Трёхфазный ввод — это один STD-U3I3, а на карточке модуля вы выбираете, учитывается ли ввод как одна точка с фазами, сведёнными в сумму, или как одна точка на фазу, у каждой фазы свой взятый и отданный учёт. Системы питания, проверенные на вашем хабе, перечислены в GET /api/v1/schema → enums.grid_system_validated.

phase — это только метка. Хаб никогда не умножает и не делит значения точки на число фаз: точка с одним трансформатором тока показывает то, что несёт этот один проводник, каким бы ни было её phase. Точка, установленная на 3 фазы для трёхфазной нагрузки, — это измеренная энергия одной фазы: не делите и не умножайте её на три.

Статистика

Каждая точка хранит данные за 3 секунды и 15 минут только в оперативной памяти; сохранённой истории у них нет. Сохранённая история начинается с часового уровня: хаб хранит почасовые записи в собственной флеш-памяти, они переживают перезагрузку, а из них строятся дни, недели, месяцы и годы. Так для любой точки, каким бы ни был её stat_class. История хранится не более чем для 12 точек; точки сверх двенадцати показывают только текущие значения. Точка, добавленная во время работы хаба, начинает историю после следующей перезагрузки. Накопленные итоги энергии хранятся отдельно от истории.

Когда канал близок к пределу

Точка отмечает своё состояние на плитке на Обзоре, в Линиях нагрузки, в таблице точек и в Требует внимания; на странице точки появляется предупреждение:

  • срез — ток достиг точки среза датчика (его полномасштабного тока, который выше номинала). Выше неё показание занижено, а модуль сам этого не видит. Настройки точки также заранее предупреждают, если линейный автомат выше предела датчика, а строки истории отмечают срез.
  • предел датчика — ток близок к току среза датчика: хаб отмечает это примерно при 90 % этого тока. Для клещей SCT-013 ток среза составляет около 116 % номинала (58 А у SCT-013-050), поэтому предупреждение появляется примерно при 104 % номинала (52 А). До тока среза показания верны. Собственные датчики модулей STD таких отметок не получают; они верны примерно до 130 % своего номинала.
  • Перевёрнутый трансформатор тока на модуле BASIC: точка показывает датчик перевёрнут — не учитывается. Модуль BASIC учитывает только прямой поток, поэтому нагрузка не учитывается, пока вы не переверните клещи.

Журнал событий записывает одну строку при изменении состояния: «близко к пределу», «срез» или «снова в норме». Отметку часовой записи ставит только срез (признак качества при выходе за диапазон); «близко к пределу» есть только в журнале. См. Обзор и Точки, где эти состояния показываются.