Проекты

Пять репозиториев образуют единую экосистему разработки: от платформенного 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.
  • Инструменты: tools/build.py (локальная сборка), клиент удалённой сборки remote_build.py.
  • Документация в каталоге docs/: setup, архитектура, платформы, сборка, build system, инструменты, интеграция.

Поддерживаемые платформы

Статус платформ по документации SDK
ПлатформаСтатусПоддержка
STM32 F1 (F103)✅ ОсновнаяПолная: CMSIS, startup, linker, LL, конфигурация отладки
STM32 F4🟡 ПланируетсяЧастичная
RISC-V🟡 ЭкспериментальноТулчейн; в 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-окружении и возвращать артефакты разработчику — без необходимости разворачивать тулчейны локально.

Архитектура

  1. remote_build.py (клиент) упаковывает исходники проекта, передаёт параметры сборки на WebSocket-сервер и скачивает результат;
  2. WebSocket-сервер (порт 8080) принимает архив, проверяет JWT-токен (право build:access) и запускает сборку;
  3. серверный скрипт build.sh готовит временный каталог и запускает Docker-контейнер embedded-sdk-builder;
  4. скрипт build_in_container.sh внутри контейнера выбирает тулчейн по платформе, запускает CMake и формирует артефакты.

Toolchain и окружение

Docker-образ embedded-sdk-builder (Ubuntu 24.04) содержит: gcc-arm-none-eabi, gdb-multiarch, cmake, ninja, ccache, python3, clang, cppcheck, gcc-riscv64-unknown-elf, libcjson. Кэш компиляции сохраняется между сборками.

Создаваемые артефакты

  • .elf, .bin, .hex — образы прошивки;
  • sections.txt — распределение по секциям;
  • info.txt — метаданные сборки: пользователь, дата, версия ПО и платы, номер сборки, размер, CRC32 и SHA256;
  • compile_commands.json — команды компилятора для IDE/анализаторов.

Поддерживается host-сборка (HOST_BUILD) — исполняемый файл для запуска прошивки на хост-машине (используется в симуляции).

Связь с другими проектами

Репозиторий входит в Embedded SDK как submodule build-system. Серверная часть используется проектами прошивок (Device Blink) для удалённой сборки; клиентская — вызывается из процесса разработки.

Simulation Coordinator

  • Python 3.12
  • aiohttp
  • PostgreSQL
  • JWT

Назначение

Сервер симуляции для тестирования прошивок устройств умного дома. Запускает прошивки как виртуальные узлы, моделирует среду — радиоэфир, шины, питание — и предоставляет управление через пользовательское приложение.

Роль в архитектуре

Центральный компонент симуляции: принимает подключения виртуальных устройств, управляет процессами-узлами (host-сборки прошивок), моделирует физические среды и транслирует события в приложение и внешним UART-клиентам.

Сетевые интерфейсы

Порты координатора
ПортПротоколКто подключается
9000TCPУзлы — виртуальные устройства (host-версии прошивок)
9001WebSocket + HTTPSimulation Application (команды и события, API прошивок)
9002TCPВнешние 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-монитор; журнал логов;
  • группы питания (создание, цвет, управление);
  • симуляционные контролы, детали узла, админ-панель, профиль.

Взаимодействие с Coordinator

По 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 и модульные тесты).