УМНЫЙ ДОМ Приложение для управления устройствами умного дома Платформа: ОС Аврора
- ОПИСАНИЕ ПРОЕКТА
Приложение "Умный дом" предназначено для управления устройствами в жилых помещениях: розетками, лампочками, окнами и датчиками температуры. Приложение позволяет:
- Отображать текущее состояние всех устройств в выбранной комнате
- Включать и выключать розетки, лампочки и окна одним нажатием
- Создавать сценарии автоматизации по принципу "ЕСЛИ - ТО"
- Сохранять историю показаний температуры
- Строить графики изменения температуры для каждого датчика
Приложение работает на операционной системе Аврора в паре с Python-скриптом, который эмулирует работу реальных устройств.
- ЛОГИКА РАБОТЫ ПРИЛОЖЕНИЯ
2.1. Основной принцип
Приложение построено по клиент-серверной архитектуре с HTTP-взаимодействием. Клиент (QML) работает в эмуляторе Авроры. Сервер (Python-скрипт) работает на хост-системе Windows. Обмен данными осуществляется через HTTP-запросы.
2.2. Три типа HTTP-запросов
Запрос 1: POST /data
- QML отправляет структуру комнат и устройств
- Выполняется при загрузке приложения, создании комнаты, добавлении или удалении устройства
- Python обновляет свой внутренний кэш устройств
Запрос 2: POST /command
- QML отправляет команду управления устройством
- Выполняется при нажатии на розетку, лампочку или окно
- Python применяет команду немедленно и возвращает ответ
Запрос 3: GET /status
- QML запрашивает актуальное состояние всех устройств
- Выполняется каждые 3 секунды по таймеру
- Python возвращает JSON со всеми датчиками, розетками, лампами и окнами
2.3. Синхронизация данных
QML (каждые 3 секунды):
- Отправляет GET /status (получение статуса от Python)
- Обновляет интерфейс (температура, состояние устройств)
- Сохраняет изменения в локальный JSON-файл
- Обновляет историю температуры для графиков
Python (в отдельном потоке):
- Обрабатывает входящие HTTP-запросы
- Применяет команды из POST /command немедленно
- Раз в 30 секунд эмулирует изменение температуры
- Возвращает актуальный статус на GET /status
2.4. Защита от эффекта "мигания"
После отправки команды QML запоминает время и в течение 1,5 секунд не обновляет состояния розеток, ламп и окон из GET /status. Температура при этом обновляется всегда.
- ЗАПУСК ПРОЕКТА
3.1. Запуск Python-скрипта (на хост-системе Windows)
Требования: Python 3.10 или новее (дополнительные библиотеки не требуются)
Запуск:
cd C:\Users\pupsik1 python smart_home.py
При успешном запуске появится сообщение: "[READY] Эмулятор запущен!" и информация о доступных эндпоинтах:
- GET /status
- POST /data
- POST /command
3.2. Настройка IP-адреса в QML
В файле MainPage.qml в функции httpRequest() укажите IP-адрес компьютера, на котором запущен Python-скрипт:
var url = "http://192.168.0.134:8080" + path
Вместо 192.168.0.134 подставьте реальный IP-адрес вашей хост-системы. Узнать его можно командой ipconfig (в Windows).
3.3. Запуск QML-приложения (в эмуляторе Авроры)
Собрать и запустить приложение через Aurora SDK (Qt Creator):
- Открыть проект ru.template.alisa_app.pro
- Выбрать целевой эмулятор AuroraOS_5_2_0_180_x86_64
- Нажать "Run" (Ctrl+R)
3.4. Проверка работоспособности
При успешном взаимодействии:
- В консоли Python появляются сообщения о командах и обновлении температуры
- В QML-приложении меняются показания температуры
- При нажатии на розетку/лампу/окно меняется её состояние без "мигания"
- ОСНОВНЫЕ ФУНКЦИИ ПРИЛОЖЕНИЯ
4.1. Управление устройствами
- Нажмите на карточку розетки, лампочки или окна
- Устройство меняет состояние (вкл/выкл, открыто/закрыто)
- Команда отправляется на Python-сервер через POST /command
4.2. Создание сценария
- Перейдите на вкладку "Сценарии" → нажмите "Создать сценарий"
- Введите название
- Выберите тип условия (время или устройство)
- Настройте параметры условия
- Выберите устройство и действие
- Нажмите "Сохранить сценарий"
4.3. Просмотр графиков
- Перейдите на вкладку "Графики"
- Для каждого датчика отображается график изменения температуры
- График обновляется автоматически при получении новых данных
4.4. История сохранений
- Перейдите на вкладку "Данные"
- Отображается лог последних 6 сохранений
- Каждая запись содержит время и значения всех датчиков
- Нажмите на запись, чтобы открыть полную информацию
- ОСОБЕННОСТИ РЕАЛИЗАЦИИ
5.1. Хранение данных
- Локальное хранение: JSON-файл smart_home_data.json
- Синхронизация с сервером: HTTP-запросы (без файлового обмена)
5.2. Эмуляция температуры
- Python меняет температуру случайным образом ±0,8°C каждые 30 секунд
- Температура ограничена диапазоном от 16°C до 30°C
5.3. История и графики
- История температуры хранится без ограничения размера
- Графики отрисовываются с помощью элемента Canvas
- При каждом обновлении истории графики перерисовываются
5.4. Безопасность сценариев
- Временные сценарии срабатывают не чаще 1 раза в минуту
- Предотвращает многократное выполнение одного сценария
- ИСПОЛЬЗОВАНИЕ НЕЙРОСЕТЕЙ ПРИ РАЗРАБОТКЕ
При разработке данного проекта использовались нейросетевые модели:
- DeepSeek
- ChatGPT
- Ходорова Алиса, Усенко Олеся Курсовая работа. Разработка приложения "Умный дом" для платформы Аврора.