PandaRok

PandaRok

На Пикабу
115 рейтинг 2 подписчика 38 подписок 1 пост 0 в горячем
Награды:
5 лет на Пикабу
10

Оповещение о РО через колонки Яндекса (Ну или в целом получение сигналов в УДЯ)

В рамках данного поста рассматривается система (алгоритм) получения сигналов о РО (Ракетной опасности) в УДЯ (Умный дом Яндекс).

Предисловие. Это лишь пример. ТГ выбран в качестве доступности и простоты, так как информации о том, как получать данные из АСЦО (Автоматизированная система централизованного оповещения) в открытом доступе нет.

Схема работы системы

Схема работы системы

Принцип работы системы:

  • Сервис с заданной периодичностью считывает сообщения из Telegram-канала губернатора.

  • При появлении сообщения о РО, из текста извлекаются районы (регионы).

  • Из базы данных выбираются пользователи, подписанные на соответствующие районы.

  • Далее сервис отправляет HTTP-запросы в сторонний сервис WQTT с указанием пользователя и его устройства, которое необходимо перевести в состояние «Вкл.».


Для упрощения взаимодействия пользователя со сторонним сервисом испольуезтся Telegram-бот. Хотя это и облегчает процесс, от пользователя всё равно требуются дополнительные действия.

Принцип взаимодействия пользователя с TG ботом

Принцип взаимодействия пользователя с TG ботом

Суть интеграции заключается в имитации "лампочки" в сервисе WQTT, которая отображает состояние ракетной опасности:

  • Включено — при поступлении сигнала о ракетной опасности;

  • Выключено — при сигнале отбоя.

Почему WQTT? Вопрос хороший, ответ простой: он уже встроен в экосистему УДЯ и предоставляет пробный период (1 месяц) для тестирования (Можно использовать другой сервис или написать свой).


Условная регистрация

Условная регистрация

Взаимодействие пользователя с системой осуществляется через telegram бота:

  1. Пользователь отправляет команду /start.

  2. Бот присылает инструкцию и ожидает от пользователя токен с сайта WQTT.

  3. Пользователь отправляет полученный токен боту.

  4. Бот отправляет запрос к сервису для проверки токена. Если токен неверный, то бот отправляет сообщение о не корректном токене и ожидает валидный токен.

Токен принят, пользователь может выбрать районы.

Токен принят, пользователь может выбрать районы.

После авторизации пользователь выбирает районы, на которые хочет подписаться. Если выбранный район ещё неактивен, то выполняются два действия:

  1. На стороне WQTT создаётся новое устройство с именем соответствующего района.

  2. В базу данных добавляется запись, связывающая пользователя, район и идентификатор созданного устройства.

После выбора районов, пользователь нажимает на кнопку "Завершить добавление" и бот присылает дальнейшую инструкцию.


Шаги для завершения настройки

Шаги для завершения настройки

Пользователь совершает действия в соответствии с присланной инструкцией. В результате у него в УДЯ появляются устройства и сценарии (созданные вручную).

И тут мы подходим минусу (или багу) WQTT (или я не понимаю чего-то, что тоже возможно): устройства, созданные при помощи API, не синхронизируются с УДЯ. Т.е. если в WQTT включать\выключать "лампочку", то в УДЯ ничего не происходит с "лампочкой" (если в обратном порядке действовать, то все работает).

Решение простое. Необходимо на сайте WQTT открыть настройки устройства и нажать кнопку "Сохранить". После этого "Лампочка" WQTT синхронизируется с "Лампочкой" в УДЯ.

Собственно, на этом этапе взаимодействие пользователя с системой завершается.
Далее процесс полностью автоматизирован.

Вторая часть системы полностью автоматизирована.
Сервис "Мониторинг" реализован на Python с использованием библиотеки Telethon.
Telegram Bot реализован на Python с использованием библиотеки aiogram 3.x.


P.S. Самый важный момент системы это скорость реагирования на сообщения о РО. Чем быстрее придет оповещение тем лучше. Из-за этого появляются несколько нюансов при масштабирование системы:

  • На сайте WQTT нет информации о предельном количество HTTP запросов в ед. времени.

  • Периодичность считывания сообщений из каналов в Telegram. Аналогично п.1. Аккаунт могут отправить в бан :-(

P.P.S. Данный алгоритм можно использовать и для других целей, зависит от фантазии и необходимости.

Показать полностью 5
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества