Skip to content

das747/web-home

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Введение Целью проекта было создание и запуск в облаке веб-приложения для управления умным домом.

Интерфейсы управления, реализованные в приложении:

  1. Веб-интерфейс с возможностью подключения, контроля и изменения параметров умного дома.
  2. Навык для голосового помощника Алисы с возможностью управления умным домом.
  3. REST-API дублирующий возможности веб-интерфейса.

Структура умного дома

Дома

Сервис предусматривает подключение нескольких умных домов. Каждый дом связан с одним управляющим устройством и webhook-адрес на который будут отправляться POST-запросы об изменении состояния модулей. Дома полностью изолированы друг от друга.

Пользователи

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

Модули

Модули соответствуют конечным физическим выключателям (скорее всего bluetooth-реле) и имеют два состояния. Каждый модуль в доме имеет уникальный номер порта, который будет использоваться при подключении к управляющему устройству. При создании модуля пользователь указывает кто может его использовать и редактировать или делает модуль общедоступным.

Группы

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

Реализация

Веб-интерфейс

Для создания приложения применялся микрофреймворк Flask. Сайт работает на flask-обработчиках адресов, для генерации страниц используются шаблоны для jinja2, генератор форм flask_wtf и стили из Bootstrap. Структура умного дома реализована в SQL базе данных при помощи модуля sqlalchemy.

Навык для Алисы

Навык для голосового помощника Алисы создан согласно требованиям её API. Запросы на webhook навыка обрабатываются flask-приложением. Через навык можно войти в аккаунт и управлять своими устройствами и группами, а также узнавать их состояние.

  REST-API

Api создано при помощи модуля flask-restful и реализует архитектуру REST. Для аутентификации пользователей используется реализация метода HTTP Basic Authentication модуля flask_httpauth.

Веб-сервер

Сервер запущен на Ubuntu на виртуальной машине в Яндекс.Облаке. Используются HTTP-сервер nginx и WSGI-сервер gunicorn. Для установки соединения по HTTPS созданы и подписаны сертификаты ключей шифрования. Есть система автоматического развёртывания с использованием GitHub Webhook.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published