Skip to content

Pigolitsyn/homecore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏠 HomeCore
Локальный хаб умного дома без облака — учебный проект по инженерии информационных систем

HomeCore

HomeCore — учебный проект по дисциплине «Инженерия информационных систем».

Цель репозитория — предоставить единый браузерный вход к результатам всех итераций: от выбора темы и анализа предметной области до требований, концептуальной архитектуры, модели данных, сценариев использования и демонстрационного прототипа.

HomeCore — программная платформа для управления устройствами умного дома, работающая полностью автономно в локальной сети. Все данные, автоматизации и сценарии хранятся и исполняются на устройстве пользователя; интернет-подключение не требуется ни для управления устройствами, ни для выполнения правил.


Быстрый просмотр демо

Преподавателю или проверяющему не требуется скачивать презентации, чтобы понять результат проекта. Ниже сразу приведены визуальные материалы: видео-обзор прототипа, состав экранных форм и ссылка на маршрут проверки.

Видео-обзор прототипа

Демо прототипа HomeCore

Анимированный обзор автоматически воспроизводится выше. Полную версию можно посмотреть в файле demo.mp4.

Экранные формы прототипа

Web-панель (SPA) собрана в одном окне браузера и состоит из трёх рабочих зон:

Зона интерфейса Что показывает
Карточки устройств Чайник Redmond (BLE) и умная лампа (MQTT): состояние, температура, команды управления
Список правил Правила автоматизации «если событие → то команда» с индикатором «⚡ сработало»
Журнал событий Лента событий с отметкой времени, источника и инициатора (команды, срабатывания правил, ошибки)

Маршрут проверки

  1. Посмотреть видео-обзор прототипа.
  2. Перейти к README прототипа с пошаговой демонстрацией сценариев.
  3. Просмотреть итерационную карту работ.
  4. Проверить связь прототипа с требованиями в сквозной трассировке.

Для локального запуска прототипа:

cd prototype
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn backend.main:app --host 0.0.0.0 --port 8000

После запуска приложение доступно по адресу http://localhost:8000, а Swagger API — по адресу http://localhost:8000/docs.


Содержание

  1. Быстрый просмотр демо
  2. Назначение репозитория
  3. Краткое описание проекта
  4. Учебный фокус проекта
  5. Итерационная карта работ
  6. Ключевые артефакты для проверки
  7. Бизнес-требования и цели
  8. Заинтересованные лица и потребности
  9. Пользовательские и системные требования
  10. Концептуальная архитектура
  11. Структура данных
  12. Базовые сценарии использования
  13. Демонстрация прототипа
  14. Структура репозитория
  15. Запуск прототипа
  16. Проверка работоспособности
  17. Ограничения текущего результата
  18. Итоговый статус

1. Назначение репозитория

Репозиторий предназначен для проверки результатов учебного проекта по инженерии информационных систем. Основной акцент сделан не на промышленной реализации, а на демонстрации понимания методологии разработки ИТ-продукта:

  • формирование проектной идеи;
  • анализ предметной области и конкурентов;
  • определение границ системы;
  • выявление заинтересованных лиц и их потребностей;
  • формирование бизнес-, пользовательских и системных требований;
  • описание состава MVP;
  • построение концептуальной архитектуры (C4);
  • описание модели данных;
  • трассировка требований к сценариям и прототипу;
  • демонстрация результата через браузер.

README выступает как основная навигационная страница проекта. Все вложенные документы доступны по ссылкам из соответствующих разделов.


2. Краткое описание проекта

HomeCore — локальный хаб умного дома, работающий полностью офлайн.

Система позволяет пользователю:

  • подключать и удалять устройства умного дома (BLE-чайник, MQTT-лампа, ESP32);
  • управлять устройствами и опрашивать их состояние из браузера;
  • создавать правила автоматизации вида «если событие → то команда»;
  • наблюдать журнал всех событий с отметкой времени и источника;
  • работать с системой через открытый REST/MQTT API;
  • сохранять все данные локально, без передачи в облако.

Проблема пользователя в том, что существующие системы умного дома (Home Assistant, Яндекс, Tuya) требуют постоянного облачного подключения: это нарушает приватность, создаёт единую точку отказа за пределами контроля пользователя и затрудняет интеграцию самодельных устройств. HomeCore решает эти проблемы, исполняя все сценарии локально.


3. Учебный фокус проекта

Проект рассматривается как учебный кейс по инженерии информационных систем. Поэтому документация организована вокруг вопросов, важных для курса:

  • зачем создаётся система;
  • какие проблемы пользователя она решает;
  • кто является заинтересованными лицами;
  • какие потребности необходимо учесть;
  • какие требования вытекают из потребностей;
  • какие сценарии подтверждают требования;
  • какие данные нужны системе;
  • как прототип демонстрирует концепцию решения.

Реализация прототипа добавлена как подтверждение жизнеспособности концепции, но не подменяет собой аналитическую и проектную документацию.


4. Итерационная карта работ

Итерация Основной фокус Результат Документ
0 Изучение устройства (ПЗ 1–3) Паспорт чайника, контекстная диаграмма (чёрный ящик), внутреннее устройство (белый ящик): физблоки и типы интерфейсов Устройство
1 Организация проекта и идея Выбрана тема (локальный хаб умного дома), создан репозиторий, сформулирована концепция Канон проекта
2 Анализ предметной области Выполнен конкурентный анализ, построены контекстная диаграмма и event storming, определены границы системы и заинтересованные лица Конкуренты
3 Формирование требований Описаны бизнес-, пользовательские и функциональные требования, атрибуты качества, состав MVP и спецификация REST API Функциональные требования
4 Концепция решения Описана логическая архитектура, C4-контейнеры (CNT-1..5), компоненты, интерфейсы и потоки данных Архитектура
5 Модель данных и сценарии Описаны семь сущностей (ENT-1..7), ER-диаграмма и ключевые сценарии использования (SC-1..4) Модель данных
6 Итоговая связность и прототип Построена сквозная трассировка требований, реализован рабочий прототип, записан демо-ролик Сквозная трассировка

Презентации по итерациям

Презентации по каждой итерации доступны в форматах HTML (открывается в браузере) и PDF (просмотр прямо в GitHub):

Итерация Тема HTML PDF
1 Организация проекта и идея iter-1.html iter-1.pdf
2 Анализ предметной области iter-2.html iter-2.pdf
3 Формирование требований iter-3.html iter-3.pdf
4 Концепция решения iter-4.html iter-4.pdf
5 Модель данных и сценарии iter-5.html iter-5.pdf
6 Итоговая связность и прототип iter-6-final.html iter-6-final.pdf

5. Ключевые артефакты для проверки

Раздел проверки Где смотреть Что показывает
Канон проекта docs/00-canon.md Единый источник истины: все ID, требования и сущности
Изучение устройства (ПЗ 1–3) docs/01-device.md Паспорт чайника, чёрный ящик (контекст, входы/выходы), белый ящик (физблоки C-1…C-11, интерфейсы I-1…I-10)
Бизнес-анализ Стейкхолдеры, Контекст, Конкуренты, Event Storming Заинтересованные лица, контекст системы, конкуренты, домен умного дома
Требования Бизнес, Функциональные, MVP, API Бизнес- и функциональные требования, состав MVP, спецификация REST API
Концептуальная архитектура docs/04-architecture.md Контекст, контейнеры C4, компоненты, интерфейсы, архитектурные решения
Модель данных и сценарии Модель данных, Сценарии Семь сущностей, ER-диаграмма, ключевые и ошибочные сценарии
Сквозная трассировка docs/06-traceability.md Связь целей, требований, сущностей, сценариев, компонентов и прототипа
Демонстрация прототипа prototype/README.md Запуск, пошаговая демонстрация сценариев SC-1..4, демо-ролик

6. Бизнес-требования и цели

Бизнес-цель проекта — показать, как локальная платформа умного дома может управлять устройствами без облака, сохраняя приватность пользователя и работоспособность при отключённом интернете.

Ключевые бизнес-цели (из канона):

ID Цель
BG-1 Выпустить MVP локального хаба, управляющего ≥ 2 типами устройств, за семестр
BG-2 Время отклика команды «нажал → устройство сработало» ≤ 500 мс в локальной сети
BG-3 Установка хаба пользователем-непрофессионалом ≤ 15 минут
BG-4 Автоматизации продолжают работать при полном отсутствии интернета (100 % сценариев MVP)

Подробная формализация бизнес-требований приведена в документе бизнес-требований.


7. Заинтересованные лица и потребности

Основные заинтересованные лица:

Заинтересованное лицо Интерес Потребность
ST-1 — Житель квартиры Управлять домом просто и приватно Подключать устройства, управлять ими из браузера и видеть журнал событий
ST-2 — Гик-энтузиаст Интегрировать самодельные устройства Иметь открытый REST/MQTT API без регистрации в облаке
ST-3 — Владелец жилья / арендодатель Безопасность и отсутствие утечек Гарантия, что поведенческие данные не покидают локальную сеть
ST-4 — Производитель устройств Простой протокол интеграции Подключать новый тип устройства через адаптер-плагин без изменения ядра

