Введение и Анализ Предметной Области
Дипломная работа посвящена проектированию и разработке автоматизированной информационной системы управления умным домом «IndigoSmart». Концепция «умный дом» (Smart Home) подразумевает жилое помещение, оснащённое автоматизированными системами управления освещением, климатом, безопасностью и бытовой техникой. Массовое распространение таких систем за последние 10-15 лет стало возможным благодаря удешевлению микроэлектроники и развитию беспроводных протоколов, а также концепции Интернета вещей (IoT). Мировой рынок умных домов оценивается в десятки миллиардов долларов, а Россия входит в число быстрорастущих рынков.
Типовая система умного дома включает датчики, исполнительные устройства, центральный хаб и программное обеспечение. Для обмена данными используются протоколы MQTT, CoAP, HTTP, WebSocket. Однако, несмотря на динамичное развитие, отрасль сталкивается с проблемами: производители часто используют закрытые протоколы и проприетарные облачные сервисы, что приводит к фрагментации экосистемы. Коммерческие решения слабо приспособлены к самостоятельной аналитике и не предоставляют инструментов для глубокого анализа накопленных данных. Это формирует спрос на открытые программные платформы, объединяющие разнородные устройства в единую среду.
Актуальность темы обусловлена ростом сегмента бытового IoT, увеличением числа устройств и возрастающими требованиями пользователей к аналитике. Разработка собственной системы позволяет преодолеть ограничения коммерческих решений, обеспечив централизованное хранение данных, единый интерфейс управления и инструменты ретроспективного анализа. Целью работы является проектирование и разработка системы, обеспечивающей централизованный сбор показаний датчиков, мониторинг состояний, ведение истории событий и предоставление аналитических отчётов через современный веб-интерфейс.
Для достижения цели были поставлены следующие задачи: анализ предметной области, формулирование требований, выбор технологий, проектирование архитектуры и базы данных, разработка программного интерфейса (REST API) и веб-приложения, а также функциональное тестирование. Объект исследования — процессы мониторинга и управления оборудованием умного дома; предмет — методы и средства проектирования информационных систем для IoT-устройств.
Анализ типовых ситуаций в жилом помещении выявил ряд ключевых потребностей: непрерывный сбор и долговременное хранение показаний датчиков среды (температура, влажность); обзорное представление текущих значений всех показателей; средства автоматического реагирования на критические отклонения; дистанционное управление исполнительными устройствами; обзорное представление состояния всего помещения; автоматизация повторяющихся действий по временному графику или показаниям датчиков; объединение действий в именованные сценарии; синхронизированное обновление интерфейса для всех пользователей в реальном времени; журналирование совершаемых действий; разграничение пассивных датчиков и активных исполнительных устройств; аналитика накопленных данных (графики, сводные показатели); единый программный интерфейс для внешних клиентов.
Анализ Существующих Решений и Формулирование Требований
На рынке представлено множество платформ умного дома. Apple HomeKit предлагает высокий уровень безопасности, но ограничен совместимостью. Google Home имеет развитую экосистему, но требует учётной записи Google и передаёт данные в облако. Samsung SmartThings поддерживает широкий спектр протоколов, но требует фирменного хаба и имеет ограниченную аналитику. Яндекс Умный дом удобен для российского пользователя, но страдает от фрагментации поддержки сторонних устройств. Home Assistant — открытая и гибкая платформа, но сложна в настройке.
Анализ показывает, что коммерческие решения сосредоточены на удобстве, но ограничены закрытостью и слабой аналитикой. Открытые решения гибки, но требуют высокой квалификации. Это создаёт нишу для веб-ориентированной системы, сочетающей доступность интерфейса и возможности аналитической работы.
На основе анализа были сформулированы функциональные требования (ФТ):
- ФТ-1 — ФТ-3: Организация устройств по расположению, различение категорий (датчики/исполнительные), учёт всего оборудования.
- ФТ-4, ФТ-5: Сохранение истории изменений состояний с инициатором и временем, непрерывный сбор и хранение показаний датчиков.
- ФТ-6, ФТ-7: Обзорное представление текущего состояния, дистанционное управление исполнительными устройствами.
- ФТ-8: Предоставление аналитических представлений накопленных данных.
- ФТ-9: Обновление интерфейса в реальном времени (без перезагрузки).
- ФТ-10: Предоставление программного интерфейса для внешних клиентов.
- ФТ-11: Объединение действий в именованные сценарии.
- ФТ-12, ФТ-13: Автоматизация по показаниям датчиков и по временному графику.
Нефункциональные требования включают: производительность (время отклика <200 мс), надёжность (целостность данных), масштабируемость (возможность горизонтального масштабирования), переносимость (кроссплатформенность) и безопасность (шифрование данных, безопасное хранение секретов).
Выбор Технологий и Архитектуры
Для реализации системы выбрана клиент-серверная архитектура с разделением на самостоятельные клиентскую и серверную части, взаимодействующие через REST API. Этот подход обеспечивает возможность независимой разработки, повторное использование API и обновление данных в реальном времени, что соответствует требованиям ФТ-9 и ФТ-10. Микросервисная архитектура отвергнута как избыточная для проекта такого масштаба.
В качестве основного технологического стека выбраны:
- Язык программирования и серверный фреймворк: Python 3.12 с FastAPI. FastAPI выбран за высокую производительность, асинхронность, автоматическую валидацию данных (Pydantic) и генерацию интерактивной документации API. Это оптимально для задач сбора данных в реальном времени и аналитики.
- Система управления базами данных: MySQL 9. Выбрана за простоту установки и администрирования, широкое распространение и достаточную производительность для данного проекта. PostgreSQL отвергнута как избыточная, SQLite — из-за ограничений на параллельную запись.
- Клиентская библиотека: React 19. Выбран за широкую распространённость на рынке труда, компонентную модель и обширную экосистему готовых библиотек (Tailwind CSS для стилизации, ApexCharts для графиков, React Router для маршрутизации).
- Среда разработки: Visual Studio Code. Выбрана как бесплатный, кроссплатформенный редактор с поддержкой всех языков стека и обширной экосистемой расширений.
- Система контроля версий: Git. Стандарт индустрии.
Итоговый стек: Python (FastAPI, SQLAlchemy), MySQL, React, Tailwind CSS, ApexCharts, Git.
Разработка Системы: Архитектура, База Данных, Интерфейс
Система «IndigoSmart» построена на классической трёхуровневой архитектуре: уровень представления (React), уровень бизнес-логики (FastAPI), уровень хранения данных (MySQL).
Архитектура: Серверная часть (smart-app) реализует REST API, маршрутизацию, валидацию данных и бизнес-логику. Клиентская часть (smart-board) — одностраничное приложение на React, отвечающее за отрисовку интерфейса и взаимодействие с API. Обмен данными происходит через REST API и WebSocket для обновлений в реальном времени.
База данных: Спроектирована реляционная модель с шестью основными таблицами: rooms (комнаты), device_types (типы устройств), devices (устройства), device_states (журнал состояний), sensor_readings (показания датчиков), users (пользователи). Использованы внешние ключи с правилами ON DELETE CASCADE и ON DELETE SET NULL для обеспечения целостности данных. Дополнительно реализованы таблицы для сценариев, правил автоматизации, расписаний, аудита, прогнозирования и симулятора данных.
Программный интерфейс: Реализован на FastAPI, включает маршрутизаторы для дашборда, устройств, датчиков и аналитики. Используется SQLAlchemy 2.0 для ORM и Pydantic для валидации данных. Документация API генерируется автоматически (Swagger UI).
Веб-приложение: Одностраничное приложение на React 19 с использованием Tailwind CSS для стилизации, React Router для навигации и ApexCharts для построения графиков. Основные страницы: Дашборд (с KPI и графиками), Управление устройствами (с возможностью переключения состояний), Аналитика (с графиками температуры, движения, активности).
Подсистемы:
- Сценарии: Объединение действий в именованные группы для запуска одним кликом.
- Автоматизация по правилам: Выполнение действий на основе показаний датчиков с условиями, временными окнами и cooldown.
- Расписания: Выполнение действий в заданное время и дни недели.
- Прочие подсистемы: Аутентификация (JWT), обмен в реальном времени (WebSocket), симулятор данных, аналитика энергопотребления, прогнозирование (линейная регрессия), аудит (триггеры БД), экспорт данных (CSV).
Развёртывание: Автоматизировано с помощью GitHub Actions, использует Nginx в качестве обратного прокси и systemd для управления службами.
Тестирование: Проведено функциональное тестирование серверных эндпоинтов, интеграционное тестирование клиент-серверного взаимодействия и ручное тестирование пользовательского интерфейса, включая проверку фоновых подсистем и адаптивности.
В заключение, разработанная система «IndigoSmart» представляет собой комплексное решение для управления умным домом, отвечающее современным требованиям к функциональности, аналитике и удобству использования. Система готова к развёртыванию и может служить основой для дальнейшего развития.