Введение
Платформа умного дома ELIS представляет собой интегрированное решение для автоматизации управления устройствами умного дома. Решение обеспечивает централизованный контроль освещения, климата и безопасности через единый интерфейс.
Примечания и предупреждения
Подсказки содержат небольшие пояснения, помогающие быстрее освоить работу с оборудованием, или дополнительную информацию.
Примечания содержат важную информацию о настройке оборудования.
Предупреждения информируют пользователя о ситуациях, которые могут нанести вред, привести к некорректной работе системы или потере данных.
Глоссарий
Docker — платформа контейнеризации для изолированного запуска приложений со всеми требуемыми зависимостями.
Ansible — платформа автоматизации, используемая для настройки и управления IT-инфраструктурой, позволяющая автоматически управлять развертыванием, запуском и переносом программных продуктов.
Playbook (Ansible Playbook) — это YAML-файл, содержащий набор инструкций (play) для автоматизации задач с помощью Ansible. Описывает желаемое состояние системы, последовательность операций и параметры конфигурации.
Хаб — центральное устройство, координирующее работу и взаимодействие различных устройств умного дома.
Zigbee — беспроводная технология (частота 2.4 ГГц), характеризующаяся формированием Mesh-сети и низким энергопотреблением.
Z-Wave — беспроводная технология (частота 868 МГц), обеспечивающая надежное соединение, низкое энергопотребление и широкую совместимость.
Matter over Thread — связка стандарта прикладного уровня (Matter) и беспроводного протокола (Thread), работающего на частоте 2.4 ГГц. Характеризуется крайне низким энергопотреблением и формированием Mesh-сети.
Matter over Wi-Fi — беспроводная технология (частота 2.4 ГГц), реализация Matter, при которой умные устройства подключаются к системе через Wi-Fi.
Mesh-сеть — сеть, в которой устройства передают данные друг другу, расширяя зону покрытия и повышая надежность соединения.
MQTT — легкий протокол обмена сообщениями, часто используемый для связи Wi-Fi устройств умного дома с постоянным питанием.
O7 — протокол, предназначенный для безопасного и эффективного взаимодействия с Z-Wave хабом.
OpenVPN — протокол VPN, обеспечивающий безопасное и зашифрованное соединение для доступа к сети.
Постановка задачи
Целью данного документа является демонстрация операторского решения для построения и настройки сети IoT с функционалом видеонаблюдения на базе платформы умного дома ELIS, платформы видеонаблюдения EVI Cloud и оборудования компании Eltex.
Целевая аудитория
Данный документ будет полезен для инженеров, решающих задачи организации сети IoT с функционалом видеонаблюдения и требованием повышенной отказоустойчивости.
Предлагаемая схема сети
В предлагаемом решении рассматривается схема развертывания платформы умного дома с репликацией БД, а также функционалом видеонаблюдения, удаленного доступа к локальным платформам, мониторинга и удаленного сбора логов.

