RBT (SmartYard-Server) — ядро платформы
RBT (SmartYard-Server) — основной сервер платформы SmartYard. Он хранит конфигурацию и состояние инфраструктуры (дома, входы, устройства, пользователи, ключи), автоматически синхронизирует её с домофонами и IP-реле, управляет домофонными звонками через Asterisk, доставляет push-уведомления, собирает и обрабатывает события, интегрируется с медиасерверами, RBT-TT и мониторингом.
Репозиторий: https://github.com/rosteleset/SmartYard-Server
Что хранит и чем управляет RBT
Инфраструктура и топология
- Устройства: домофоны, видеокамеры, IP-реле
- Дома/объекты: список домов, количество входов, диапазоны квартир для каждого входа
- Режим “калитки”: входы, обслуживающие группу домов
Пользователи и права
- учётные записи пользователей мобильных приложений
- привилегии пользователя по всем квартирам, куда он добавлен
Ключи и коды доступа
- ключи разных уровней:
- ключ пользователя
- ключ квартиры
- ключ дома
- ключ управляющей компании
- супер-ключи (открывают всё)
- квартирные коды доступа
Подсистемы внутри RBT (SmartYard-Server)
1) Core Domain (Registry + Access Control) — модель и логика доступа
Единая “ядровая” подсистема RBT, которая является источником истины для всей платформы:
- хранит топологию объектов: дома, входы, диапазоны квартир, режимы входов (в т.ч. “калитка” для группы домов)
- хранит инвентарь устройств: домофоны, камеры, IP-реле и их привязки
- хранит пользователей и их права/привилегии по квартирам
- хранит ключи и коды доступа (пользователь/квартира/дом/УК/супер-ключи)
- выполняет проверки прав и формирует команды управления доступом (дверь/калитка/шлагбаум)
На эту подсистему опираются автоконфигуратор, мобильный API, обработка событий и интеграции.
2) Autoconfigurator (Автоконфигуратор) — desired/actual/diff синхронизация устройств
Автоматически приводит конфигурацию домофонов и IP-реле к “требуемому” состоянию из базы RBT:
- собирает данные из Core Domain в целевую (desired) конфигурацию для каждого устройства
- считывает текущую (actual) конфигурацию устройства
- вычисляет разницу (diff) между actual и desired
- отправляет на устройство только изменения, необходимые для достижения требуемого состояния
- снижает риск лишних перезаписей/перезагрузок и держит устройство согласованным с моделью в базе
3) Mobile API (Application API) — интерфейс для мобильных приложений
Публичный API для iOS/Android-клиентов и пользовательских сценариев: - авторизация/сессии - доступные адреса/квартиры/устройства - операции доступа (например, “открыть”) с проверкой прав - события и история - выдача параметров доступа к видео через медиасервер (HLS / WebRTC)
Важно: мобильные клиенты получают видео через медиасервер, а не напрямую с камер.
4) Telephony Orchestrator (Управление Asterisk)
Автоматически управляет Asterisk для обработки домофонных вызовов и взаимодействия домофонов с мобильными приложениями.
5) Push & Messaging (Доставка уведомлений)
Доставляет push-уведомления о звонках домофонов и прочих событиях/сообщениях до мобильных приложений.
6) Event Pipeline (Syslog Ingest) — сбор и обработка событий
Подсистема, которая принимает события через syslog, нормализует и обогащает их метаданными, записывает в ClickHouse и запускает действия по типу события.
Ключевые функции: - приём событий по syslog от устройств/сервисов - парсинг, нормализация, обогащение (дом/вход/устройство/квартира/пользователь) - запись в ClickHouse (включая метаданные и, при необходимости, снимок/ссылки) - триггеры распознавания: для нужных типов событий инициирует обработку в FALPRS (лица/номера)
7) Events Storage (ClickHouse) — хранилище событий
Хранит полную историю событий системы в ClickHouse: метаданные и связанные артефакты (например, снимок с камеры).
8) Media Routing (Карта медиасерверов и потоков)
Хранит информацию о том, какие камеры и потоки размещены на каких медиасерверах. Видео в приложения поступает только через медиасервер по HLS/WebRTC.
9) Camera Presentation (Представление камер в приложении)
Позволяет задавать описание и структуру отображения камер для пользователя: - дерево папок - карта (геопривязка/визуализация)
10) Ticketing Integration (Интеграция с RBT-TT)
Генерирует и хранит в RBT-TT заявки, связанные с пользователями/объектами, для обработки сотрудниками оператора и полевыми техниками (PWA).
11) Monitoring Integration (Интеграция с Zabbix)
Осуществляет мониторинг активных устройств в сети через интеграцию с Zabbix.
Сводная таблица “подсистема → ответственность”
| Подсистема | За что отвечает | Хранилище/интеграции |
|---|---|---|
| Core Domain | топология, устройства, пользователи, ключи, права + команды доступа | БД RBT |
| Autoconfigurator | desired/actual/diff синхронизация и применение изменений | RBT ↔ домофоны/IP-реле |
| Mobile API (Application API) | API для iOS/Android: доступ, события, параметры видео | ApplicationAPI + RBT |
| Telephony Orchestrator | управление Asterisk, домофонные звонки | Asterisk |
| Push & Messaging | доставка push-уведомлений | push-сервисы |
| Event Pipeline (Syslog Ingest) | syslog → нормализация → запись → триггеры распознавания | Syslog → ClickHouse → FALPRS |
| Events Storage | долговременное хранилище событий | ClickHouse |
| Media Routing | “камера → медиасервер/потоки” | Flussonic/альтернативы |
| Camera Presentation | дерево/карта камер в приложении | RBT |
| Ticketing Integration | заявки и эксплуатационные процессы | RBT-TT |
| Monitoring Integration | мониторинг устройств | Zabbix |
Типовые потоки
Автоконфигурация устройства (diff-обновление)
1) Меняются данные в RBT (права/ключи/квартиры/устройства)
2) Autoconfigurator формирует desired конфиг
3) Autoconfigurator считывает actual конфиг устройства
4) Вычисляется diff и применяется только “патч” изменений
5) Состояние устройства приводится к модели в базе
Событие → ClickHouse → распознавание
1) Устройство/сервис отправляет событие в syslog
2) Event Pipeline парсит/обогащает событие
3) Событие сохраняется в ClickHouse
4) Для нужных типов событий запускается FALPRS (лица/номера)
5) Результат фиксируется и становится доступен клиентам/логике
Видео в приложении
1) Пользователь открывает камеру в приложении
2) RBT проверяет права и выдаёт параметры доступа через медиасервер
3) Видео идёт по HLS/WebRTC через медиасерверы
Звонок домофона → мобильное приложение
1) Домофон инициирует вызов
2) RBT оркестрирует звонок через Asterisk
3) Push-уведомление доставляется пользователю
4) Пользователь управляет доступом (по правам), события фиксируются