Полное описание заинтересованных лиц, персонажей и CJM находится в документе стейкхолдеров.


8. Пользовательские и системные требования

В проекте требования разделены на несколько уровней:

  • бизнес-требования — зачем нужен продукт и какую ценность он создаёт;
  • потребности заинтересованных лиц — что ожидают разные участники проекта;
  • пользовательские требования — какие возможности нужны пользователю;
  • функциональные требования — какие действия должна выполнять система;
  • атрибуты качества (NFR) — каким должно быть поведение системы с точки зрения отклика, приватности, надёжности и расширяемости.

Основные группы функциональных требований:

  • управление устройствами: добавление, удаление, опрос состояния (FR-1, FR-2, FR-3);
  • правила автоматизации: создание и исполнение (FR-4, FR-5);
  • веб-панель управления: список устройств, управление, журнал (FR-6);
  • журнал событий с отметкой времени, источника и инициатора (FR-7);
  • открытый документированный REST API (FR-8).

Ключевые атрибуты качества: отклик ≤ 500 мс (NFR-1), офлайн-независимость (NFR-2), расширяемость через адаптеры (NFR-3), privacy-first (NFR-4), лёгкий стек (NFR-5).

Требования описаны в документе функциональных требований. Связь требований с компонентами и сценариями раскрыта в сквозной трассировке.


9. Концептуальная архитектура

Для учебного MVP выбрана модульная структура из пяти контейнеров (C4). Она показывает разделение ответственности без избыточной сложности распределённой архитектуры. Хаб устанавливается на Raspberry Pi или аналогичный мини-ПК и работает без облачного взаимодействия.

┌─────────────────────────────────────────────────┐
│                HomeCore Hub                       │
│                                                   │
│  ┌──────────┐      ┌────────────────┐             │
│  │ CNT-1    │      │    CNT-2       │             │
│  │ Web-панель│◄───►│  API-ядро      │             │
│  │ (SPA)    │      │  (FastAPI)     │             │
│  └──────────┘      └───────┬────────┘             │
│                            │                      │
│              ┌─────────────┼─────────────┐        │
│              ▼             ▼             ▼        │
│         ┌─────────┐  ┌─────────┐  ┌─────────┐     │
│         │  CNT-3  │  │  CNT-4  │  │  CNT-5  │     │
│         │ Движок  │  │Адаптеры │  │ SQLite  │     │
│         │ правил  │  │BLE/MQTT │  │         │     │
│         └─────────┘  └─────────┘  └─────────┘     │
└─────────────────────────────────────────────────┘

Логические части решения:

  • CNT-1 — Web-панель (SPA): пользовательский интерфейс в браузере;
  • CNT-2 — API-ядро (FastAPI): маршрутизация команд, реестр устройств, REST API;
  • CNT-3 — Движок правил: подписка на события и исполнение автоматизаций;
  • CNT-4 — Адаптеры устройств: плагины BLE (ES-1) и MQTT (ES-2), симуляторы;
  • CNT-5 — Хранилище: SQLite для прототипа, in-memory для тестов.

Полное описание архитектуры, C4-представлений и архитектурных решений приведено в документе архитектуры.


10. Структура данных

Логическая модель данных строится вокруг семи сущностей (ENT-1..ENT-7):

  • ENT-1 — Device (устройство);
  • ENT-2 — Capability (возможность устройства);
  • ENT-3 — Rule (правило автоматизации);
  • ENT-4 — Trigger (триггер правила);
  • ENT-5 — Action (действие правила);
  • ENT-6 — EventLog (журнал событий);
  • ENT-7 — User (пользователь).

Ключевая связь MVP: устройство → событие → правило (триггер + действие) → команда → запись в журнале.

Подробная модель данных и ER-диаграмма описаны в документе модели данных.


11. Базовые сценарии использования

Ключевые сценарии продукта:

  1. SC-1 — пользователь включает чайник через web-панель и наблюдает рост температуры до 100 °C.
  2. SC-2 — правило «чайник вскипел → лампа мигает» срабатывает автоматически.
  3. SC-3 — устройство недоступно: система обрабатывает ошибку и фиксирует её в журнале.
  4. SC-4 — подключение нового типа устройства через адаптер-плагин без изменения ядра.

Полное описание сценариев, включая диаграммы последовательности и ошибочные ситуации, приведено в документе сценариев.


12. Демонстрация прототипа

Для просмотра результата подготовлены:

Прототип демонстрирует не промышленную систему, а учебное подтверждение ключевых требований: подключение устройства, управление, исполнение правила, обработку ошибки и расширяемость через адаптеры. Прототип работает in-memory, в одном процессе, без внешних зависимостей.


