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 Smartysmarty_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 для резидентов приложения Плюс ТВ
Инструкция полностью совпадает с предыдущей за исключением того, что мобильное приложение Плюс ТВ и портал уже собраны и опубликованы в маркеты с нужной версией.