Преимущества решения
Ключевые преимущества данной схемы:
- Централизованное управление. Платформа умного дома ELIS предоставляет единую точку входа для управления всеми устройствами умного дома, использующими протоколы Z-Wave, Zigbee и MQTT, а также локальными платформами (SL-10-WBZ) и Wi-Fi камерами.
- Повышенная отказоустойчивость. Сегментированная архитектура и репликация БД снижают риск потери данных и сбоев в работе системы, минимизируя простои и обеспечивая непрерывное функционирование.
- Удаленный доступ и управление. SL-Gate обеспечивает удаленный доступ к локальным платформам из любой точки мира, где есть Интернет-соединение.
- Видеонаблюдение и архивация. EVI Cloud предоставляет комплексное решение для обработки, хранения и трансляции видеопотоков.
- Централизованный сбор и анализ логов. ELK позволяет оперативно выявлять и устранять проблемы, а также оптимизировать работу платформы на основе анализа логов.
- Проактивное обнаружение и предотвращение проблем. Prometheus и Grafana обеспечивают своевременное обнаружение аномалий и потенциальных проблем, позволяя принимать меры до того, как они приведут к сбоям.
Возможные продуктовые решения
Хабы умного дома
| Модель | Протокол подключения к платформе умного дома | Поддерживаемые протоколы связи с устройствами |
|---|---|---|
| SH-10-WZ | O7 | Z-Wave |
| SH-20-WBZ | O7, MQTT | Wi-Fi, Z-Wave, Zigbee |
| SH-130 | O7, MQTT | Wi-Fi, Z-Wave, Zigbee, Matter over Tread, Mater over Wi-Fi, ИК-пульт с возможностью обучения |
| SH-131 | O7, MQTT | Wi-Fi, Zigbee, Matter over Tread, Mater over Wi-Fi, ИК-пульт с возможностью обучения |
Локальные платформы умного дома
| Модель | Протокол подключения к платформе умного дома | Поддерживаемые протоколы связи с устройствами |
|---|---|---|
| SL-10-WBZ | MQTT, OpenVPN | Wi-Fi, Z-Wave, Zigbee (при наличии Zigbee USB-адаптера) |
| SH-130-PRO | MQTT, OpenVPN | Wi-Fi, Z-Wave, Zigbee, Matter over Tread, Mater over Wi-Fi, ИК-пульт с возможностью обучения |
| SH-131-PRO | MQTT, OpenVPN | Wi-Fi, Zigbee, Matter over Tread, Mater over Wi-Fi, ИК-пульт с возможностью обучения |
Умные Wi-Fi-устройства
| Модель | Протокол подключения к платформе умного дома | Описание |
|---|---|---|
| SW-RLY01 | MQTT | Двухканальное реле без нулевой линии |
| SW-RLY02 | MQTT | Двухканальное реле с нулевой линией |
| SW-RLY11 | Matter over Wi-Fi | Двухканальное реле без нулевой линии |
| SW-RLY22 | Matter over Wi-Fi | Двухканальное реле с нулевой линией |
| SW-PLG01 | MQTT | Розетка с мониторингом нагрузки |
| SW-PLG02 | MQTT | Розетка с мониторингом нагрузки |
| SW-PLG12 | Matter over Wi-Fi | Розетка с мониторингом нагрузки |
| SW-IRC01 | MQTT | ИК-пульт с возможностью обучения |
Умные Wi-Fi-камеры
| Модель | Технология подключения к локальной сети | Протокол подключения к платформе | Протоколы передачи видео |
|---|---|---|---|
| HVC-102WE | Wi-Fi, Ethernet | MQTT | WebRTC, RTSP |
| SV-CA111-W | Wi-Fi | MQTT | WebRTC, RTSP |
| SV-CA104-W | Wi-Fi | MQTT | WebRTC, RTSP |
| SV-CA113-WE | Wi-Fi, Ethernet | MQTT | WebRTC, RTSP |
Умные Ethernet-камеры
| Модель | Технология подключения к локальной сети | Протокол подключения к платформе | Протоколы передачи видео |
|---|---|---|---|
| SV-BA101-E | Ethernet | MQTT | WebRTC, RTSP |
| SV-BA114-E | Ethernet | MQTT | WebRTC, RTSP |
Умные Z-Wave-устройства
| Модель | Протокол подключения к хабу умного дома | Описание |
|---|---|---|
| SZ-MCT rev.D | Z-Wave | Датчик открытия двери |
| SZ-PIR rev.D | Z-Wave | ИК-датчик движения и освещенности |
| SZ-AIR-HT01 rev.D | Z-Wave | Датчик температуры и влажности |
| SZ-WLK rev.D | Z-Wave | Датчик протечки воды |
| SZ-SMK | Z-Wave | Датчик дыма |
| SZ-SBR | Z-Wave | Двухклавишный беспроводной выключатель |
Умные Matter over Tread-устройства
| Модель | Протокол подключения к хабу умного дома | Описание |
|---|---|---|
| ST-MCT | Matter over Tread | Датчик открытия двери |
| ST-PIR | Matter over Tread | ИК-датчик движения и освещенности |
| ST-AIR-HT01 | Matter over Tread | Датчик температуры и влажности |
| ST-WLK | Matter over Tread | Датчик протечки воды |
| ST-SMK | Matter over Tread | Датчик дыма |
| ST-SBR | Matter over Tread | Двухклавишный беспроводной выключатель |
Конфигурация предлагаемого решения
Конфигурация платформы видеонаблюдения EVI-Cloud
Установка сервисов видеонаблюдения
Системные требования
Для развертывания платформы видеонаблюдения EVI Cloud и её компонентов требуется операционная система Ubuntu 22.04 x64 LTS.
Требуется наличие процессора с поддержкой инструкций AVX.
Рекомендуемые системные требования сервера:
- число аппаратных серверов — 1;
- процессор — Intel, AMD (8+ процессорных ядер, для Intel — процессоры 11 поколения и выше, для AMD — процессоры поколения 5000 и выше);
- оперативная память — 8 ГБ;
- место на диске — 200 ГБ;
- производительность дискового массива (чтение/запись) — 2000 IOPS.
Рекомендуемая конфигурация позволяет обеспечить стабильную работу платформы умного дома при следующей нагрузке:
| Тип нагрузки | Количество |
|---|---|
| Одновременно активные камеры | 1000 |
| Одновременно активные пользователи | 60000 |
| Одновременных подключений | 50000 |
Подготовка к установке
sudo apt update sudo apt install --install-recommends linux-generic-hwe-22.04-edge
Установка платформы EVI Cloud
1. Подготовьте дистрибутив платформы видеонаблюдения EVI Cloud.
Для получения дистрибутива обратитесь с запросом в Коммерческий отдел ЭЛТЕКС.
Файлы конфигурации будут направлены вам в виде deb-пакетов, которые необходимо установить при помощи следующих команд:
sudo dpkg -i evi-cloud-control-1.7.1-1715.deb sudo dpkg -i evi-cloud-watcher-1.7.1-653.deb sudo dpkg -i evi-cloud-rat-1.7.1-1405.deb
2. Инициализируйте БД платформы видеонаблюдения при помощи следующих команд:
cd /opt sudo sh /opt/evi-cloud-control/sql/sql_insert.sh sudo sh /opt/evi-cloud-watcher/sql/sql_insert.sh sudo sh /opt/evi-cloud-rat/sql/sql_insert.sh
3. Сгенерируйте SSL-сертификат для защищенного доступа к платформе видеонаблюдения и её компонентам при помощи следующих команд:
sudo openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout /opt/evi-cloud-control/cert/server.key -out /opt/evi-cloud-control/cert/server.crt -subj "/C=XX/ST=StateName/L=CityName/O=CompanyName/OU=CompanySectionName/CN={server.address}"
sudo cp /opt/evi-cloud-control/cert/server* /opt/evi-cloud-watcher/cert
sudo cp /opt/evi-cloud-control/cert/server* /opt/evi-cloud-rat/certгде server.address — IP-адрес или доменное имя сервера, на котором разворачивается платформа видеонаблюдения.
В процессе установки платформы видеонаблюдения EVI Cloud автоматически происходит регистрация компонентов платформы в качестве сервисов systemd, а также их запуск и включение в список сервисов, запускаемых при старте системы.
Настройка базовой конфигурации сервисов видеонаблюдения
1. Сконфигурируйте параметры для работы компонента evi-cloud-control платформы видеонаблюдения в файле /opt/evi-cloud-control/evi-cloud-control.conf:
sudo nano /opt/evi-cloud-control/evi-cloud-control.conf
Структура файла /opt/evi-cloud-control/evi-cloud-control.conf:
Описание основных параметров в файле evi-cloud-control.conf:
Жирным шрифтом выделены параметры, значения которых необходимо задать, опираясь на столбец "Значение по умолчанию" с учетом ваших индивидуальных требований.
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
api.api_host | 0.0.0.0 | IP-адрес или доменное имя сервера, где находится компонент evi-cloud-control | Адрес компонента evi-cloud-control платформы видеонаблюдения. Данный адрес должен быть доступен для запросов из внешней сети. |
api.api_ssl_port | 19999 | 19999 | https-порт для доступа к API компонента evi-cloud-control. |
api.api_apikey | 000000 | Произвольный API-ключ | API-ключ, который будет использоваться платформой умного дома ELIS и другими компонентами платформы видеонаблюдения для доступа к API компонента evi-cloud-control. |
database.db_port | 5432 | 5432 | Порт БД PostgreSQL, к которому подключится компонент evi-cloud-control. |
stun.primery_port | 3478 | 3478 | Порт STUN-сервера компонента evi-cloud-control. Используется в процессе установления соединения в WebRTC-сессии. |
stun.primery_host | 0.0.0.0 | IP-адрес или доменное имя сервера, где находится компонент evi-cloud-control | Адрес, который будет прослушивать компонент evi-cloud-control для ответов на STUN-запрос. |
stun.enable | false | true | Включение функционала STUN-сервера в компоненте evi-cloud-control. |
event.url | http://iot-evi-cloud.eltex.local:8071/api/v1/evi/event |
где
| Ссылка на платформу умного дома ELIS, которой будут отправляться события от платформы видеонаблюдения. |
2. Сконфигурируйте параметры для работы компонента evi-cloud-watcher платформы видеонаблюдения в файле /opt/evi-cloud-watcher/evi-cloud-watcher.conf:
sudo nano /opt/evi-cloud-watcher/evi-cloud-watcher.conf
Структура файла /opt/evi-cloud-watcher/evi-cloud-watcher.conf:
Описание основных параметров в файле evi-cloud-watcher.conf:
Жирным шрифтом выделены параметры, значения которых необходимо задать, опираясь на столбец "Значение по умолчанию" с учетом ваших индивидуальных требований.
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
api.api_host | 0.0.0.0 | IP-адрес или доменное имя сервера, где находится компонент evi-cloud-watcher | Адрес компонента evi-cloud-control платформы видеонаблюдения. Данный адрес должен быть доступен для запросов из внешней сети. |
api.api_port | 5085 | 0 | HTTP-порт для доступа к API компонента evi-cloud-watcher. |
api.api_ssl_port | 5085 | 5085 | HTTPS-порт для доступа к API компонента evi-cloud-watcher. |
api.apikey | 000000 | API-ключ, сконфигурированный при настройке компонента evi-cloud-control | API-ключ, который будет использоваться платформой умного дома ELIS и другими компонентами платформы видеонаблюдения для доступа к API компонента evi-cloud-watcher. |
database.db_port | 5432 | 5432 | Порт БД PostgreSQL, к которому подключится компонент evi-cloud-watcher. |
evi-cloud-control.eccs_host | evi-cloud.eltex.local | IP-адрес или доменное имя сервера, где находится компонент evi-cloud-control | Адрес для обращения к компоненту evi-cloud-control. |
evi-cloud-control.control_apikey | 000000 | API-ключ, сконфигурированный при настройке компонента evi-cloud-control | API-ключ для доступа к API компонента evi-cloud-control. |
3. Сконфигурируйте параметры для работы компонента evi-cloud-watcher платформы видеонаблюдения в файле /opt/evi-cloud-rat/evi-cloud-rat.conf:
sudo nano /opt/evi-cloud-rat/evi-cloud-rat.conf
Структура файла /opt/evi-cloud-rat/evi-cloud-rat.conf:
Описание основных параметров в файле evi-cloud-rat.conf:
Жирным шрифтом выделены параметры, значения которых необходимо задать, опираясь на столбец "Значение по умолчанию" с учетом ваших индивидуальных требований.
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
api.api_host | 0.0.0.0 | IP-адрес сервера, где находится компонент evi-cloud-rat | Адрес, который будет прослушивать компонент evi-cloud-rat для формирования ответов на API-запросы. |
api.api_port | 9090 | 9091 | HTTP-порт для доступа к API компонента evi-cloud-rat. |
api.api_ssl_port | 9090 | 9090 | HTTPS-порт для доступа к API компонента evi-cloud-rat. |
api.apikey | 000000 | API-ключ, сконфигурированный при настройке компонента evi-cloud-control | API-ключ, который будет использоваться платформой умного дома ELIS и другими компонентами платформы видеонаблюдения для доступа к API компонента evi-cloud-watcher. |
database.db_port | 5432 | 5432 | Порт БД PostgreSQL, к которому подключится компонент evi-cloud-rat. |
evi-cloud-watcher.watcher_host | 127.0.0.1 | IP-адрес или доменное имя сервера, где находится компонент evi-cloud-watcher | Адрес для обращения к компоненту evi-cloud-watcher. |
evi-cloud-watcher.watcher_apikey | 000000 | API-ключ, сконфигурированный при настройке компонента evi-cloud-watcher | API-ключ для доступа к API компонента evi-cloud-watcher. |
rtmp.stream_host | 127.0.0.1 | IP-адрес сервера, где находится компонент evi-cloud-rat | Адрес, который будет прослушивать компонент evi-cloud-rat для отдачи RTMP-потоков. |
rtmp.stream_port | 5050 | 5050 | Порт для получения и отдачи видеопотоков при помощи протокола RTMP компонента evi-cloud-rat. |
hls.hls_host | 127.0.0.1 | IP-адрес сервера, где находится компонент evi-cloud-rat | Адрес, который будет прослушивать компонент evi-cloud-rat для отдачи потоков в формате HLS. |
hls.hls_port | 5080 | 5080 | Порт для отдачи видеопотоков в формате HLS компонента evi-cloud-rat. |
llhls.llhls_enabled | true | false | Включение возможности просмотра потоков в формате LLHLS. |
rtsp.rtsp_host | 127.0.0.1 | IP-адрес сервера, где находится компонент evi-cloud-rat | Адрес, который будет прослушивать компонент evi-cloud-rat для отдачи RTSP-потоков. |
rtsp.rtsp_port | 5054 | 5054 | Порт для отдачи видеопотоков при помощи протокола RTSP компонента evi-cloud-rat. |
s3.s3_enable | true | false | Включение использования S3 для хранения архива. |
other.use_tokens | false | true | Включение проверки токенов трансляций. |
stream.alive | 15000 | 20000 | Время жизни потока после окончания его просмотра в миллисекундах. |
webrtc.rtc_tcp_port | 8085 | 8085 | TCP-порт WebRTC компонента evi-cloud-rat. Используется для установления WebRTC соединения. |
webrtc.rtc_udp_port | 8085 | 8085 | UDP-порт WebRTC компонента evi-cloud-rat. Используется для установления WebRTC соединения. |
webrtc.rtc_ip | 0.0.0.0 | IP-адрес сервера, где находится компонент evi-cloud-rat | Адрес, который будет прослушивать компонент evi-cloud-rat для установления WebRTC соединений. |
Применение конфигурации платформы видеонаблюдения
Перезапуск платформы видеонаблюдения EVI Cloud
Чтобы применить изменения конфигурации платформы, необходимо перезапустить её компоненты при помощи следующей команды:
sudo systemctl restart evi-cloud-control evi-cloud-watcher evi-cloud-rat
При выполнении команды не ожидается вывод какого-либо текста.
Проверка работоспособности платформы видеонаблюдения
1. Проверьте состояние сервисов systemd компонентов платформы при помощи следующей команды:
sudo systemctl status evi-cloud-control evi-cloud-watcher evi-cloud-rat
Пример вывода команды:
● evi-cloud-control.service - evi-cloud-control
Loaded: loaded (/etc/systemd/system/evi-cloud-control.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2025-03-27 03:11:30 UTC; 2 weeks 6 days ago
Docs: https://docs.eltex-co.ru
Main PID: 3446566 (evi-cloud-contr)
Memory: 131.6M
CPU: 3d 13h 21min 20.950s
CGroup: /system.slice/evi-cloud-control.service
└─3446566 /opt/evi-cloud-control/evi-cloud-control -o -c /opt/evi-cloud-control/evi-cloud-control.conf
Mar 27 03:11:30 evi-cloud systemd[1]: Started evi-cloud-control.
● evi-cloud-watcher.service - evi-cloud-watcher
Loaded: loaded (/etc/systemd/system/evi-cloud-watcher.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2025-03-27 03:11:30 UTC; 2 weeks 6 days ago
Docs: https://docs.eltex-co.ru
Main PID: 3446586 (evi-cloud-watch)
Memory: 283.7M
CPU: 3d 10h 39min 40.051s
CGroup: /system.slice/evi-cloud-watcher.service
└─3446586 /opt/evi-cloud-watcher/evi-cloud-watcher -o -c /opt/evi-cloud-watcher/evi-cloud-watcher.conf
Mar 27 03:11:30 evi-cloud systemd[1]: Started evi-cloud-watcher.
● evi-cloud-rat.service - evi-cloud-rat
Loaded: loaded (/etc/systemd/system/evi-cloud-rat.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2025-04-02 03:35:43 UTC; 2 weeks 0 days ago
Docs: https://docs.eltex-co.ru
Main PID: 4014734 (evi-cloud-rat)
Memory: 4.8G
CPU: 3d 6h 26min 9.692s
CGroup: /system.slice/evi-cloud-rat.service
└─4014734 /opt/evi-cloud-rat/evi-cloud-rat -o -c /opt/evi-cloud-rat/evi-cloud-rat.conf
Apr 02 03:35:43 evi-cloud systemd[1]: Started evi-cloud-rat.В выводе данной команды необходимо найти состояние каждого сервиса в поле Active. Все сервисы должны иметь состояние active (running).
2. Проверьте доступность API платформы видеонаблюдения при помощи следующей команды:
curl -w "\n" -k https://domain.name:port/version
где domain.name — доменное имя сервера платформы видеонаблюдения (файл evi-cloud-control.conf, параметр api.api_host);
port — HTTPS-порт API (файл evi-cloud-control.conf, параметр api.api_port).
Вывод команды должен содержать JSON-объект, содержащий версию платформы видеонаблюдения и API. Такой вывод означает доступность API платформы умного дома.
{"api_version":"1.7.1","version":"1.7.1-1715"}Требования к настройкам сети сервера платформы видеонаблюдения
Для корректной работы платформы видеонаблюдения EVI Cloud требуется, чтобы на сервере, где выполнялась установка платформы, из внешней сети были доступны следующие порты:
| Файл конфигурации | Название параметра | Протокол | Порт (по примеру конфигурации) | Назначение |
|---|---|---|---|---|
| /opt/evi-cloud-control/evi-cloud-control.conf | api.api_ssl_port | TCP | 19999 | HTTPS-порт для доступа к API компонента evi-cloud-control. |
stun.primery_port | UDP | 3478 | Порт STUN-сервера компонента evi-cloud-rat. Используется в процессе установления соединения в WebRTC-сессии. | |
| /opt/evi-cloud-watcher/evi-cloud-watcher.conf | api.api_ssl_port | TCP | 5085 | HTTPS-порт для доступа к API компонента evi-cloud-watcher. |
| /opt/evi-cloud-rat/evi-cloud-rat.conf | api.api_ssl_port | TCP | 9090 | HTTPS-порт для доступа к API компонента evi-cloud-rat. |
rtmp.stream_port | TCP + UDP | 5050 | Порт для получения и отдачи видеопотоков при помощи протокола RTMP компонента evi-cloud-rat. | |
hls.hls_port | TCP | 5080 | Порт для отдачи видеопотоков в формате HLS компонента evi-cloud-rat. | |
rtsp.rtsp_port | TCP + UDP | 5054 | Порт для отдачи видеопотоков при помощи протокола RTSP компонента evi-cloud-rat. | |
webrtc.rtc_tcp_port | TCP | 8085 | TCP-порт WebRTC компонента evi-cloud-rat. Используется для установления WebRTC соединения. | |
webrtc.rtc_udp_port | UDP | 8085 | UDP-порт WebRTC компонента evi-cloud-rat. Используется для установления WebRTC соединения. |
В целях безопасности настоятельно рекомендуется ограничить доступ к порту, указанному в параметре database.db_port (значение по умолчанию: 5432), со всех внешних IP-адресов.
Конфигурация реплик БД
Установка MongoDB и настройка набора реплик
Системные требования
Для развертывания реплик MongoDB требуется операционная система Ubuntu 22.04 x64 LTS.
Требуется наличие процессора с поддержкой инструкций AVX.
Рекомендуемые системные требования сервера:
- число аппаратных серверов — 1;
- процессор — Intel, AMD (4+ процессорных ядер, для Intel – процессоры 11 поколения и выше, для AMD – процессоры поколения 5000 и выше);
- оперативная память — 4 ГБ;
- место на диске — 100 ГБ;
- производительность дискового массива (чтение/запись) — 2000 IOPS.
Подготовка к установке MongoDB
Перед началом работ по установке необходимо определиться с требуемым количеством реплик БД.
Минимальное необходимое количество реплик БД — 3.
Максимальное количество реплик БД — 50.
Рекомендуется разворачивать нечетное количество реплик, так как четное количество не повышает отказоустойчивость по сравнению с меньшим на единицу нечетным количеством реплик.
Количество реплик БД следует выбирать с учетом таблицы ниже:
| Общее количество реплик | Количество реплик, которые можно потерять с сохранением работоспособности |
|---|---|
| 3 | 1 |
| 4 | 1 |
| 5 | 2 |
| 6 | 2 |
| 7 | 3 |
| 8 | 3 |
| 9 | 4 |
| 10 | 4 |
| 11 | 5 |
| 12 | 5 |
| 13 | 6 |
Пример схемы работы с 3 репликами:

Установка MongoDB
Приведенные ниже команды предназначены для установки MongoDB 6.0 на ОС Ubuntu 22.04 (Jammy Jellyfish).
1.1. Установите MongoDB на все сервера, которые будут выполнять роль реплик БД, при помощи следующих команд:
sudo apt update sudo apt -y install gnupg curl curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | \ sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg \ --dearmor echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list sudo apt update sudo apt-get install -y mongodb-org
1.2. Включите сервис MongoDB при помощи следующей команды:
sudo systemctl enable mongod
1.3. Отредактируйте файл конфигурации /etc/mongod.conf:
sudo nano /etc/mongod.conf
Базовая структура разделов net и replication в файле /etc/mongod.conf:
# mongod.conf # for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-options/ # where to write logging data. systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log # Where and how to store data. storage: dbPath: /var/lib/mongo # how the process runs processManagement: timeZoneInfo: /usr/share/zoneinfo # network interfaces net: port: 27017 bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting. #security: #operationProfiling: #replication: #sharding: ## Enterprise-Only Options #auditLog:
Описание основных параметров реплики БД в файле mongod.conf:
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
| net.port | 27017 | 27017 | Порт, по которому MongoDB будет принимать подключения к БД |
| net.bindIp | 127.0.0.1 | 0.0.0.0 | Список IP-адресов, которые MongoDB будет прослушивать для подключений к БД. |
| replication.replSetName | iotRepl | Название набора реплик, к которому будет принадлежать данная реплика БД. Необходимо, чтобы это значение было одинаковым на всех репликах БД. |
Пример итогового содержимого файла mongod.conf:
В целях безопасности настоятельно рекомендуется ограничить доступ к порту, указанному в параметре net.port (по умолчанию: 27017), со всех IP-адресов, кроме IP-адресов реплик БД и IP-адреса платформы умного дома ELIS.
1.4. Запустите сервис MongoDB при помощи следующей команды:
sudo systemctl start mongod
1.5. Проверьте состояние сервиса MongoDB:
sudo systemctl status mongod
Пример вывода команды:
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2025-04-16 05:08:36 UTC; 21h ago
Docs: https://docs.mongodb.org/manual
Main PID: 1084 (mongod)
Memory: 2.7G
CPU: 7min 59.969s
CGroup: /system.slice/mongod.service
└─1084 /usr/bin/mongod --config /etc/mongod.conf
Apr 16 05:08:36 repl-test-db systemd[1]: Started MongoDB Database Server.
Apr 16 05:08:37 repl-test-db mongod[1084]: {"t":{"$date":"2025-04-16T05:08:37.003Z"},"s":"I", "c":"CONTROL", "id":7484500, "ctx":"-","msg":"Environment variable MONGODB_CONFIG_OVERRIDE_NOFORK == 1, overriding \"processManagement.fork\" to false"}В выводе данной команды необходимо найти состояние сервиса в поле Active. Сервис должен иметь состояние active (running).
Настройка набора реплик
Перед выполнением данного шага требуется, чтобы все реплики БД уже были развернуты.
2.1. Подключитесь к любой из реплик при помощи утилиты mongosh:
mongosh mongodb://[ip любой из реплик]:[port mongodb любой из реплик]
2.2. Инициируйте набор реплик следующей командой, подставив IP-адреса и порты MongoDB всех развернутых реплик БД:
rs.initiate(
{
_id: "iotRepl",
version: 1,
members: [
{ _id: 0, host : "[ip первой реплики]:[port MongoDB первой реплики]" },
{ _id: 1, host : "[ip второй реплики]:[port MongoDB второй реплики]" },
{ _id: 2, host : "[ip третьей реплики]:[port MongoDB третьей реплики]" }
]
}
)2.3. При помощи команды rs.status().members.map(x => x.stateStr) проверьте, что все реплики перешли в корректные состояния (одна PRIMARY, а все остальные SECONDARY). Этот процесс может занять до нескольких минут.
iotRepl [direct: secondary] test> rs.status().members.map(x => x.stateStr) [ 'PRIMARY', 'SECONDARY', 'SECONDARY' ]
Настройка резервного копирования БД
Перед выполнением последующих команд требуется, чтобы все реплики БД уже были предварительно развернуты по инструкции "Установка MongoDB и настройка набора реплик".
Настройка резервного копирования БД выполняется на каждой реплике БД отдельно.
Для настройки периодического резервного копирования БД необходимо выполнить следующие шаги:
1. Создайте файл по пути /etc/cron.daily/iot-backupdb:
sudo nano /etc/cron.daily/iot-backupdb
В данный файл необходимо записать следующее содержимое:
2. Сделайте созданный файл исполняемым при помощи следующей команды:
sudo chmod +x /etc/cron.daily/iot-backupdb
3. Создайте файл по пути /mongo_backup_env:
sudo nano /mongo_backup_env
В данный файл необходимо записать следующее содержимое:
4. Создайте папку для резервных копий:
sudo mkdir /var/backups/mongobackups
Стоит отметить, что резервные копии создаются только на репликах, имеющих состояние SECONDARY. Это сделано для того, чтобы не создавать нагрузку на основную реплику БД (имеющую состояние PRIMARY) в момент создания резервной копии.
Резервные копии БД сохраняются в директории /var/backups/mongobackups. Для каждой БД создается дочерняя директория с названием БД:
- /var/backups/mongobackups/iot-authorization-server — резервные копии БД сервера авторизации;
- /var/backups/mongobackups/iot-broker — резервные копии БД MQTT-брокера;
- /var/backups/mongobackups/iot-core — резервные копии БД ядра платформы умного дома.
В каждой из перечисленных директорий будут сохраняться резервные копии БД с расширением *.gz за последние 3 дня.
Требования к настройкам сети серверов реплик БД
Для корректной работы реплик БД MongoDB требуется, чтобы на серверах, где выполнялась установка MongoDB, следующий порт был доступен для всех серверов с репликами БД и сервера платформы умного дома ELIS:
| Файл конфигурации | Название параметра | Протокол | Порт (по примеру конфигурации) | Назначение |
|---|---|---|---|---|
/etc/mongod.conf | net.port | TCP | 27017 | Порт для доступа к MongoDB реплик БД. |
В целях безопасности настоятельно рекомендуется ограничить доступ к порту, указанному в параметре net.port (значение по умолчанию: 27017), со всех внешних IP-адресов, кроме IP-адресов реплик БД и IP-адреса платформы умного дома ELIS.
Конфигурация SL-Gate
Подготовка сервера к установке SL-Gate
Системные требования
Для развертывания сервиса мониторинга требуется операционная система Ubuntu 22.04 x64 LTS.
Требуется наличие процессора с поддержкой инструкций AVX.
Рекомендуемые системные требования сервера:
- число аппаратных серверов — 1;
- процессор — Intel, AMD (2+ процессорных ядер, для Intel — процессоры 11 поколения и выше, для AMD — процессоры поколения 5000 и выше;
- оперативная память — 4 ГБ;
- место на диске — 100 ГБ;
- производительность дискового массива (чтение/запись) — 1000 IOPS.
Подготовка к установке сервиса удаленного доступа к локальным платформам SL-Gate
Перед развертыванием сервиса удаленного доступа к локальным платформам SL-Gate необходимо установить систему Ansible и необходимые для ее работы компоненты. Ansible рекомендуется устанавливать из официального репозитория проекта.
Для установки SL-Gate выполните следующие шаги:
1. Установите Ansible на сервер c Ubuntu 22.04 при помощи следующих команд:
apt update apt install --install-recommends linux-generic-hwe-22.04-edge apt install software-properties-common add-apt-repository --yes --update ppa:ansible/ansible apt install ansible
2. Выполните проверку версии Ansible при помощи следующей команды:
ansible --version
Требуется, чтобы версия Ansible была не ниже v2.9:
ansible [core 2.17.10] config file = /etc/ansible/ansible.cfg configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3/dist-packages/ansible ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections executable location = /usr/bin/ansible python version = 3.10.12 (main, Feb 4 2025, 14:57:36) [GCC 11.4.0] (/usr/bin/python3) jinja version = 3.0.3 libyaml = True
3. Добавьте коллекции Ansible, необходимые для установки платформы умного дома, при помощи следующих команд:
ansible-galaxy collection install community.general ansible-galaxy collection install community.crypto ansible-galaxy collection install community.docker
Если перечисленные коллекции еще не были установлены, то будет выведено следующее сообщение:
Starting galaxy collection install process Process install dependency map Starting collection install process Downloading https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/community-general-10.5.0.tar.gz to /root/.ansible/tmp/ansible-local-51534vov2dfet/tmpyez57674/community-general-10.5.0-3zvcqohw Installing 'community.general:10.5.0' to '/root/.ansible/collections/ansible_collections/community/general' community.general:10.5.0 was installed successfully Starting galaxy collection install process Process install dependency map Starting collection install process Downloading https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/community-crypto-2.26.0.tar.gz to /root/.ansible/tmp/ansible-local-51530kuhgcdyr/tmpixug1ixh/community-crypto-2.26.0-pb3a8m8w Installing 'community.crypto:2.26.0' to '/root/.ansible/collections/ansible_collections/community/crypto' community.crypto:2.26.0 was installed successfully Starting galaxy collection install process Process install dependency map Starting collection install process Downloading https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/community-docker-4.5.2.tar.gz to /root/.ansible/tmp/ansible-local-515466d0ryy6l/tmptx3_ppdf/community-docker-4.5.2-j87huzd0 Installing 'community.docker:4.5.2' to '/root/.ansible/collections/ansible_collections/community/docker' community.docker:4.5.2 was installed successfully
Если же данные коллекции уже установлены, будет выведено следующее сообщение:
Starting galaxy collection install process Nothing to do. All requested collections are already installed. If you want to reinstall them, consider using `--force`. Starting galaxy collection install process Nothing to do. All requested collections are already installed. If you want to reinstall them, consider using `--force`. Starting galaxy collection install process Nothing to do. All requested collections are already installed. If you want to reinstall them, consider using `--force`.
В таком случае дополнительных действий в данном шаге предпринимать не требуется.
4. Подготовьте конфигурацию SL-Gate.
Для получения файлов конфигурации обратитесь с запросом в Коммерческий отдел ЭЛТЕКС.
Файлы конфигурации будут направлены вам в виде архива tar.gz, который необходимо распаковать в директорию /etc с правами root при помощи следующей команды.
mkdir -p /etc/ansible-iot/latest tar -C /etc/ansible-iot/latest --strip-components=1 -xvf ansible-iot-2.2.0.tar.gz
Файлы конфигурации и плейбуки (скрипты/конфигурации) Ansible будут расположены в директории /etc/ansible-iot/latest
Генерация сертификатов для защищенного доступа
В данном документе для примера указано имя сервера slgate.eltex.loc. Его необходимо заменить на то имя сервера, которое будет использоваться разворачиваемым сервером SL-Gate.
В рамках настройки SL-Gate требуется создать пару сертификатов для безопасного обращения ядра платформы к API SL-Gate.
Создание сертификата ca.crt для сервиса SL-Gate
1.1 Сгенерируйте сертификат slgate.eltex.loc.crt и ключ slgate.eltex.loc.crt.key при помощи следующей команды:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/slgate.eltex.loc.crt.key -out /etc/ssl/certs/slgate.eltex.loc.crt
В процессе выполнения необходимо ответить на следующие вопросы:
| Параметр | Необходимость указания | Пример |
|---|---|---|
| Country Name (2 letter code) [AU] | Требуется | RU |
| State or Province Name (full name) [Some-State] | Требуется | Novosibirsk |
| Locality Name (eg, city) | Требуется | Novosibirsk |
| Organization Name (eg, company) [Internet Widgits Pty Ltd] | Опционально | Eltex Enterprise LTD. |
| Organizational Unit Name (eg, section) [] | Требуется | CPE |
| Common Name (e.g. server FQDN or YOUR name) [] | Требуется | slgate.eltex.loc |
| Email Address [] | Требуется | slgate@slgate.eltex.loc |
1.2. По окончании генерации сертификата выполните следующую команду:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
1.3. Создайте файлы конфигурации для авторизации с помощью SSL-сертификата:
sudo mkdir /etc/ssl/slgate.eltex.loc cd /etc/ssl/slgate.eltex.loc sudo mkdir db sudo mkdir db/certs sudo mkdir db/newcerts sudo touch db/index.txt sudo sh -c "echo '01' > db/serial" sudo chmod 700 ./
1.4.Создайте конфигурационный файл /etc/ssl/slgate.eltex.loc/ca.conf для подписания сертификатов:
sudo nano /etc/ssl/slgate.eltex.loc/ca.conf
В данный файл необходимо записать следующее содержимое:
1.5.Создайте самоподписанный сертификат и новый ключ сервера без пароля:
sudo openssl req -new -newkey rsa:2048 -nodes -keyout ca.key -x509 -days 365 -out ca.crt
В процессе выполнения необходимо ответить на следующие вопросы:
| Параметр | Необходимость указания | Пример |
|---|---|---|
| Country Name (2 letter code) [AU] | Требуется | RU |
| State or Province Name (full name) [Some-State] | Требуется | Novosibirsk |
| Locality Name (eg, city) | Требуется | Novosibirsk |
| Organization Name (eg, company) [Internet Widgits Pty Ltd] | Опционально | Eltex Enterprise LTD. |
| Organizational Unit Name (eg, section) [] | Требуется | CPE |
| Common Name (e.g. server FQDN or YOUR name) [] | Требуется | slgate.eltex.loc |
| Email Address [] | Требуется | slgate@slgate.eltex.loc |
Файл ca.crt требуется переименовать в slgate_client.crt и переместить по пути /etc/ansible-iot/latest/slgate/gate/ssl/certs/slgate_client.crt на сервере, где будет расположен сервис SL-Gate.
Создание сертификата slgate_client.p12 для платформы умного дома
2.1. Создайте для клиента (slgate_client.crt) закрытый ключ и запрос на сертификат (CSR) при помощи следующей команды:
sudo openssl req -new -newkey rsa:2048 -nodes -keyout slgate_client.key -out slgate_client.csr
В процессе выполнения необходимо ответить на следующие вопросы:
Необходимо обязательно задать CN и emailAddress отличные от указанных в /etc/ssl/slgate.eltex.loc/ca.conf
| Параметр | Необходимость указания | Пример |
|---|---|---|
| Country Name (2 letter code) [AU] | Требуется | RU |
| State or Province Name (full name) [Some-State] | Требуется | Novosibirsk |
| Locality Name (eg, city) | Требуется | Novosibirsk |
| Organization Name (eg, company) [Internet Widgits Pty Ltd] | Опционально | Eltex Enterprise LTD. |
| Organizational Unit Name (eg, section) [] | Требуется | CPE |
| Common Name (e.g. server FQDN or YOUR name) [] | Требуется Должен отличаться от указанного в /etc/ssl/slgate.eltex.loc/ca.conf | Client |
| Email Address [] | Требуется Должен отличаться от указанного в /etc/ssl/slgate.eltex.loc/ca.conf | client@slgate.eltex.loc |
2.2. Подпишите запрос на сертификат (CSR) с помощью доверенного сертификата (CA). В процессе подписания используются параметры заданные в файле ca.conf:
sudo openssl ca -config ca.conf -in slgate_client.csr -out slgate_client.crt -batch
2.3. Экспортируйте сертификат slgate_client.crt и ключ slgate_client.key в один файл slgate_client.p12 при помощи следующей команды:
Вместо PASSWORD_HERE необходимо задать пароль.
Данный пароль потребуется при последующей настройке платформы умного дома.
sudo openssl pkcs12 -export -in slgate_client.crt -inkey slgate_client.key -out slgate_client.p12 -passout pass:PASSWORD_HERE
Файл slgate_client.p12 требуется переместить по пути /etc/ansible-iot/latest/iot/core/ssl/private/slgate_client.p12 на сервере, где будет расположена платформа умного дома ELIS.
Настройка DNS-сервера
Для корректной работы SL-Gate обязательно требуется использовать Wildcard DNS-запись, так как ссылки для удаленного доступа к локальным платформам содержат динамически генерируемый поддомен.
К примеру, для сервера SL-Gate с доменом "slgate.eltex.loc" будут сгенерированы ссылки удаленного доступа вида "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.slgate.eltex.loc".
По этой причине требуется создать Wildcard DNS-запись вида "*.slgate.eltex.loc" или ".slgate.eltex.loc" (в зависимости от DNS-провайдера).
Настройка базовой конфигурации SL-Gate
1. Сконфигурируйте параметры сервера, на который будет производиться установка сервиса SL-Gate в файле /etc/ansible-iot/latest/inventory.
sudo nano /etc/ansible-iot/latest/inventory
Структура раздела slgate в файле /etc/ansible-iot/latest/inventory:
Описание основных параметров SL-Gate в файле inventory:
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
<без имени> | localhost | localhost | Адрес сервера, на который будет производиться установка сервиса. Так как предполагается локальная установка, используется значение |
ansible_connection | local | local | Способ подключения к серверу. local — локальное подключение. |
ansible_sudo_pass | password | password | Пароль для получения привилегий суперпользователя. |
2. Сконфигурируйте параметры для установки сервиса SL-Gate в файле /etc/ansible-iot/latest/vars/default.yml.
sudo nano /etc/ansible-iot/latest/vars/default.yml
Структура раздела slgate в файле /etc/ansible-iot/latest/vars/default.yml:
Описание основных параметров SL-Gate в файле default.yml:
Жирным шрифтом выделены параметры, значения которых необходимо задать, опираясь на столбец "Значение по умолчанию" с учетом ваших индивидуальных требований.
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
slgate.serverName | {{ iot.serverName }} | Доменное имя сервера SL-Gate | Внешний адрес SL-Gate. Обязательно должен быть доменным именем! |
slgate.installDir | /storage/slgate | /storage/slgate | Путь к директории, где будут храниться данные сервиса SL-Gate. |
3. Сконфигурируйте параметры для работы сервиса SL-Gate в файле/etc/ansible-iot/latest/vars/service_parameters.yml.
sudo nano /etc/ansible-iot/latest/vars/service_parameters.yml
Структура раздела slgate в файле /etc/ansible-iot/latest/vars/service_parameters.yml:
Описание основных параметров SL-Gate в файле service_parameters.yml:
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
slgate.proxy.useClientCert | false | true | Активация проверки клиентского сертификата для обращения к API SL-Gate. Используется для безопасного обращения к API SL-Gate. |
slgate.proxy.clientCertPassword | "PASSWORD_HERE" | "PASSWORD_HERE" | Пароль для расшифровки клиентского сертификата, используемого для безопасного обращения к API SL-Gate. Данное значение требуется только в конфигурации платформы умного дома, в конфигурации SL-Gate этот параметр не используется и может иметь любое значение. |
slgate.vpn.port.map | 1194 | 1194 | Порт, который будет прослушивать SL-Gate для установления соединения с локальными платформами. |
slgate.vpn.protocol | udp | udp | Протокол, который будет использоваться для установления соединения с локальными платформами. |
slgate.vpn.maxClients | 1024 | 1024 | Максимальное одновременное количество туннелей на SL-Gate. Учитываются как активные, так и неактивные на данный момент туннели. |
slgate.proxy.port.map | 4443 | 4443 | Порт, по которому будет выполняться доступ к API сервиса, а также проксирование запросов до локальных платформ через SL-Gate. |
4. Проверьте наличие файла сертификата для корректной работы сервиса SL-Gate при помощи следующей команды:
if [ -f /etc/ansible-iot/latest/slgate/gate/ssl/certs/slgate_client.crt ] ; then echo "Success, file exists" ; else echo "Failure, file doesn't exist" ; fi
Вывод «Success, file exists» означает наличие необходимого файла и не требует дополнительных действий.
Вывод «Failure, file doesn't exist» означает отсутствие указанного файла, в случае чего необходимо обратиться к разделу «Генерация сертификатов для защищенного доступа», часть «Создание сертификата ca.crt для сервиса SL-Gate».
В процессе выполнения данной инструкции будет получен файл /etc/ssl/slgate.eltex.loc/ca.crt, который необходимо переименовать в slgate_client.crt и переместить по пути /etc/ansible-iot/latest/slgate/gate/ssl/certs/slgate_client.crt
Запуск SL-Gate
Проверка конфигурации
Перед установкой сервиса SL-Gate следует перепроверить, что в конфигурацию были внесены все требуемые изменения.
Для этого ниже приведены примеры всех полных файлов конфигурации, которые редактировались в данном документе:
Установка сервиса SL-Gate
По завершении конфигурации сервиса SL-Gate необходимо произвести его установку на сервер при помощи следующих команд:
cd /etc/ansible-iot/latest sudo ansible-playbook install_slgate.yml
Пример вывода команд по установке сервиса:
В выводе команды необходимо дождаться появления строки "PLAY RECAP" и убедиться, что параметры unreachable и failed на следующей строке равны нулю, что означает успешную установку сервиса.
Если любой из этих параметров не равен нулю, то в процессе установки сервиса произошла ошибка. В таком случае в выводе команды будет присутствовать задача, статус которой равен failed или unreachable. Изучение текста ошибки этой задачи поможет выявить причину проблемы и исправить её.
Проверка работоспособности
1. После успешной установки сервиса проверьте состояние контейнеров сервиса мониторинга при помощи следующей команды:
sudo docker ps -a
Вывод данной команды должен иметь следующий вид:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0933bb3eabfb hub.eltex-co.ru/iot/iot-slgate:1.34 "/docker-entrypoint.…" 3 minutes ago Up 3 minutes (unhealthy) 80/tcp, 0.0.0.0:1194->1194/udp, [::]:1194->1194/udp, 0.0.0.0:4443->4443/tcp, [::]:4443->4443/tcp iot-slgate dc956cea6057 hub.eltex-co.ru/iot/iot-postgres:1.34 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 5432/tcp iot-postgres
Запуск всех контейнеров занимает до 3 минут.
Необходимо убедиться, что все контейнеры имеют статус Up и не происходит их перезапуск (статус Restarting).
В выводе команды должны присутствовать следующие контейнеры:
| Название контейнера | Ожидаемый статус |
|---|---|
| iot-slgate | Up (healthy) |
| iot-postgres | Up |
Требования к настройкам сети сервера SL-Gate
Для корректной работы платформы сервиса удаленного доступа к локальным платформам SL-Gate требуется, чтобы на сервере, где выполнялась установка сервиса, были доступны из внешней сети следующие порты:
| Файл конфигурации | Название параметра | Протокол | Порт (по примеру конфигурации) | Назначение |
|---|---|---|---|---|
/etc/ansible-iot/latest/vars/service_parameters.yml | slgate.vpn.port.map | TCP | 4443 | Порт, по которому будет выполняться доступ к API сервиса, а также проксирование запросов до локальных платформ через SL-Gate. |
slgate.proxy.port.map | UDP (если параметр TCP (если параметр | 1194 | Порт, который будет прослушивать SL-Gate для установления соединения с локальными платформами. |
Конфигурация удаленного логирования
Подготовка сервера к установке сервиса удаленного логирования
Системные требования
Для развертывания сервиса удаленного логирования требуется операционная система Ubuntu 22.04 x64 LTS.
Требуется наличие процессора с поддержкой инструкций AVX.
Рекомендуемые системные требования сервера:
- число аппаратных серверов — 1;
- процессор — Intel, AMD (4+ процессорных ядер, для Intel – процессоры 11 поколения и выше, для AMD – процессоры поколения 5000 и выше);
- оперативная память — 10 ГБ;
- место на диске — 100 ГБ;
- производительность дискового массива (чтение/запись) — 1000 IOPS.
Допускается совместная установка сервисов мониторинга и удаленного логирования на один сервер.
Подготовка к установке сервиса удаленного логирования
Перед развертыванием сервиса удаленного логирования необходимо установить систему Ansible и необходимые для ее работы компоненты. Ansible рекомендуется устанавливать из официального репозитория проекта.
Для установки сервиса удаленного логирования выполните следующие шаги:
1. Установите Ansible на сервер c Ubuntu 22.04 при помощи следующих команд:
apt update apt install --install-recommends linux-generic-hwe-22.04-edge apt install software-properties-common add-apt-repository --yes --update ppa:ansible/ansible apt install ansible
2. Выполните проверку версии Ansible при помощи следующей команды:
ansible --version
Требуется, чтобы версия Ansible была не ниже v2.9:
ansible [core 2.17.10] config file = /etc/ansible/ansible.cfg configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3/dist-packages/ansible ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections executable location = /usr/bin/ansible python version = 3.10.12 (main, Feb 4 2025, 14:57:36) [GCC 11.4.0] (/usr/bin/python3) jinja version = 3.0.3 libyaml = True
3. Добавьте необходимые для установки платформы умного дома коллекции Ansible при помощи следующих команд:
ansible-galaxy collection install community.general ansible-galaxy collection install community.crypto ansible-galaxy collection install community.docker
Если перечисленные коллекции еще не были установлены, то будет выведено следующее сообщение:
Starting galaxy collection install process Process install dependency map Starting collection install process Downloading https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/community-general-10.5.0.tar.gz to /root/.ansible/tmp/ansible-local-51534vov2dfet/tmpyez57674/community-general-10.5.0-3zvcqohw Installing 'community.general:10.5.0' to '/root/.ansible/collections/ansible_collections/community/general' community.general:10.5.0 was installed successfully Starting galaxy collection install process Process install dependency map Starting collection install process Downloading https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/community-crypto-2.26.0.tar.gz to /root/.ansible/tmp/ansible-local-51530kuhgcdyr/tmpixug1ixh/community-crypto-2.26.0-pb3a8m8w Installing 'community.crypto:2.26.0' to '/root/.ansible/collections/ansible_collections/community/crypto' community.crypto:2.26.0 was installed successfully Starting galaxy collection install process Process install dependency map Starting collection install process Downloading https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/community-docker-4.5.2.tar.gz to /root/.ansible/tmp/ansible-local-515466d0ryy6l/tmptx3_ppdf/community-docker-4.5.2-j87huzd0 Installing 'community.docker:4.5.2' to '/root/.ansible/collections/ansible_collections/community/docker' community.docker:4.5.2 was installed successfully
Если же данные коллекции уже установлены, будет выведено следующее сообщение:
Starting galaxy collection install process Nothing to do. All requested collections are already installed. If you want to reinstall them, consider using `--force`. Starting galaxy collection install process Nothing to do. All requested collections are already installed. If you want to reinstall them, consider using `--force`. Starting galaxy collection install process Nothing to do. All requested collections are already installed. If you want to reinstall them, consider using `--force`.
В таком случае дополнительных действий в данном шаге предпринимать не требуется.
4. Подготовьте конфигурацию сервиса удаленного логирования.
Для получения файлов конфигурации обратитесь с запросом в Коммерческий отдел ЭЛТЕКС.
Файлы конфигурации будут направлены вам в виде архива tar.gz, который необходимо распаковать в директорию /etc с правами root при помощи следующей команды.
mkdir -p /etc/ansible-iot/latest tar -C /etc/ansible-iot/latest --strip-components=1 -xvf ansible-iot-1.34.tar.gz
Файлы конфигурации и плейбуки (скрипты/конфигурации) Ansible будут расположены в директории /etc/ansible-iot/latest.
Настройка базовой конфигурации сервиса удаленного логирования
1. Сконфигурируйте параметры сервера, на который будет производиться установка сервиса удаленного логирования в файле/etc/ansible-iot/latest/inventory.
sudo nano /etc/ansible-iot/latest/inventory
Структура раздела elk в файле/etc/ansible-iot/latest/inventory:
Описание основных параметров сервиса удаленного логирования в файле inventory:
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
<без имени> | localhost | localhost | Адрес сервера, на который будет производиться установка сервиса. Так как предполагается локальная установка, используется значение |
ansible_connection | local | local | Способ подключения к серверу. local — локальное подключение. |
ansible_sudo_pass | password | password | Пароль для получения привилегий суперпользователя. |
2. Сконфигурируйте параметры для установки сервиса удаленного логирования в файле/etc/ansible-iot/latest/vars/default.yml.
sudo nano /etc/ansible-iot/latest/vars/default.yml
Базовая структура разделов iot и elk в файле /ansible-iot/vars/default.yml:
Описание основных параметров удаленного логирования в файле default.yml:
Жирным шрифтом выделены параметры, значения которых необходимо задать, опираясь на столбец "Значение по умолчанию" с учетом ваших индивидуальных требований.
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
elk.enable | false | false | Активация отправки логов платформы в Logstash. Данное значение требуется только в конфигурации платформы умного дома, в конфигурации сервиса удаленного логирования этот параметр не используется и может иметь любое значение. |
elk.serverName | {{ iot.serverName }} | Доменное имя или IP-адрес сервера удаленного логирования | Адрес сервера удаленного логирования. Данный адрес должен быть доступен для запросов с сервера платформы умного дома. |
elk.installDir | /storage/elk | /storage/elk | Путь до директории, где будут храниться данные сервиса удаленного логирования. |
3. Сконфигурируйте параметры для работы сервиса удаленного логирования в файле/etc/ansible-iot/latest/vars/service_parameters.yml.
sudo nano /etc/ansible-iot/latest/vars/service_parameters.yml
Базовая структура разделов iot и elk в файле /ansible-iot/vars/service_parameters.yml:
Описание основных параметров удаленного логирования в файле service_parameters.yml:
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
elk.logstash.port.map | 5001 | 5001 | Порт, который прослушивает сервис удаленного логирования для получения логов от платформы умного дома. |
Запуск сервиса удаленного логирования
Проверка конфигурации
Перед установкой сервиса удаленного логирования следует перепроверить, что в конфигурацию были внесены все требуемые изменения.
Для этого ниже приведены примеры всех полных файлов конфигурации, которые редактировались в данном документе:
Установка сервиса удаленного логирования
По завершении конфигурации сервиса удаленного логирования необходимо произвести его установку на сервер при помощи следующих команд:
cd /etc/ansible-iot/latest sudo ansible-playbook install_elk.yml
Пример вывода команд по установке сервиса:
В выводе команды необходимо дождаться появления строки "PLAY RECAP" и убедиться, что параметры unreachable и failed на следующей строке равны нулю, что означает успешную установку сервиса.
Если любой из этих параметров не равен нулю, то в процессе установки сервиса произошла ошибка. В таком случае в выводе команды будет присутствовать задача, статус которой равен failed или unreachable. Изучение текста ошибки этой задачи поможет выявить причину проблемы и исправить её.
Проверка работоспособности
1. После успешной установки сервиса, проверьте состояние контейнеров сервиса удаленного логирования при помощи следующей команды:
sudo docker ps -a
Вывод данной команды должен иметь следующий вид:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 609ecd6c8e2f hub.eltex-co.ru/iot/iot-kibana:1.34 "/bin/tini -- /usr/l…" 42 minutes ago Up 42 minutes 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp iot-kibana e614e2da96ca hub.eltex-co.ru/iot/iot-logstash:1.34 "/usr/local/bin/dock…" 42 minutes ago Up 42 minutes 5044/tcp, 0.0.0.0:9600->9600/tcp, [::]:9600->9600/tcp, 0.0.0.0:5001->5000/tcp, [::]:5001->5000/tcp iot-logstash cb64a6c96ffa hub.eltex-co.ru/iot/iot-elasticsearch:1.34 "/bin/tini -- /usr/l…" 42 minutes ago Up 42 minutes 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp iot-elasticsearch
Запуск всех контейнеров занимает до 3 минут.
Необходимо убедиться, что все контейнеры имеют статус Up и не происходит их перезапуск (статус Restarting).
В выводе команды должны присутствовать следующие контейнеры:
| Название контейнера | Ожидаемый статус |
|---|---|
iot-kibana | Up |
iot-logstash | Up |
iot-elasticsearch | Up |
2. После успешного запуска всех контейнеров требуется проверить доступность веб-интерфейса сервиса удаленного логирования по следующему адресу:
https://domain.name:5601/
где domain.name — доменное имя сервера сервиса удаленного логирования (файл vars/default.yml, параметр elk.serverName).
Требования к настройкам сети сервера удаленного логирования
Для корректной работы сервиса удаленного логирования требуется, чтобы на сервере, где выполнялась установка сервиса, следующий порт был доступен для сервера платформы умного дома ELIS:
| Файл конфигурации | Название параметра | Протокол | Порт (по примеру конфигурации) | Назначение |
|---|---|---|---|---|
/etc/ansible-iot/latest/vars/service_parameters.yml | elk.logstash.port.map | TCP | 5001 | Порт, который прослушивает сервис удаленного логирования для получения логов от платформы умного дома. |
В целях безопасности настоятельно рекомендуется ограничить доступ к порту, указанному в параметре elk.logstash.port.map (значение по умолчанию: 5001) со всех внешних IP-адресов, кроме IP-адреса платформы умного дома ELIS.
Конфигурация платформы умного дома ELIS
Подготовка сервера к установке платформы умного дома ELIS
Системные требования
Для развертывания платформы умного дома ELIS и её компонентов требуется операционная система Ubuntu 22.04 x64 LTS.
Требуется наличие процессора с поддержкой инструкций AVX.
Минимальные системные требования сервера (минимально необходимая конфигурация для запуска ядра платформы с микросервисами):
- число аппаратных серверов — 1;
- процессор — Intel, AMD (4+ процессорных ядер, для Intel — процессоры 11 поколения и выше, для AMD — процессоры поколения 5000 и выше);
- оперативная память — 8 ГБ;
- место на диске — 1000 ГБ;
- производительность дискового массива (чтение/запись) — 1000 IOPS.
Рекомендуемые системные требования сервера:
- число аппаратных серверов — 1;
- процессор — Intel, AMD (6+ процессорных ядер);
- оперативная память — 24 ГБ;
- место на диске — 1000 ГБ;
- производительность дискового массива (чтение/запись) — 1000 IOPS.
Рекомендуемая конфигурация позволяет обеспечить стабильную работу платформы умного дома при следующей нагрузке:
| Тип нагрузки | Количество |
|---|---|
| Зарегистрированные пользователи | от 11200 |
| Подключения любых устройств | до 40000 |
| Выполняемые сценарии за день | от 14000 |
Подготовка к установке платформы ELIS
Перед развертыванием платформы необходимо установить систему Ansible и необходимые для ее работы компоненты. Ansible рекомендуется устанавливать из официального репозитория проекта.
Для установки платформы выполните следующие шаги:
1. Установите Ansible на сервер Ubuntu 22.04 при помощи следующих команд:
apt update apt install --install-recommends linux-generic-hwe-22.04-edge apt install software-properties-common add-apt-repository --yes --update ppa:ansible/ansible apt install ansible
2. Выполните проверку версии Ansible при помощи следующей команды:
ansible --version
Требуется, чтобы версия Ansible была не ниже v2.9:
ansible [core 2.17.10] config file = /etc/ansible/ansible.cfg configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3/dist-packages/ansible ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections executable location = /usr/bin/ansible python version = 3.10.12 (main, Feb 4 2025, 14:57:36) [GCC 11.4.0] (/usr/bin/python3) jinja version = 3.0.3 libyaml = True
3. Добавьте коллекции Ansible, необходимые для установки платформы умного дома, при помощи следующих команд:
ansible-galaxy collection install community.general ansible-galaxy collection install community.crypto ansible-galaxy collection install community.docker
Если перечисленные коллекции еще не были установлены, то будет выведено следующее сообщение:
Starting galaxy collection install process Process install dependency map Starting collection install process Downloading https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/community-general-10.5.0.tar.gz to /root/.ansible/tmp/ansible-local-51534vov2dfet/tmpyez57674/community-general-10.5.0-3zvcqohw Installing 'community.general:10.5.0' to '/root/.ansible/collections/ansible_collections/community/general' community.general:10.5.0 was installed successfully Starting galaxy collection install process Process install dependency map Starting collection install process Downloading https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/community-crypto-2.26.0.tar.gz to /root/.ansible/tmp/ansible-local-51530kuhgcdyr/tmpixug1ixh/community-crypto-2.26.0-pb3a8m8w Installing 'community.crypto:2.26.0' to '/root/.ansible/collections/ansible_collections/community/crypto' community.crypto:2.26.0 was installed successfully Starting galaxy collection install process Process install dependency map Starting collection install process Downloading https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/community-docker-4.5.2.tar.gz to /root/.ansible/tmp/ansible-local-515466d0ryy6l/tmptx3_ppdf/community-docker-4.5.2-j87huzd0 Installing 'community.docker:4.5.2' to '/root/.ansible/collections/ansible_collections/community/docker' community.docker:4.5.2 was installed successfully
Если же данные коллекции уже установлены, будет выведено следующее сообщение:
Starting galaxy collection install process Nothing to do. All requested collections are already installed. If you want to reinstall them, consider using `--force`. Starting galaxy collection install process Nothing to do. All requested collections are already installed. If you want to reinstall them, consider using `--force`. Starting galaxy collection install process Nothing to do. All requested collections are already installed. If you want to reinstall them, consider using `--force`.
В таком случае дополнительных действий в данном шаге предпринимать не требуется.
4. Подготовьте конфигурацию платформы умного дома ELIS.
Для получения файлов конфигурации обратитесь с запросом в Коммерческий отдел ЭЛТЕКС.
Файлы конфигурации будут направлены вам в виде архива tar.gz, который необходимо распаковать в директорию /etc с правами root при помощи следующей команды.
mkdir -p /etc/ansible-iot/latest tar -C /etc/ansible-iot/latest --strip-components=1 -xvf ansible-iot-2.2.0.tar.gz
Файлы конфигурации и плейбуки (скрипты/конфигурации) Ansible будут расположены в директории /etc/ansible-iot/latest.
Настройка базовой конфигурации платформы
1. Сконфигурируйте параметры сервера, на который будет производиться установка платформы умного дома в файле /etc/ansible-iot/latest/inventory.
sudo nano /etc/ansible-iot/latest/inventory
Структура разделов iot, mqtt_broker и olap_service в файле/etc/ansible-iot/latest/inventory:
Описание основных параметров платформы умного дома в файле inventory:
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
<без имени> | localhost | localhost | Адрес сервера, на который будет производиться установка сервиса. Так как предполагается локальная установка, используется значение |
ansible_connection | local | local | Способ подключения к серверу. local — локальное подключение. |
ansible_sudo_pass | password | password | Пароль для получения привилегий суперпользователя. |
2. Сконфигурируйте параметры для установки платформы умного дома в файле /etc/ansible-iot/latest/vars/default.yml:
sudo nano /etc/ansible-iot/latest/vars/default.yml
Базовая структура разделов iot в файле/etc/ansible-iot/latest/vars/default.yml:
Описание основных параметров платформы умного дома в файле default.yml:
Жирным шрифтом выделены параметры, значения которых необходимо задать, опираясь на столбец "Значение по умолчанию", с учетом ваших индивидуальных требований.
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
iot.serverName | "external.iot.address" | Доменное имя платформы умного дома | Адрес платформы умного дома. Данный адрес должен быть доступен для запросов из внешней сети. |
iot.installDir | /storage/iot | /storage/iot | Путь к директории, где будут храниться данные платформы умного дома. |
iot.privacyPolicyUrl | "my.privacy.policy" | URL страницы политики конфиденциальности платформы умного дома | Ссылка на политику конфиденциальности платформы умного дома. Открывается при нажатии на кнопку "Политика конфиденциальности" |
iot.knowledgeBaseUrl | "https://docs.eltex-co.ru/display/EKB/IoT" | URL базы знаний платформы умного дома | Ссылка на базу знаний платформы умного дома. Открывается при нажатии на кнопку "Нужна помощь?" |
iot.web.httpPort | 80 | 80 | Порт HTTP, по которому будет осуществляться доступ в веб-интерфейс и к API платформы умного дома. |
iot.web.httpsPort | 443 | 443 | Порт HTTPS, по которому будет осуществляться доступ в веб-интерфейс и к API платформы умного дома. |
iot.web.redirectHttpToHttps | true | true | Автоматическое перенаправление запросов с порта HTTP на порт HTTPS. |
iot.web.useHttpsByDefault | true | true | Нужно ли использовать HTTPS при формировании ссылок на веб-интерфейс. |
iot.web.nginx.rateLimit.enable | true | true | Включение ограничения скорости обработки запросов с одного IP-адреса веб-сервером. |
iot.web.certbot.enable | true | true | Включение автоматического получения SSL сертификата Let's Encrypt. |
iot.web.certbot.email | test@email.com | Адрес электронной почты, к которому будет привязан SSL-сертификат Let's Encrypt | Адрес электронной почты, к которому будет привязан полученный SSL сертификат Let's Encrypt. Необходим для подтверждения валидности домена при получении сертификата Let's Encrypt. |
iot.web.fail2ban.enable | true | false | Включение блокировки IP-адресов, вызывающих ошибки веб-сервера и превышающих лимиты ограничения скорости запросов (если активен параметр iot.web.nginx.rateLimit.enable). |
iot.mail.smtp.submitter | test@email.com | Адрес электронной почты для отправки писем платформой умного дома | Адрес электронной почты, от имени которого будут отправляться электронные письма платформой умного дома. |
iot.mail.smtp.password | "password" | Пароль для указанного адреса электронной почты | Пароль для указанного выше адреса электронной почты. |
iot.mail.smtp.senderPrefix | "Сервер Eltex-SC" | "Сервер Eltex-SC" | Имя отправителя, с которым будут отправляться электронные письма платформой умного дома. |
iot.mail.smtp.auth | "true" | "true" | Использовать аутентификацию при подключении к почтовому серверу. |
iot.mail.smtp.host | email.com | Адрес почтового сервера | Адрес почтового сервера, который будет использоваться для отправки электронных писем платформой умного дома. |
iot.mail.smtp.port | 587 | Порт почтового сервера | Порт указанного выше почтового сервера. |
iot.mail.smtp.protection | starttls | Протокол шифрования, используемый при подключении к почтовому серверу | Протокол шифрования, используемый при подключении к серверу. Допустимые значения: |
iot.authorization.logLevel | INFO | ERROR | Уровень логирования для сервера авторизации. Возможные значения: ERROR, WARN, INFO, DEBUG, TRACE. |
iot.core.logLevel | INFO | ERROR | Уровень логирования для ядра платформы умного дома. Возможные значения: ERROR, WARN, INFO, DEBUG, TRACE |
iot.core.ctlGate.port | 8070 | 8070 | Порт для подключения Z-Wave-контроллера (незащищенное соединение). Обязательно должен совпадать с |
iot.core.ctlGate.sslPort | 8072 | 8072 | Порт для подключения Z-Wave-контроллера (защищенное соединение). Обязательно должен совпадать с |
iot.core.links.useHttpsForApi | false | false | Нужно ли использовать HTTPS при формировании ссылок на ресурсы платформы умного дома. Включение данного параметра может привести к ошибкам обновления прошивки на устройствах, которые не поддерживают HTTPS. |
iot.core.push.firebase | false | true | Включение возможности отправки пуш-уведомлений через Firebase Cloud Messaging для Android-приложения Eltex Home. |
iot.core.push.apns | false | true | Включение возможности отправки пуш-уведомлений через Apple Push Notification Service для iOS-приложения Eltex Home. |
iot.authorization.clientRegistrations.google.enable | true | false | Включение возможности регистрации через учетную запись Google. |
iot.authorization.clientRegistrations.microsoft.enable | true | false | Включение возможности регистрации через учетную запись Microsoft. |
iot.authorization.clientRegistrations.apple.enable | true | false | Включение возможности регистрации через Apple ID. |
3. Сконфигурируйте параметры для работы платформы умного дома в файле/etc/ansible-iot/latest/vars/service_parameters.yml:
sudo nano /etc/ansible-iot/latest/vars/service_parameters.yml
Структура файла /etc/ansible-iot/latest/vars/service_parameters.yml:
Описание основных параметров платформы умного дома в файле service_parameters.yml:
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
iot.captcha.caseSensitive | true | false | Включение чувствительности к регистру captcha при регистрации. |
iot.broker.external.port.map | 8883 | 8883 | Порт для подключения Wi-Fi MQTT устройств к платформе умного дома. |
iot.rabbitmq.admin.port.export | true | false | Включение проброса порта панели администратора RabbitMQ (HTTP). |
iot.rabbitmq.admin.sslPort.export | true | false | Включение проброса порта панели администратора RabbitMQ (HTTPS). |
iot.zwayproxy.port.map | 8070 | 8070 | Порт для подключения Z-Wave-контроллера (незащищенное соединение). Обязательно должно совпадать с |
iot.zwayproxy.sslPort.map | 8072 | 8072 | Порт для подключения Z-Wave-контроллера (незащищенное соединение). Обязательно должно совпадать с |
iot.wsproxy.port.map | 8075 | 8075 | Порт для установления WebSocket-соединения с мобильными приложениями и веб-интерфейсом с целью передачи событий от платформы умного дома в реальном времени. |
4. Сконфигурируйте параметры для работы платформы умного дома в файле /etc/ansible-iot/latest/templates/iot/authorization-server.yml.j2.
sudo nano /etc/ansible-iot/latest/templates/iot/authorization-server.yml.j2
Структура файла /etc/ansible-iot/latest/templates/iot/authorization-server.yml.j2:
Описание основных параметров платформы умного дома в файле authorization-server.yml.j2:
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
services.internal.loginInfo.ttl | 180d | 10000d | Время жизни записей loginInfo в БД после выхода пользователя из учетной записи. |
services.internal.loginInfo.activityTimeLimit | 180d | 10000d | Максимально допустимый интервал времени отсутствия активности со стороны пользователя, по истечении которого происходит принудительная деавторизация. |
services.internal.loginInfo.allowedInactivePeriod | 180d | 10000d | Максимально допустимый интервал времени отсутствия активности со стороны пользователя перед его деактивацией. При повторном входе в аккаунт после деактивации потребуется подтвердить адрес электронной почты. |
5. Сконфигурируйте параметры для работы контейнеров платформы умного дома в файле /etc/ansible-iot/latest/templates/iot/docker-swarm/swarm_config.yml.j2.
sudo nano /etc/ansible-iot/latest/templates/iot/docker-swarm/swarm_config.yml.j2
Структура файла /etc/ansible-iot/latest/templates/iot/docker-swarm/swarm_config.yml.j2:
Описание основных параметров платформы умного дома в файле swarm_config.yml.j2:
Жирным шрифтом выделены параметры, для которых необходимо выполнить действие из столбца "Требуемое значение".
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
services.core.environment.JAVA_TOOL_OPTIONS | -Xms512m -Xmx4g {{ "" if not iot.core.jconsole.enable else "-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=" ~ iot.core.jconsole.port ~ " -Dcom.sun.management.jmxremote.rmi.port=" ~ iot.core.jconsole.port ~ " -Djava.rmi.server.hostname=" ~ iot.core.jconsole.host }} | -Xms1024m -Xmx8g {{ "" if not iot.core.jconsole.enable else "-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=" ~ iot.core.jconsole.port ~ " -Dcom.sun.management.jmxremote.rmi.port=" ~ iot.core.jconsole.port ~ " -Djava.rmi.server.hostname=" ~ iot.core.jconsole.host }} | Параметры JVM для запуска ядра платформы умного дома. Увеличено количество минимальной выделяемой памяти для кучи с 512 МБ до 1024 МБ. Увеличено количество максимальной выделяемой памяти для кучи с 4 ГБ до 8 ГБ. |
services.web.depends_on | depends_on: core: condition: service_started | Удалить весь блок services.web.depends_on | Параметры порядка запуска контейнеров при старте платформы умного дома. Удаление блока |
6. Сконфигурируйте параметры для работы контейнера MQTT-брокера в файле /etc/ansible-iot/latest/templates/iot/docker-swarm/swarm_config.yml.j2.
sudo nano /etc/ansible-iot/latest/templates/iot/docker-swarm/swarm_config.yml.j2
Структура файла /etc/ansible-iot/latest/templates/iot/docker-swarm/swarm_config.yml.j2:
Описание основных параметров платформы умного дома в файле broker/include/docker-compose.yml.j2:
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
broker.environment.JAVA_TOOL_OPTIONS | -Xms256m -Xmx4g {{ "" if not iot.broker.jconsole.enable else "-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=" ~ iot.broker.jconsole.port ~ " -Dcom.sun.management.jmxremote.rmi.port=" ~ iot.broker.jconsole.port ~ " -Djava.rmi.server.hostname=" ~ iot.broker.jconsole.host }} | -Xms512m -Xmx6g {{ "" if not iot.broker.jconsole.enable else "-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=" ~ iot.broker.jconsole.port ~ " -Dcom.sun.management.jmxremote.rmi.port=" ~ iot.broker.jconsole.port ~ " -Djava.rmi.server.hostname=" ~ iot.broker.jconsole.host }} | Параметры JVM для запуска MQTT брокера. Увеличено количество минимальной выделяемой памяти для кучи с 256 МБ до 512 МБ. Увеличено количество максимальной выделяемой памяти для кучи с 4 ГБ до 6 ГБ. |
Конфигурация работы с репликами БД
1. Сконфигурируйте параметры для работы платформы умного дома с репликами БД в файле/etc/ansible-iot/latest/vars/default.yml:
sudo nano /etc/ansible-iot/latest/vars/default.yml
Базовая структура раздела mongodb в файле/etc/ansible-iot/latest/vars/default.yml:
Описание основных параметров БД платформы умного дома в файле default.yml:
Жирным шрифтом выделены параметры, значения которых необходимо задать, опираясь на столбец "Значение по умолчанию" с учетом ваших индивидуальных требований.
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
iot.mongodb.external.enable | false | true | Включение подключения к внешней БД MongoDB. |
iot.mongodb.external.uri | "external.mongodb.address:27017" | Домены или IP-адреса всех реплик в следующем формате:
Пример приведен для трех реплик, однако этот шаблон расширяется на любое количество реплик. | Указание адресов реплик БД, к которым будет выполняться подключение. |
Конфигурация работы с платформой видеонаблюдения EVI-Cloud
1. Сконфигурируйте параметры для работы платформы умного дома с платформой видеонаблюдения EVI-Cloud в файле/etc/ansible-iot/latest/vars/default.yml:
sudo nano /etc/ansible-iot/latest/vars/default.yml
Базовая структура раздела video в файле/etc/ansible-iot/latest/vars/default.yml:
Описание основных параметров работы с платформой видеонаблюдения EVI-Cloud в файле default.yml:
Жирным шрифтом выделены параметры, значения которых необходимо задать, опираясь на столбец "Значение по умолчанию", с учетом ваших индивидуальных требований.
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
iot.core.video.evi.url | "" |
где | URL для обращения к платформе видеонаблюдения EVI Cloud. |
iot.core.video.evi.apiKey | "" | API-ключ, сконфигурированный при настройке EVI Cloud | API-ключ для безопасного обращения к EVI Cloud. |
iot.core.video.evi.operatorId | "" | "" | Данное поле при работе с EVI Cloud не используется. |
iot.core.video.evi.adminLogin | "" | "admin" | Имя пользователя администратора на платформе видеонаблюдения EVI Cloud. |
2. Сконфигурируйте параметры для работы платформы умного дома с платформой видеонаблюдения EVI-Cloud в файле /etc/ansible-iot/latest/vars/service_parameters.yml.
sudo nano /etc/ansible-iot/latest/vars/service_parameters.yml
Структура параметров работы с платформой видеонаблюдения EVI-Cloud в файле /etc/ansible-iot/latest/vars/service_parameters.yml:
Описание основных параметров работы с платформой видеонаблюдения EVI-Cloud в файле service_parameters.yml:
Жирным шрифтом выделены параметры, значения которых необходимо задать, опираясь на столбец "Значение по умолчанию", с учетом ваших индивидуальных требований.
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
iot.core.video.evi.ignoreServerCertCheck | false | true | Включение игнорирования валидности SSL-сертификата при доступе к API EVI Cloud. |
iot.core.video.evi.eventApiKey | "CHANGE_ME" | "KEY" | Указать ключ в свободной форме. |
iot.core.video.webrtc.stun.urls | - "stun.example1.com:3478"- "stun.example2.com:3478" | Список развернутых STUN-серверов в следующем формате:
где либо
где | Список STUN-серверов, используемых для установления WebRTC соединения между камерой и клиентом. STUN-сервер является частью платформы видеонаблюдения EVI Cloud, поэтому допускается использовать её адрес в данном списке. |
iot.core.video.webrtc.turn.sfu.force | false | true | Включение принудительного использования SFU для установления соединения между камерой и клиентом. |
iot.core.video.webrtc.turn.sfu.eventTimeout | 10s | 10s | Максимальное время ожидания события от EVI о начале WebRTC-сессии между камерой и TURN:SFU. |
iot.core.video.webrtc.p2p.sdpAnswerTimeout | 60s | 60s | Максимальное время ожидания SDP answer от камеры. |
iot.core.video.webrtc.checkCameraNatTypeTimeout | 10s | 10s | Максимальное время ожидания проверки камерой типа своего NAT. |
iot.core.video.webrtc.pingHostCandidateTimeout | 10s | 10s | Максимальное время ожидания выполнения ping к host candidate клиента. |
Конфигурация работы с SL-Gate
1. Сконфигурируйте параметры для работы платформы умного дома с сервисом удаленного доступа к локальным платформам SL-Gate в файле /etc/ansible-iot/latest/vars/service_parameters.yml:
sudo nano /etc/ansible-iot/latest/vars/service_parameters.yml
Структура параметров работы с SL-Gate в файле /etc/ansible-iot/latest/vars/service_parameters.yml:
Описание основных параметров работы с SL-Gate в файле service_parameters.yml:
Жирным шрифтом выделены параметры, значения которых необходимо задать, опираясь на столбец "Значение по умолчанию", с учетом ваших индивидуальных требований.
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
iot.core.slgate.instances | - slgate:4443 | Список развернутых сервисов SL-Gate в следующем формате:
где | Список сервисов SL-Gate, доступных для использования локальными платформами умного дома. Данный список должен содержать как минимум одно значение. |
iot.core.slgate.ignoreServerCertCheck | false | true | Включение игнорирования валидности SSL-сертификата при доступе к API SL-Gate. |
slgate.proxy.useClientCert | false | true | Активация проверки клиентского сертификата для обращения к API SL-Gate Используется для безопасного обращения к API SL-Gate. |
slgate.proxy.clientCertPassword | "CHANGE_ME" | Пароль для клиентского сертификата, заданный при настройке SL-Gate | Пароль для расшифровки клиентского сертификата, используемого для безопасного обращения к API SL-Gate. |
2. Проверьте наличие файла клиентского сертификата для корректной работы платформы умного дома с API сервиса SL-Gate при помощи следующей команды:
if [ -f /etc/ansible-iot/latest/iot/ssl/private/slgate_client.p12 ] ; then echo "Success, file exists" ; else echo "Failure, file doesn't exist" ; fi
Вывод "Success, file exists" означает наличие необходимого файла и не требует дополнительных действий.
Вывод "Failure, file doesn't exist" означает отсутствие указанного файла, в случае чего необходимо обратиться к разделу "Генерация сертификатов для защищенного доступа", часть "Создание сертификата slgate_client.p12 для платформы умного дома".
В процессе выполнения данной инструкции будет получен файл /etc/ssl/slgate.eltex.loc/slgate_client.p12, который требуется переместить по пути /etc/ansible-iot/latest/iot/ssl/private/slgate_client.p12
Конфигурация входа через социальные сети (ELIS 2.2.0)
Вход через Яндекс
Для настройки регистрации пользователей платформы ELIS через Яндекс необходимо создать приложение в Yandex OAuth. Чтобы сделать это, воспользуйтесь инструкцией в данном разделе.
Платформа должна иметь домен с действительным SSL-сертификатом.
При необходимости вы можете обратиться к официальной документации Яндекс.
1. Войдите в сервис Yandex OAuth через аккаунт Яндекс, с помощью которого вы планируете продолжать разработку.
2. Нажмите Создать приложение или перейдите по прямой ссылке.
3. Введите название вашего приложения, которое будет отображаться на странице авторизации пользователя.
4. В разделе платформ выберите Веб-сервисы. Нажмите Сохранить и продолжить.
5. Выберите данные пользователя, доступ к которым необходимо предоставить платформе. Должны быть выбраны все предлагаемые данные. Нажмите Сохранить и продолжить.
6. Добавьте адрес, на который платформа перенаправит пользователя после авторизации. Формат ввода:
https://domain.name:port/api/v1/login/oauth2/code/yandex
где domain.name — доменное имя сервера платформы умного дома (файл vars/default.yml, параметр iot.serverName);
port — HTTPS-порт (файл vars/default.yml, параметр iot.web.httpsPort).
Например: https://eltex-co.ru:443/api/v1/login/oauth2/code/yandex
Нажмите Сохранить и продолжить.
7. Укажите email, на который будет приходить информация об изменениях параметров внешней авторизации. Нажмите Сохранить.
8. После настройки всех параметров отобразится окно, которое увидят пользователи при входе в ELIS с помощью Яндекс ID. Чтобы подтвердить сохранение, нажмите Все верно.
На странице приложения будут доступны все параметры. При необходимости их редактирования нажмите на иконку .
9. Для дальнейшей настройки будут необходимы значения полей ClientID и Client secret:
Сохраните их, а затем отредактируйте конфигурационный файл /etc/ansible-iot/latest/vars/default.yml в соответствии с таблицей, приведенной ниже:
Жирным шрифтом выделены параметры, значения которых необходимо задать, опираясь на столбец "Значение по умолчанию", с учетом ваших индивидуальных требований, а также данных из предыдущих шагов документа.
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
iot.authorization.selfRegistration.allowSocialNetworks | false | true | Глобальное включение возможности регистрации пользователей через социальные сети (Яндекс, ВК, Mail.ru). |
iot.authorization.clientRegistrations.yandex.enable | true | true | Включение возможности регистрации пользователей через Яндекс. Для корректной работы требуется предварительно включить параметр iot.authorization.selfRegistration.allowSocialNetworks |
iot.authorization.clientRegistrations.yandex.clientId | "YandexClientIdChangeMe" | Значение поля "ClientID" | "ClientID", полученный во время регистрации приложения в Yandex OAuth. |
iot.authorization.clientRegistrations.yandex.clientSecret | "YandexClientSecretChangeMe" | Значение поля "Client secret" | "Client secret", полученный во время регистрации приложения в Yandex OAuth. |
Вход через ВК
Для настройки регистрации пользователей платформы ELIS через VK необходимо создать приложение в VK OAuth. Чтобы сделать это, воспользуйтесь инструкцией в данном разделе.
Платформа должна иметь домен с действительным SSL-сертификатом.
При необходимости вы можете обратиться к официальной документации VK.
1. Войдите в Сервис авторизации через аккаунт VK, с помощью которого вы планируете продолжать разработку.
2. Откройте страницу «Мои приложения» и нажмите Добавить приложение.
3. Введите название вашего приложения и выберите платформу Web.
4. Далее в соответствующих полях укажите:
- Базовый домен — адрес домена во внешней сети без указания протокола http:// или https:// (файл vars/default.yml, параметр iot.serverName);
- Доверенный Redirect URL — адрес, на который платформа перенаправит пользователя после авторизации. Формат ввода:
https://domain.name:port/api/v1/login/oauth2/code/vk
где domain.name — доменное имя сервера платформы умного дома (файл vars/default.yml, параметр iot.serverName);
port — HTTPS-порт (файл vars/default.yml, параметр iot.web.httpsPort).
Например: https://eltex-co.ru:443/api/v1/login/oauth2/code/vk
Подтвердите создание приложения.
5. В настройках приложения перейдите в раздел «Доступы» и активируйте пункт Почта.
6. В настройках приложения перейдите в раздел «Приложение». Вам понадобятся значения полей ID приложения и Защищенный ключ:
Сохраните их, а затем отредактируйте конфигурационный файл vars/default.yml в соответствии с таблицей, приведенной ниже:
Жирным шрифтом выделены параметры, значения которых необходимо задать, опираясь на столбец "Значение по умолчанию", с учетом ваших индивидуальных требований, а также данных из предыдущих шагов документа.
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
iot.authorization.selfRegistration.allowSocialNetworks | false | true | Глобальное включение возможности регистрации пользователей через социальные сети (Яндекс, ВК, Mail.ru). |
iot.authorization.clientRegistrations.vk.enable | true | true | Включение возможности регистрации пользователей через ВК. Для корректной работы требуется предварительно включить параметр iot.authorization.selfRegistration.allowSocialNetworks |
iot.authorization.clientRegistrations.vk.clientId | "VkClientIdChangeMe" | Значение поля "ID приложения" | "ID приложения", полученный во время регистрации приложения в VK OAuth. |
iot.authorization.clientRegistrations.vk.clientSecret | "VkClientSecretChangeMe" | Значение поля "Защищенный ключ" | "Защищенный ключ", полученный во время регистрации приложения в VK OAuth. |
Вход через Mail.ru
Для настройки регистрации пользователей платформы ELIS через Mail.ru необходимо создать приложение в OAuth Mail. Чтобы сделать это, воспользуйтесь инструкцией в данном разделе.
Платформа должна иметь домен с действительным SSL-сертификатом.
При необходимости вы можете обратиться к официальной документации OAuth Mail.
1. Войдите в сервис OAuth Mail через аккаунт Mail, с помощью которого вы планируете продолжать разработку.
2. Нажмите Создать приложение.
3. Введите в поле Название проекта название вашего приложения, которое будет отображаться на странице авторизации пользователя.
4. Добавьте изображение, которое будет отображаться на экране выдачи прав.
5. В поле Все redirect_uri добавьте адрес, на который платформа перенаправит пользователя после авторизации. Формат ввода:
https://domain.name:port/api/v1/login/oauth2/code/mail-ru
где domain.name — доменное имя сервера платформы умного дома (файл vars/default.yml, параметр iot.serverName);
port — HTTPS-порт (файл vars/default.yml, параметр iot.web.httpsPort).
Например: https://eltex-co.ru:443/api/v1/login/oauth2/code/mail-ru
Не используйте на конце redirect_uri слеш и другие символы.
6. Подтвердите, что ознакомились и принимаете условия Лицензионного соглашения и Правил использования данных.
7. После настройки всех параметров нажмите Подключить сайт.
8. При необходимости отредактируйте дополнительные поля на открывшейся странице и нажмите Сохранить изменения.
9. Сохраните значения полей Client ID и Client Secret, указанных на данной странице, а затем отредактируйте конфигурационный файл vars/default.yml в соответствии с таблицей, приведенной ниже:
Жирным шрифтом выделены параметры, значения которых необходимо задать, опираясь на столбец "Значение по умолчанию" с учетом ваших индивидуальных требований, а также данных из предыдущих шагов документа.
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
iot.authorization.selfRegistration.allowSocialNetworks | false | true | Глобальное включение возможности регистрации пользователей через социальные сети (Яндекс, ВК, Mail.ru). |
iot.authorization.clientRegistrations.mailRu.enable | true | true | Включение возможности регистрации пользователей через Mail.ru. Для корректной работы требуется предварительно включить параметр iot.authorization.selfRegistration.allowSocialNetworks |
iot.authorization.clientRegistrations.mailRu.clientId | "MailRuClientIdChangeMe" | Значение поля "Client ID" | "Client ID", полученный во время регистрации приложения в OAuth Mail. |
iot.authorization.clientRegistrations.mailRu.clientSecret | "MailRuClientSecretChangeMe" | Значение поля "Client Secret" | "Client Secret", полученный во время регистрации приложения в OAuth Mail. |
Конфигурация работы со сторонними умными домами
Умный дом Яндекс (Алиса)
В качестве примера будет рассмотрено добавление тестового навыка (приватного) на платформу УД Яндекс. Такой навык не будет отображаться в списке доступных по умолчанию производителей при добавлении через мобильное приложение УД Яндекс.
Платформа должна иметь домен с действительным SSL-сертификатом.
При необходимости вы можете обратиться к официальной документации Яндекс.
1. Перейдите на страницу Яндекс.Диалоги и нажмите кнопку Создать навык. Далее авторизуйтесь на платформе Яндекс.
2. На странице Яндекс.Диалоги нажмите кнопку Создать диалог.
3. Выберите тип диалога Умный Дом. Откроется страница создания нового диалога.
4. Во вкладке Связка аккаунтов заполните обязательные поля, а также поле URL для обновления токена в соответствии с таблицей, приведенной ниже:
Жирным шрифтом выделены параметры, значения которых необходимо задать, учитывая ваши индивидуальные требования.
| Параметр | Требуемое значение | Описание |
|---|---|---|
Идентификатор приложения | Любое | Идентификатор приложения задается тем, кто настраивает интеграцию. Допускается указание любого уникального значения (не совпадающего с Client ID других интеграций). |
Секрет приложения | Любое | Секрет приложения задается тем, кто настраивает интеграцию. Допускается указание любого значения. |
URL авторизации |
где | По данному URL УД Яндекс будет выполнять перенаправление пользователей для входа в аккаунт на платформе умного дома ELIS. |
URL для получения токена |
где | По данному URL УД Яндекс будет выполнять получение токена для доступа к платформе умного дома от имени привязанного пользователя. |
URL для обновления токена |
где | По данному URL УД Яндекс будет выполнять обновление токена для доступа к платформе умного дома от имени привязанного пользователя. |
5. После сохранения настроек во вкладке Связка аккаунтов перейдите во вкладку Настройки. Заполните все обязательные поля и выставьте для параметра Тип доступа режим Приватный. В поле Backend введите адрес, на который будут отправляться запросы. Формат ввода:
https://domain.name:port/api/v1/yandex
где domain.name — доменное имя сервера платформы умного дома (файл vars/default.yml, параметр iot.serverName);
port — HTTPS-порт (файл vars/default.yml, параметр iot.web.httpsPort).
6. После сохранения настроек нажмите кнопку Опубликовать навык во вкладке Настройки и убедитесь, что под именем диалога статус изменился на «Диалог опубликован».
7. Получите на вкладке «Общие сведения» Идентификатор диалога и сохраните его для выполнения шага 9.
8. Пройдите по данной ссылке и авторизуйтесь при помощи того же аккаунта, от имени которого создавался навык в шаге 1, для получения OAuth-токена для отправки уведомлений и сохраните его для выполнения шага 9.
Полученный токен должен иметь следующий вид: y0_*******************************************************
9. Отредактируйте конфигурационный файл /etc/ansible-iot/latest/vars/default.yml в соответствии с таблицей, приведенной ниже:
Жирным шрифтом выделены параметры, значения которых необходимо задать, опираясь на столбец "Значение по умолчанию", с учетом ваших индивидуальных требований, а также данных из предыдущих шагов документа.
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
iot.authorization.skills.yandex.enabled | false | true | Включение возможности интеграции с УД Яндекс. |
iot.authorization.skills.yandex.clientId | | Идентификатор приложения, указанный при создании навыка в шаге 4 | Идентификатор приложения, использующийся для определения интеграции, отправившей запрос на авторизацию. Данный идентификатор не должен совпадать с Client ID других интеграций (УД ВК, УД Сбер). |
iot.authorization.skills.yandex.password | | Секрет приложения, указанный при создании навыка в шаге 4 | Секрет приложения, использующийся для верификации интеграции, отправившей запрос на авторизацию. |
iot.authorization.skills.yandex.skillId | "" | Идентификатор диалога, полученный в шаге 7 | Идентификатор диалога, использующийся для отправки уведомлений УД Яндекс от имени созданного навыка. |
iot.authorization.skills.yandex.oauthToken | "" | OAuth-токен для отправки уведомлений, полученный в шаге 8 | OAuth-токен, использующийся для отправки уведомлений в УД Яндекс от имени созданного навыка. |
Для более подробного описания процедуры публикации навыка УД Яндекс рекомендуется обратиться к официальной документации УД Яндекс.
Умный дом ВК (Маруся)
Платформа должна иметь домен с действительным SSL-сертификатом.
При необходимости вы можете обратиться к официальной документации ВК.
1. Перейдите на страницу VK для разработчиков, выполните вход и нажмите Создать проект.
2. В проекте создайте приложение. Для этого нажмите Добавить приложение, задайте название и выберите тип. Нажмите Создать.
3. Созданное приложение отобразится на странице Приложения.
4. Выберите приложение и сохраните значение поля ID приложения для выполнения шага 6.
5. Заполните необходимые параметры приложения в соответствии с таблицей, приведенной ниже:
Жирным шрифтом выделены параметры, значения которых необходимо задать, учитывая ваши индивидуальные требования.
| Параметр | Требуемое значение | Описание |
|---|---|---|
Название | Любое | Название навыка задается тем, кто настраивает интеграцию. Допускается указание любого значения. |
Адрес API |
где | По данному URL УД ВК будет обращаться к API платформы умного дома ELIS. |
Адрес страницы авторизации |
где | По данному URL УД ВК будет перенаправлять пользователей для входа в аккаунт на платформе умного дома ELIS. |
Адрес для получения тоĸена |
где | По данному URL УД ВК будет получать токен для доступа к платформе умного дома от имени привязанного пользователя. |
Адрес для обновления токена |
где | По данному URL УД ВК будет обновлять токен для доступа к платформе умного дома от имени привязанного пользователя. |
Авторизационный client_id | Любое | Идентификатор приложения задается тем, кто настраивает интеграцию. Допускается указание любого уникального значения (не совпадающего с Client ID других интеграций). |
Авторизационный secret | Любое | Секрет приложения задается тем, кто настраивает интеграцию. Допускается указание любого значения. |
Протокол интеграции | Яндекс | Протокол, при помощи которого будет выполняться обращение к API платформы умного дома ELIS. |
6. Отредактируйте конфигурационный файл /etc/ansible-iot/latest/vars/default.yml в соответствии с таблицей, приведенной ниже:
Жирным шрифтом выделены параметры, значения которых необходимо задать, опираясь на столбец "Значение по умолчанию", с учетом ваших индивидуальных требований, а также данных из предыдущих шагов документа.
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
iot.authorization.skills.marusya.enabled | false | true | Включение возможности интеграции с УД ВК. |
iot.authorization.skills.marusya.clientId | | Идентификатор приложения, указанный при создании навыка в шаге 4 | Идентификатор приложения, использующийся для определения интеграции, отправившей запрос на авторизацию. Данный идентификатор не должен совпадать с Client ID других интеграций (УД Яндекс, УД Сбер). |
iot.authorization.skills.marusya.password | | Секрет приложения, указанный при создании навыка в шаге 4 | Секрет приложения, использующийся для верификации интеграции, отправившей запрос на авторизацию. |
iot.authorization.skills.marusya.appId | "" | ID приложения, полученный в шаге 4 | Идентификатор диалога, использующийся для отправки уведомлений УД ВК от имени созданного навыка. |
iot.authorization.skills.marusya.oauthToken | "" | "" | Данное поле не используется при работе с интеграцией УД ВК (Маруся) |
Умный дом Сбер (Салют)
Платформа должна иметь домен с действительным SSL-сертификатом.
При необходимости вы можете обратиться к официальной документации Сбер.
1. Перейдите на страницу SmartMarket Studio, выполните вход и выберите Создать проект.
2. Из списка сервисов выберите карточку Другие сервисы и API → Smart Home Cloud:
3. Далее введите в соответствующее поле название проекта:
4. В соответствующих полях введите Название бренда, добавьте Логотип и следующие Ссылки на приложения:
| Параметр | Требуемое значение |
|---|---|
App Store Url | https://apps.apple.com/ru/app/eltex-home/id1563181285 |
Google Play | https://play.google.com/store/apps/details?id=org.eltex.android.app.smart_home_services |
Rustore | https://apps.rustore.ru/app/org.eltex.android.app.smart_home_services |
Appgallery | https://appgallery.huawei.com/#/app/C109850967 |
5. На вкладке Параметры задайте следующие значения:
Жирным шрифтом выделены параметры, значения которых необходимо задать, учитывая ваши индивидуальные требования.
| Параметр | Требуемое значение | Описание |
|---|---|---|
| Тип передачи параметров | В параметрах запроса | Способ передачи параметров при обращении УД Сбер к платформе умного дома ELIS. |
| Адрес API-сервера проекта |
где | По данному URL УД Сбер будет обращаться к API платформы умного дома ELIS. |
| Адрес для авторизации |
где | По данному URL УД Сбер будет перенаправлять пользователей для входа в аккаунт на платформе умного дома ELIS. |
| Адрес для получения токена |
где | По данному URL УД Сбер будет получать токен для доступа к платформе умного дома от имени привязанного пользователя. |
| Идентификатор клиента | Любое | Идентификатор приложения задается тем, кто настраивает интеграцию. Допускается указание любого уникального значения (не совпадающего с Client ID других интеграций). |
| Секрет клиента | Любое | Секрет приложения задается тем, кто настраивает интеграцию. Допускается указание любого значения. |
6. После изменения параметров нажмите Сохранить.
7. На вкладке Доступ к API сгенерируйте токен, который будет использоваться облачной платформой для взаимодействия с УД Сбер:
8. Сгенерированный токен доступа к API умного дома Sber необходимо сохранить для выполнения шага 9.
9. Отредактируйте конфигурационный файл /etc/ansible-iot/latest/vars/default.yml в соответствии с таблицей, приведенной ниже:
Жирным шрифтом выделены параметры, значения которых необходимо задать, опираясь на столбец "Значение по умолчанию", с учетом ваших индивидуальных требований, а также данных из предыдущих шагов документа.
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
iot.authorization.skills.sber.enabled | false | true | Включение возможности интеграции с УД Сбер. |
iot.authorization.skills.sber.clientId | | Идентификатор приложения, указанный при создании навыка в шаге 5 | Идентификатор приложения, использующийся для определения интеграции, отправившей запрос на авторизацию. Данный идентификатор не должен совпадать с Client ID других интеграций (УД Яндекс, УД ВК). |
iot.authorization.skills.sber.password | | Секрет приложения, указанный при создании навыка в шаге 5 | Секрет приложения, использующийся для верификации интеграции, отправившей запрос на авторизацию. |
iot.authorization.skills.sber.bearerToken | "" | "" | OAuth-токен для отправки уведомлений, использующийся для отправки уведомлений в УД Сбер от имени созданного навыка. |
Конфигурация работы с сервисом удаленного логирования
1. Сконфигурируйте параметры для работы платформы умного дома с сервисом удаленного логирования в файле /etc/ansible-iot/latest/vars/default.yml.
sudo nano /etc/ansible-iot/latest/vars/default.yml
Базовая структура раздела elk в файле /etc/ansible-iot/latest/vars/default.yml:
Описание основных параметров работы с сервисом удаленного логирования в файле default.yml:
Жирным шрифтом выделены параметры, значения которых необходимо задать, опираясь на столбец "Значение по умолчанию", с учетом ваших индивидуальных требований.
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|---|---|---|
elk.enable | false | true | Активация отправки логов платформы в Logstash. |
elk.serverName | "{{ iot.serverName }}" | Доменное имя или IP-адрес сервера удаленного логирования | Адрес сервера удаленного логирования. Данный адрес должен быть доступен для запросов с сервера платформы умного дома. |
Запуск платформы
Проверка конфигурации
Перед установкой платформы умного дома следует перепроверить, что в конфигурацию были внесены все требуемые изменения.
Для этого ниже приведены примеры всех полных файлов конфигурации, которые редактировались в рамках данного документа:
Установка платформы
По завершении конфигурации платформы умного дома необходимо произвести ее установку на сервер при помощи следующих команд:
cd /etc/ansible-iot/latest sudo ansible-playbook install_elis.yml
Пример вывода команд по установке платформы:
В выводе команды необходимо дождаться появления строки "PLAY RECAP" и убедиться, что параметры unreachable и failed на следующей строке равны нулю, что означает успешную установку платформы.
Если любой из этих параметров не равен нулю, то в процессе установки платформы произошла ошибка. В таком случае в выводе команды будет присутствовать задача, статус которой равен failed или unreachable. Изучение текста ошибки этой задачи поможет выявить причину проблемы и исправить её.
Проверка работоспособности
Платформа запущена в режиме docker-swarm.
1. После успешной установки платформы, проверьте состояние контейнеров микросервисов платформы умного дома при помощи следующей команды:
sudo docker ps -a
Вывод данной команды должен иметь следующий вид:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ae12df234c85 nexus.eltex.loc:9017/iot-web-mc:2.1.2 "/docker-entrypoint.…" 23 minutes ago Up 23 minutes 80/tcp swarm_iot_web.1.5jppy72lqxkn53ufumdui3drj iot-double-web 67d0d833c20e nexus.eltex.loc:9017/iot-core:2.1.2 "/extras/app-starter…" 24 minutes ago Up 24 minutes (healthy) swarm_iot_core.1.vh2rpcf5uzvb3huv73suj43o2 0d2eeebbd9ff nexus.eltex.loc:9017/iot-captcha:2.1.2 "java -cp /app/resou…" 24 minutes ago Up 24 minutes swarm_iot_captcha.1.nspejakojoe3i9ai6puiqhcjz 0c685c0ac8cd nexus.eltex.loc:9017/iot-mqttbroker-mongo:2.1.2 "/extras/app-starter…" 24 minutes ago Up 24 minutes (healthy) swarm_iot_broker.1.nnl6uzrwc6tpbycwjia05akga 9956e4fd2265 nexus.eltex.loc:9017/iot-zwayproxy:2.1.2 "/extras/app-starter…" 24 minutes ago Up 24 minutes swarm_iot_zwayproxy.1.us7ud5x54avp42va5soywyugf e6e117258183 nexus.eltex.loc:9017/iot-rabbitmq:2.1.2 "docker-entrypoint.s…" 24 minutes ago Up 24 minutes (healthy) 4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 15691-15692/tcp, 25672/tcp swarm_iot_rabbitmq.1.jb3wd0xadc72wvdyqlvt8klbw 39c23f8e02c5 nexus.eltex.loc:9017/iot-guard:2.1.2 "/extras/app-starter…" 24 minutes ago Up 24 minutes (healthy) swarm_iot_guard.1.z2ifopypjlcbitb7jk46tzwdr f3a26c16c5d7 nexus.eltex.loc:9017/iot-nginx-exporter:2.1.2 "/usr/bin/nginx-prom…" 24 minutes ago Up 24 minutes swarm_iot_nginxExporter.1.qni1shjrf5u2o89gxoltiv12o e2b97c0db652 nexus.eltex.loc:9017/iot-payment-server:2.1.2 "/extras/app-starter…" 24 minutes ago Up 24 minutes (healthy) swarm_iot_payment.1.8tvr1gtzwkow8p8xvmvbq2m6e 334ab3745f48 nexus.eltex.loc:9017/iot-authorization-server:2.1.2 "/extras/app-starter…" 24 minutes ago Up 24 minutes (healthy) swarm_iot_authorization.1.aq26lksi8xe977nmvoo1o3k6b 990534973f03 nexus.eltex.loc:9017/iot-notification:2.1.2 "/extras/app-starter…" 24 minutes ago Up 24 minutes (healthy) swarm_iot_notification.1.kkjxv1qzl3acaudonp8n51yy4 c8600ac340b8 nexus.eltex.loc:9017/iot-mongo6:2.1.2 "/entrypoint.sh" 24 minutes ago Up 24 minutes (healthy) 27017/tcp swarm_iot_mongodb.1.ktyfdav1cg3z60b9tt31vbnfe 694fc8efba59 nexus.eltex.loc:9017/iot-hazelcast:2.1.2 "java --add-modules …" 24 minutes ago Up 24 minutes swarm_iot_hazelcast.1.t9f5hkx2qs208wcgjphcdg785 a8e946d55b8a nexus.eltex.loc:9017/iot-wsproxy:2.1.2 "/extras/app-starter…" 24 minutes ago Up 24 minutes swarm_iot_wsproxy.1.pf7e49kx8p824ftgsx1zcpzix 5ca0e19fd0a7 nexus.eltex.loc:9017/iot-mongodb-exporter:2.1.2 "/mongodb_exporter -…" 24 minutes ago Up 24 minutes 9216/tcp swarm_iot_mongodbExporter.1.v96vq0ojh1wbs7eair8qmbr3j 3887bc7e8622 nexus.eltex.loc:9017/iot-olapservice:2.1.2 "/extras/app-starter…" 4 minutes ago Up 4 minutes (healthy) swarm_iot_olapservice.1.8o91lhw19taqk03ywzto0jfjt 01376edc46f4 nexus.eltex.loc:9017/iot-minio:2.1.2 "/entrypoint.sh serv…" 4 minutes ago Up 4 minutes (healthy) swarm_iot_minio.1.oeqf9qp6q3nqf3jes93ghebd9 d7f04dd98bd9 nexus.eltex.loc:9017/iot-clickhouse-server:2.1.2 "/entrypoint.sh" 5 minutes ago Up 5 minutes (healthy) 8123/tcp, 9000/tcp, 9009/tcp swarm_iot_clickhouse.1.idq7yf43t0m2t3ozxyfajmgxc
Запуск всех контейнеров может занять от 2 до 10 минут, в зависимости от размера БД.
Необходимо убедиться, что все контейнеры имеют статус Up и не происходит их перезапуск (статус Restarting).
Если в строке статуса контейнера присутствует состояние здоровья (в скобках) то, также необходимо убедиться, что он равен healthy, либо health: starting.
В выводе команды должны присутствовать следующие контейнеры:
| Название контейнера | Ожидаемый статус |
|---|---|
iot-web-mc | Up |
iot-core | Up (healthy) |
iot-captcha | Up (healthy) |
iot-mqttbroker-mongo | Up |
iot-rabbitmq | Up |
iot-guard | Up (healthy) |
iot-nginx-exporter | Up |
iot-payment-server | Up |
iot-authorization-server | Up (healthy) |
iot-notification | Up (healthy) |
iot-mongo6 | Up (healthy) |
iot-hazelcast | Up |
iot-wsproxy | Up |
iot-mongodb-exporter | Up |
iot-olapservice | Up (healthy) |
iot-minio | Up (healthy) |
iot-clickhouse-server | Up (healthy) |
2. После успешного запуска всех контейнеров требуется проверить доступность API платформы умного дома при помощи следующей команды:
curl -w "\n" -k https://domain.name:port/api/v1/common/ping
где domain.name — доменное имя сервера платформы умного дома (файл vars/default.yml, параметр iot.serverName);
port — HTTPS-порт (файл vars/default.yml, параметр iot.web.httpsPort).
Вывод команды должен содержать одну строку со значением true, что означает доступность API платформы умного дома.
3. Проверьте доступность веб-интерфейса платформы умного дома по следующему адресу:
https://domain.name:port/
где domain.name — доменное имя сервера платформы умного дома (файл vars/default.yml, параметр iot.serverName);
port — HTTPS-порт (файл vars/default.yml, параметр iot.web.httpsPort).
4. Авторизуйтесь в веб-интерфейсе администратора платформы умного дома при помощи следующих учетных данных по умолчанию:
| Логин | admin |
|---|---|
| Пароль | Test18plat34Form |
В целях безопасности настоятельно рекомендуется сменить пароль учетной записи администратора.
Требования к настройкам сети сервера платформы умного дома
Для корректной работы платформы платформы умного дома ELIS требуется, чтобы на сервере, где выполнялась установка сервиса, были доступны из внешней сети следующие порты:
| Файл конфигурации | Название параметра | Протокол | Порт (по примеру конфигурации) | Назначение |
|---|---|---|---|---|
/etc/ansible-iot/latest/vars/default.yml | iot.web.httpPort | TCP | 80 | Порт HTTP, по которому будет осуществляться доступ в веб-интерфейс и к API платформы умного дома. |
iot.web.httpsPort | TCP | 443 | Порт HTTPS, по которому будет осуществляться доступ в веб-интерфейс и к API платформы умного дома. | |
iot.core.ctlGate.port | TCP | 8070 | Порт для подключения Z-Wave контроллера (незащищенное соединение). | |
iot.core.ctlGate.sslPort | TCP | 8072 | Порт для подключения Z-Wave контроллера (незащищенное соединение). | |
/etc/ansible-iot/latest/vars/service_parameters.yml | iot.wsproxy.port.map | TCP | 8075 | Порт для установления WebSocket соединения с мобильными приложениями и веб-интерфейсом с целью передачи событий от платформы умного дома в реальном времени. |
iot.broker.external.port.map | TCP | 8883 | Порт для подключения Wi-Fi MQTT устройств к платформе умного дома. |
В целях безопасности настоятельно рекомендуется ограничить доступ к порту указанному в параметре iot.olapservice.db.port.map (файл /etc/ansible-iot/latest/vars/service_parameters.yml, значение по умолчанию: 8123) со всех внешних IP-адресов.
Активация лицензии
Добавление файла лицензии
1. Перейдите в веб-интерфейс платформы умного дома по следующему адресу:
https://domain.name:port/
где domain.name — доменное имя сервера платформы умного дома (файл vars/default.yml, параметр iot.serverName);
port — HTTPS-порт (файл vars/default.yml, параметр iot.web.httpsPort).
2. Авторизуйтесь в веб-интерфейсе администратора платформы умного дома при помощи следующих учетных данных по умолчанию:
| Логин | admin |
|---|---|
| Пароль | Test18plat34Form |
В целях безопасности настоятельно рекомендуется сменить пароль учетной записи администратора.
3. В левом боковом меню выберите вкладку Лицензии. Откроется страница добавления лицензий.
4. Нажмите на кнопку Добавить и выберите файл лицензии в открывшемся окне загрузки.
5. Далее загруженный файл лицензии проходит этап верификации на сервере лицензий: при загрузке лицензии отправляется запрос на сервер лицензий для её подтверждения. Проверяется корректность лицензии, её срок, тип и другие параметры. После загрузки лицензия переходит в активированный режим.
6. При успешном прохождении проверки лицензия отобразится на странице со статусом «Лицензия действительна». В противном случае — со статусом «Лицензия не действительна».
Время использования платформы и количество добавляемых устройств ограничивается типом лицензии, которая приобретается заказчиком.
Платформе умного дома ELIS необходимо обращаться к серверу лицензирования для проверки действительности лицензии по крайней мере 1 раз в 2 недели.
Если невозможно обратиться к серверу лицензирования в течении 3 дней и более, платформа автоматически рассылает уведомление всем администраторам по адресам электронной почты, указанным в параметрах учетной записи.
Пример использования действительной лицензии
Пример процесса добавления одного нового устройства при условии наличия действительной лицензии:
1. Во время добавления устройства на сервер лицензий отправляется запрос для проверки добавляемого устройства.
2. Сервер лицензий проверяет лицензию.
3. Поскольку есть квота на добавляемые устройства (в данном примере можно добавить 3 устройства), сервер возвращает корректный ответ и устройство добавляется на платформу. Счетчик устройств лицензии увеличивается на 1.
При удалении устройства, которое было добавлено уже во время работы лицензии, происходит запрос к серверу лицензий на разрешение удаления. Осуществляется проверка устройства, и, если она проходит успешно, происходит декремент лицензии (уменьшение количества подключенных устройств).
Настройки индексов логов сервиса удаленного логирования
Для выполнения инструкций ниже требуется, чтобы сервис удаленного логирования был поднят и доступен, а платформа умного дома настроена на работу с сервисом удаленного логирования и работоспособна.
1. Авторизуйтесь в веб-интерфейсе сервиса удаленного логирования при помощи следующих учетных данных по умолчанию:
| Логин | elastic |
|---|---|
| Пароль | MyPw123 |
2. После авторизации необходимо добавить индексы для логов. Для этого откройте боковое меню и откройте страницу Stack Management в разделе Management. На открывшейся странице в боковом меню выберите пункт Index Patterns в разделе Kibana.
На данной странице необходимо создать индексы со следующими именами:
- iot-authorization-server;
- iot-core;
- mqtt-broker;
- olap-service;
- wsproxy;
- zwayproxy.
Список изменений
| Версия документа | Дата выпуска | Содержание изменений |
|---|---|---|
| 2.0 | 08.2026 | Синхронизация с версией ПО 2.2.0 Изменено:
|
| 1.0 | 06.2026 | Первая публикация |















































