automation-remote-controller
Выпускной проект для курса GO-ADV Яндекс Практикума
Техническое задание
Приложение для управления хабом умного дома через Telegram
Сервер:
- регистрация и аутентификация пользователя по логину/паролю
- генерация сертификата для клиентского приложения
- хранение настроек пользователя, доступных пользователю команд и принадлежащих пользователю объектов с клиентскими приложениями
- получение команд через Telegram Bot Api от зарегистрированных на сервере пользователей
- перенаправление команд на клиентское приложение
- отправка пользователю оповещений через Telegram Bot Api, поступивших от клиентского приложения
Клиент:
- инициирует соединение с сервером
- аутентификация на сервере с помощью заранее полученного сертификата
- передача и прием сообщений на сервер используя двунаправленный стриминг gRPC
- конвертация сообщений от сервера в протокол управления объекта автоматизации (ModBus, MQTT)
Структурная схема приложения

Схема взаимодействия с системой
- Пользователь регистрируется на сервере, указывает свое имя в Telegram, получает сертификат для клиентского приложения
- Устанавливает на хаб умного дома клиентское приложение и добавляет в конфигурации сертификат
У пользователя может быть несколько объектов автоматизации, для каждого выпускается уникальный сертификат
- Настраивает связь клиентского приложения и хаба умного дома (реализовано в виде Proof of Concept)
- Взаимодействует с хабом умного дома через бота Telegram
Сборка приложения
make migrate # Запуск миграции базы данных
make build # Сборка бинарных файлов в ./bin
make docker-build # Сборка контейнеров
docker-compose up # Запуск контейнеров