Smarty

  1. Домой
  2. Документы
  3. Smarty
  4. Интеграция дополнительных сервисов
  5. Настройка сервиса Windycast

Настройка сервиса Windycast

Windycast — это дополнительный сервис Smarty для взаимодействия устройств между собой. Основанный на технологии Websocket, он позволяет осуществлять мгновенную передачу информации между системами и приложениями.

На данный момент Windycast используется для:

  • управления STB и Smart TV c помощью приложения на смартфоне;
  • отправки и показа уведомлений о звонке в домофон (реализовано для шаблонов Sevstar, Sevstar X и Futuristic).

Управление ТВ со смартфона

1. При его включении в сервисе в мобильном приложении появляется новый пункт меню «ТВ пульт», а также новый значок в экране просмотра канала.

Экран с возможностью открытия пульта управления телевизором
Экран с кнопкой переноса текущего просмотра на телевизор

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

Экран со списком устройств, к которым можно подключиться

3. После подтверждения подключения на экране телевизора появляется возможность использовать мобильное приложение в качестве пульта, либо одним свайпом переносить текущий просмотр канала с мобильного устройства на экран телевизора.

Пульт управления

Интеграция с домофонной системой

Windycast в данной интеграции используется как сервер мгновенной передачи сообщения о звонке от домофонной системы до устройства. Сценарий работы данной интеграции:

1. Домофонная система отправляет сообщение о звонке в Smarty с помощью метода http://smarty.example.com/ws_api/intercom_call/ (POST), параметры запроса:

  • account_id — идентификатор аккаунта, устройствам которого необходимо сообщить о звонке в домофон (обязательный)
  • image_url — адрес постоянно обновляющегося изображения с домофона
  • open_door_url — адрес, при запросе на который происходит открытие двери
  • reject_intercom_call_url — адрес, при запросе на который происходит отмена звонка

2. Сообщение с помощью Windycast будет доставлено на устройство и показано абоненту на телевизоре. Отображение видеоряда доступно только в интерфейсе Sevstar X и достигается благодаря обновлению текущего кадра с камеры домофона по таймеру (image_url). В интерфейсах Sevstar и Futuristic звонок поступает без видеоряда.

3. Абонент, нажимая на кнопки «Открыть» или «Не беспокоить», инициирует вызов АПИ-методов домофонной системы (open_door_url и reject_intercom_call_url).

Инструкция по настройке Windycast

Требования к серверу

Минимальные характеристики сервера, рассчитанного на 2000 активных подключений:

  • Процессор: 2 ядра с частотой более 2.5 ГГц
  • ОЗУ: 4 Гб
  • ПЗУ: 20 Гб

Примечание 1: Производить установку Windycast можно как на отдельную машину, так и на тот же сервер, где установлена Smarty.

Примечание 2: При установке Windycast на сервер со Smarty рекомендуем учесть требования к характеристикам сервера и, при необходимости, улучшить их до необходимых.

Установка

1. Требуется обновить все текущие составляющие сервиса на актуальные версии:
— Smarty (не ниже версии 2.6);
— Портал (не ниже версии engine 1013 sevstar-x 41, sevstar 243, futuristic 1037);
— Мобильное приложение (дата сборки не ранее 13.12.2021)

2. Устанавливаем интерпретатор python3.10

  • Устанавливаем системные пакеты:
apt update
apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev
  • Скачиваем исходный код интерпретатора с официального сайта и распаковываем его:
wget https://www.python.org/ftp/python/3.10.18/Python-3.10.18.tgz
tar -xf Python-3.10.*.tgz
  • Настраиваем параметры компиляции и выполняем сборку интерпретатора:
cd Python-3.10.*/
./configure --enable-optimizations
make -j 2
make altinstall

3. Далее необходимо скачать установочный пакет Windy и установить его:

dpkg -i windy*.deb

4. Заполняем файл конфигурации Windy, который находится по адресу /etc/microimpuls/windy/windy.ini, параметры для настройки:

  • smarty_url — локальный url Smarty
  • smarty_secret_key — параметр SECRET_KEY в настройках Smarty (без кавычек)

Пример конфигурации:

# Need to be equal with SECRET in Smarty config
smarty_secret_key = 123

# Need to be available from Windy
smarty_url = http://127.0.0.1:8180

5. Настраиваем виртуальное окружение и устанавливаем зависимости

  • Создаем виртуальное окружение:
cd /usr/share/microimpuls/
python3.10 -m venv windy_venv
cd windy_venv
ln -s /usr/share/microimpuls/windy ./
  • Устанавливаем пакеты Python: 
/usr/share/microimpuls/windy/venv/bin/pip3 install -r /usr/share/microimpuls/windy_venv/windy/requirements.txt
  • В файле /lib/systemd/system/windy.service изменяем значения параметров рабочей директории и параметров запуска:
WorkingDirectory=/usr/share/microimpuls/windy_venv/windy/
ExecStart=/usr/share/microimpuls/windy_venv/bin/python3.10 windy.py
  • Чтобы внесенные изменения вступили в силу необходимо выполнить следующую команду:
systemctl-daemon reload
  • Включаем автозапуск сервиса и перезапускаем его:
systemctl enable windy
systemctl restart windy

6. Настраиваем nginx

  • Включаем конфигурацию в nginx:
ln -s /etc/nginx/sites-available/windy /etc/nginx/sites-enabled/ 
  • Создаем директорию для логов:
mkdir /var/log/nginx/microimpuls/windy
chown www-data /var/log/nginx/microimpuls/windy
  • Проверяем конфигурацию на ошибки:
systemctl nginx configtest
  • Если ошибки в конфигурации отсутствуют, то можно перезагрузку конфигураций:
systemctl nginx reload

6. Последний этап конфигурации — это настройка клиентских приложений для взаимодействия с Windy:

  • в client.js портала либо на страницу конфигурации портала в панели администрирования Smarty необходимо прописать опцию windy_url, значение которой формируется по следующей схеме: ws:// + windy_host + : + windy_port + /ws, например:
'windy_url': 'ws://example.com:8888/ws', 
  • ту же самую опцию необходимо прописать в конфигурацию мобильных приложений на странице конфигурации приложения в панели администрирования Smarty, либо указать данный адрес в качестве опции сборки.

6. После корректной настройки всех пунктов в приложениях появится описанный выше функционал, а по адресу http:// + windy_host + : + windy_port + /status появится возможность отслеживать подключившиеся к Windy устройства.

Дополнительные настройки Windycast

  • Опция save_windy_devices для client.js шаблона Futuristic — при значении true устройства, подключавшиеся ранее к телевизору/приставке через Windycast, не требуют повторного подтверждения при подключении. Значение по умолчанию: false.
var CLIENT_SETTINGS = {
  // …
  'save_windy_devices': true
};
  • Включение функционала приёма домофонных сообщений осуществляется с помощью специальных сеттеров в client.js — через перечисление идентификаторов тарифных планов.
if (App.popupIntercomScreen) {
// SupportedTariffIds - id тарифов в которых поддерживается домофон, если тарифа нет, то даже windyCast не будет подключен, так как для других целей в шаблоне не используется
    App.popupIntercomScreen.setSupportedTariffIds([461, 22]);
}
  • Дополнительные сеттеры для конфигурации поведения сообщения от домофона:
if (App.popupIntercomScreen) {
    // ScreenHideInactivityDelay - после какого времени скроется попап звонка
    App.popupIntercomScreen.setScreenHideInactivityDelay(180); //в секундах,          минимум 5 сек, по умолчанию 3 мин
    // NotDisturbingDelay - сколько времени после нажатия "не беспокоить" или закрытия попапа звонки в шаблоне будут игнорироваться
    App.popupIntercomScreen.setNotDisturbingDelay(300); // в секундах, минимум 0 сек, то есть можно совсем отключить, дефолт 5 мин
    // ImageChangeInterval - частота обновления картинки с камеры
    if (App.popupIntercomScreen.setImageChangeInterval instanceof Function) {
        App.popupIntercomScreen.setImageChangeInterval(200); // в миллисекундах, диапазон [200мс, 10сек]
    }
}

Инструкция по настройке Windycast для резидентов приложения Плюс ТВ

Инструкция полностью совпадает с предыдущей за исключением того, что мобильное приложение Плюс ТВ и портал уже собраны и опубликованы в маркеты с нужной версией.