13. Структура репозитория

homecore/
├── docs/                              # аналитическая и проектная документация
│   ├── 00-canon.md                    # канон: единый источник истины (ID, требования, сущности)
│   ├── 01-device.md                   # устройство (чайник): паспорт, чёрный/белый ящик (ПЗ 1-3)
│   ├── 02-stakeholders.md             # стейкхолдеры: персонажи, потребности, CJM
│   ├── 02-context.md                  # контекстная диаграмма системы
│   ├── 02-competitors.md              # конкурентный анализ
│   ├── 02-event-storming.md           # event storming домена умного дома
│   ├── 03-business-requirements.md    # бизнес-требования и цели
│   ├── 03-functional-requirements.md  # функциональные требования и атрибуты качества
│   ├── 03-mvp.md                      # состав MVP
│   ├── 03-api.md                      # спецификация REST API
│   ├── 04-architecture.md             # логическая архитектура, C4
│   ├── 05-data-model.md               # модель данных, ER-диаграмма
│   ├── 05-scenarios.md                # ключевые сценарии использования
│   └── 06-traceability.md             # сквозная трассировка требований
├── presentations/                     # презентации по итерациям (HTML + PDF)
├── prototype/                         # демонстрационный прототип
│   ├── backend/                       # FastAPI-ядро: реестр, адаптеры, правила, события
│   ├── frontend/                      # SPA web-панель (index.html)
│   ├── demo/                          # демо-ролик (GIF + MP4) и скрипт записи
│   ├── requirements.txt               # зависимости прототипа
│   └── README.md                      # запуск и демонстрация сценариев
├── README.md                          # основной вход в проект
└── .gitignore                         # правила исключения служебных файлов

14. Запуск прототипа

Перейти в каталог прототипа и создать виртуальное окружение:

cd prototype
python3 -m venv .venv
source .venv/bin/activate

Установить зависимости:

pip install -r requirements.txt

Запустить приложение:

uvicorn backend.main:app --host 0.0.0.0 --port 8000

После запуска доступны:

http://localhost:8000        # web-панель (SPA)
http://localhost:8000/docs   # Swagger API

Основные эндпоинты REST API:

  • GET /api/v1/devices — список устройств;
  • POST /api/v1/devices/{id}/commands — отправка команды устройству;
  • GET /api/v1/rules — список правил автоматизации;
  • GET /api/v1/events?limit=20 — журнал последних событий.

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

Прототип проверяется через сценарии SC-1..SC-4 — вручную в web-панели или через REST API. Пошаговые команды приведены в README прототипа.

Базовая проверка показывает:

  • включение чайника и рост температуры до состояния boiled (SC-1);
  • автоматическое срабатывание правила «чайник вскипел → лампа мигает» (SC-2);
  • обработку недоступности устройства с ответом 409 device_unreachable и записью ошибки в журнал (SC-3);
  • подключение нового адаптера без перезапуска ядра (SC-4).

Пример проверки SC-1 через API:

curl -s http://localhost:8000/api/v1/devices | python3 -m json.tool
curl -s -X POST http://localhost:8000/api/v1/devices/KETTLE_ID/commands \
  -H "Content-Type: application/json" \
  -d '{"command": "turn_on"}' | python3 -m json.tool

16. Ограничения текущего результата

Текущий результат является учебным MVP и имеет ограничения:

  • хранилище прототипа реализовано in-memory; SQLite (CNT-5) описан архитектурно, но в прототипе упрощён;
  • реальные BLE- и MQTT-устройства заменены симуляторами (KettleSimulator, LampSimulator);
  • облачная синхронизация, мобильное приложение и голосовое управление намеренно вынесены за пределы MVP;
  • промышленное развёртывание и детальное проектирование безопасности относятся к дальнейшему развитию;
  • веб-панель реализована в базовом виде, достаточном для демонстрации ключевых сценариев.

17. Итоговый статус

Проект приведён к формату, удобному для браузерного ознакомления:

  • README содержит маршрут проверки проекта;
  • документация по итерациям оформлена как последовательная учебная документация;
  • цели, требования, сущности, сценарии и компоненты связаны сквозной трассировкой;
  • подготовлены демо-ролик и описание экранных форм прототипа;
  • прототип можно запустить локально и проверить основные пользовательские сценарии.

Главный результат проекта — не только наличие работающего прототипа, но и демонстрация понимания полного учебного цикла: предметная область → потребности → требования → концепция решения → данные → сценарии → прототип.


HomeCore — учебный проект. Все права на используемые торговые марки принадлежат их владельцам.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors