Пять репозиториев образуют единую экосистему разработки: от платформенного SDK до пользовательского приложения симуляции. Описания основаны на фактическом содержимом репозиториев.
Embedded SDK
C
CMake
CMSIS
STM32 LL
YAML
Назначение
Модульная инфраструктура для разработки встроенного ПО под микроконтроллеры. SDK предоставляет систему сборки на CMake, платформенный код, конфигурации устройств и плат, а также инструменты локальной и удалённой сборки.
Основные возможности
CMake-тулчейны: toolchain-arm-none-eabi.cmake (ARM Cortex-M, основной), toolchain-riscv.cmake и toolchain-esp32.cmake (экспериментальные).
Платформенный пакет STM32F103: CMSIS-заголовки, startup-код, linker-скрипт, драйверы STM32 LL (GPIO, USART, RCC, TIM и другие), конфигурация отладки OpenOCD/ST-Link.
YAML-конфигурации устройств и плат: defines вида LED_PORT, LED_PIN, UART_TX_PORT передаются в компилятор через CMake-хелперы board_defines.cmake и mcu_definitions.cmake.
Тулчейн; в Docker-образе есть gcc-riscv64-unknown-elf
ESP32
🟡 Экспериментально
Тулчейн-заглушка
Связь с другими проектами
Подключается в проекты прошивок как git submodule (в Device Blink). Внутри SDK подключается submodule build-system — это репозиторий Embedded Build System, клиент удалённой сборки.
Сборка
CMake с указанием тулчейна SDK; результат сборки — исполняемый файл прошивки проекта (.elf, .bin, .hex).
Embedded Build System
Python
Docker
WebSocket
CMake
JWT
Назначение
Инфраструктура удалённой контейнеризированной сборки firmware. Позволяет собирать проект на выделенном сервере в одинаковом Docker-окружении и возвращать артефакты разработчику — без необходимости разворачивать тулчейны локально.
Архитектура
remote_build.py (клиент) упаковывает исходники проекта, передаёт параметры сборки на WebSocket-сервер и скачивает результат;
WebSocket-сервер (порт 8080) принимает архив, проверяет JWT-токен (право build:access) и запускает сборку;
серверный скрипт build.sh готовит временный каталог и запускает Docker-контейнер embedded-sdk-builder;
скрипт build_in_container.sh внутри контейнера выбирает тулчейн по платформе, запускает CMake и формирует артефакты.
info.txt — метаданные сборки: пользователь, дата, версия ПО и платы, номер сборки, размер, CRC32 и SHA256;
compile_commands.json — команды компилятора для IDE/анализаторов.
Поддерживается host-сборка (HOST_BUILD) — исполняемый файл для запуска прошивки на хост-машине (используется в симуляции).
Связь с другими проектами
Репозиторий входит в Embedded SDK как submodule build-system. Серверная часть используется проектами прошивок (Device Blink) для удалённой сборки; клиентская — вызывается из процесса разработки.
Device Blink
C
STM32F103
Firmware
UART
v1_0_0
Назначение
Референсный firmware-проект на микроконтроллере STM32F103C8T6. Используется как тестовое устройство экосистемы и как эталонный пример интеграции с Embedded SDK: одна кодовая база, конфигурируемая под разные версии плат.
Основные возможности
Мигание светодиодом по неблокирующим таймерам (SysTick, интервалы 100/500 мс);
UART-эхо: приём байта по USART1 и передача обратно с модификацией;
CMakeLists.txt — подключение платформенных файлов и linker-скрипта из Embedded SDK;
.vscode/ — задачи сборки и конфигурация отладки;
embedded-sdk/ — submodule с SDK.
Сборка
CMake + Embedded SDK. Профили Debug, Release, Host (локально через build.py или удалённо через remote_build.py). Интеграция с VS Code: задачи Build, Debug Build, Release Build, Batch Build, Build Host Debug/Release. Артефакты: firmware.elf, .bin, .hex, compile_commands.json, info.txt, sections.txt.
Связь с другими проектами
Использует Embedded SDK как submodule. Кросс-собранная версия предназначается для прошивки реального устройства; host-версия (HOST_BUILD) — для запуска на сервере Simulation Coordinator в качестве виртуального узла. Механизм запуска host-сборки предусмотрен в проекте, а слой mock-HAL для её сборки находится в разработке в составе SDK.
Simulation Coordinator
Python 3.12
aiohttp
PostgreSQL
JWT
Назначение
Сервер симуляции для тестирования прошивок устройств умного дома. Запускает прошивки как виртуальные узлы, моделирует среду — радиоэфир, шины, питание — и предоставляет управление через пользовательское приложение.
Роль в архитектуре
Центральный компонент симуляции: принимает подключения виртуальных устройств, управляет процессами-узлами (host-сборки прошивок), моделирует физические среды и транслирует события в приложение и внешним UART-клиентам.
Сетевые интерфейсы
Порты координатора
Порт
Протокол
Кто подключается
9000
TCP
Узлы — виртуальные устройства (host-версии прошивок)
9001
WebSocket + HTTP
Simulation Application (команды и события, API прошивок)
9002
TCP
Внешние UART-клиенты (прокси к UART устройства)
Возможности симуляции
Мультисимуляции: создание, переключение, приватные и публичные, разграничение прав;
Управление узлами: запуск, остановка, заморозка (freeze/thaw), позиция, питание;
Радиоэфир: битрейт 250 кбит/с, мощность передачи, чувствительность, уровень шума, расчёт RSSI по дистанции, коллизии, radio-профили;
Шины: байтовые пакеты, объединение сигналов, коллизии;
Группы питания с цветами и управлением;
UART-мосты между узлами и внешними TCP-клиентами;
Таймерные события и поведения устройств (клапан, диммер);
Логи и события для UI, загрузка и удаление прошивок.
Технологии и аутентификация
Python 3.12, aiohttp, pydantic, SQLAlchemy, PostgreSQL 16, python-jose. JWT-токены (HS256), выпускаемые Authentik, проверяются локально по общему секрету. Состояние симуляций хранится в PostgreSQL; возможен запуск в Docker (docker-compose) или как systemd-сервис.
Связь с другими проектами
Запускает host-бинари прошивок проекта Device Blink как узлы. Обслуживает клиентов Simulation Application через WebSocket и HTTP API.
Simulation Application
Flutter
Dart
WebSocket
OAuth2
PWA
Назначение
Пользовательское приложение системы симуляции — панель управления симуляциями, устройствами и инфраструктурой симуляции в реальном времени.
Технология
Flutter (Dart SDK ^3.11.5), версия 1.0.0+1. Поддерживаемые платформы: Android, iOS, Web (PWA), Windows, Linux, macOS. Основные зависимости: web_socket_channel, provider, flutter_colorpicker, file_picker, http, shared_preferences, window_manager, flutter_appauth.
Пользовательский интерфейс
вход через OAuth2 (Authentik) и восстановление сессии;
список и создание симуляций, переключение активной;
управление узлами: запуск с выбором прошивки, остановка, позиция на схеме, питание;
монитор шин, радио-топология и параметры радио; UART-монитор; журнал логов;
По WebSocket (порт 9001) передаются команды: list_simulations, create_simulation, switch_simulation, launch_node, stop_node, set_power, set_radio_params, create_bus и другие. Через HTTP API выполняется загрузка и удаление прошивок. Аутентификация — OAuth2/OpenID Connect через Authentik, токены JWT.
Связь с другими проектами
Единственный клиент сервера Simulation Coordinator — подключается по WebSocket к порту 9001 и через HTTP API управления прошивками.
Важно
Сайт является информационной презентацией и не содержит работающую инфраструктуру. Все сведения о проектах взяты из репозиториев и их документации; некоторые описанные возможности находятся в стадии разработки (например, host-сборка прошивки с mock-HAL и модульные тесты).