УМНЫЙ ДОМ Приложение для управления устройствами умного дома Платформа: ОС Аврора

  1. ОПИСАНИЕ ПРОЕКТА

Приложение "Умный дом" предназначено для управления устройствами в жилых помещениях: розетками, лампочками, окнами и датчиками температуры. Приложение позволяет:

  • Отображать текущее состояние всех устройств в выбранной комнате
  • Включать и выключать розетки, лампочки и окна одним нажатием
  • Создавать сценарии автоматизации по принципу "ЕСЛИ - ТО"
  • Сохранять историю показаний температуры
  • Строить графики изменения температуры для каждого датчика

Приложение работает на операционной системе Аврора в паре с Python-скриптом, который эмулирует работу реальных устройств.

  1. ЛОГИКА РАБОТЫ ПРИЛОЖЕНИЯ

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 секунды):

  1. Отправляет GET /status (получение статуса от Python)
  2. Обновляет интерфейс (температура, состояние устройств)
  3. Сохраняет изменения в локальный JSON-файл
  4. Обновляет историю температуры для графиков

Python (в отдельном потоке):

  1. Обрабатывает входящие HTTP-запросы
  2. Применяет команды из POST /command немедленно
  3. Раз в 30 секунд эмулирует изменение температуры
  4. Возвращает актуальный статус на GET /status

2.4. Защита от эффекта "мигания"

После отправки команды QML запоминает время и в течение 1,5 секунд не обновляет состояния розеток, ламп и окон из GET /status. Температура при этом обновляется всегда.

  1. ЗАПУСК ПРОЕКТА

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):

  1. Открыть проект ru.template.alisa_app.pro
  2. Выбрать целевой эмулятор AuroraOS_5_2_0_180_x86_64
  3. Нажать "Run" (Ctrl+R)

3.4. Проверка работоспособности

При успешном взаимодействии:

  • В консоли Python появляются сообщения о командах и обновлении температуры
  • В QML-приложении меняются показания температуры
  • При нажатии на розетку/лампу/окно меняется её состояние без "мигания"
  1. ОСНОВНЫЕ ФУНКЦИИ ПРИЛОЖЕНИЯ

4.1. Управление устройствами

  • Нажмите на карточку розетки, лампочки или окна
  • Устройство меняет состояние (вкл/выкл, открыто/закрыто)
  • Команда отправляется на Python-сервер через POST /command

4.2. Создание сценария

  • Перейдите на вкладку "Сценарии" → нажмите "Создать сценарий"
  • Введите название
  • Выберите тип условия (время или устройство)
  • Настройте параметры условия
  • Выберите устройство и действие
  • Нажмите "Сохранить сценарий"

4.3. Просмотр графиков

  • Перейдите на вкладку "Графики"
  • Для каждого датчика отображается график изменения температуры
  • График обновляется автоматически при получении новых данных

4.4. История сохранений

  • Перейдите на вкладку "Данные"
  • Отображается лог последних 6 сохранений
  • Каждая запись содержит время и значения всех датчиков
  • Нажмите на запись, чтобы открыть полную информацию
  1. ОСОБЕННОСТИ РЕАЛИЗАЦИИ

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 раза в минуту
  • Предотвращает многократное выполнение одного сценария
  1. ИСПОЛЬЗОВАНИЕ НЕЙРОСЕТЕЙ ПРИ РАЗРАБОТКЕ

При разработке данного проекта использовались нейросетевые модели:

  • DeepSeek
  • ChatGPT
  1. Ходорова Алиса, Усенко Олеся Курсовая работа. Разработка приложения "Умный дом" для платформы Аврора.