Synapse
Telegram GitHub →

Прошивка

АПК Синапс v1.0. ПО. Спецификации на разработку

Последнее изменение: 12.12.2025, 10:37 МСК

1. Назначение документа

Спецификация для разработчиков прошивки контроллера АПК Синапс. Документ описывает аппаратную часть, архитектуру системы, логику работы контроллера, структуры данных, взаимодействие с DALI-устройствами и мобильным приложением.

2. Термины и определения

2.1. АПК — аппаратно-программный комплекс.

2.2. Контроллер — устройство на базе микроконтроллера GD32F103RBT6, работающее с устройствами DALI.

2.3. Устройство — DALI-устройство в линии: светильник, датчик, кнопочная панель.

2.4. Прошивка — firmware в контроллере.

2.5. Телефон — мобильное устройство, обеспечивающее пользовательский интерфейс АПК.

2.6. Приложение — интерфейсное мобильное приложение в телефоне.

2.7. DALI (Digital Addressable Lighting Interface) — цифровой протокол управления освещением, который позволяет интегрировать осветительные устройства в единую систему.

2.8. Локация — помещение или часть помещения с отдельно от других частей объекта (контроллера) организованной работой освещения. В АПК все локации одного уровня. Иерархия локаций не предусмотрена.

2.9. Действие (ACTION) — изменение состояния системы освещения. Действие — произвольный набор из команд (SUBACTION):

Действия навешиваются на нажатия кнопок, сработки датчиков присутствия, события в расписании.

2.10. Режим АВТО — изменение освещения в локации на основе сигналов от датчиков. Включается/выключается тумблером на странице локации в приложении.

3. Аппаратная часть

3.1. Микроконтроллер: GD32F103RBT6.

3.2. Интерфейсы:

3.3. Индикация: лесенка светодиодов + нижний светодиод.

3.4. Программная кнопка для сброса настроек.

4. Архитектура системы

flowchart LR MOB1(Телефон 1) MOB2(Телефон 2) CON(Контроллер) DALI{{DALI-линия}} LUM((Светильник)) SEN((Датчик)) BUT((Кнопка)) MOB1 <--Bluetooth--> CON MOB2 <--Bluetooth--> CON CON --- DALI DALI <---> LUM DALI <---> SEN DALI <---> BUT style MOB1 fill:#FA0,stroke:#A50 style MOB2 fill:#FA0,stroke:#A50 style CON fill:#FA0,stroke:#A50

4.1. Телефоны подключаются к контроллеру по Bluetooth.

4.2. С контроллером одновременно могут работать (быть подключены) несколько телефонов - до 4 шт.

4.3. К контроллеру подключается 1 линия DALI, устройствами в которой управляет АПК.

5. Контроллер

5.1. Константы (неизменяемые)

5.2. Переменные (меняются через приложение)

5.3. Индикация светодиодами

5.4. Программная кнопка

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

6.1. Данные в контроллере делятся на:

7. Локации

7.1. Устройства могут находиться в локациях или быть без локации (в корне контроллера).

7.2. При инициализации все найденные в линии DALI устройства помещаются в корень (без локации).

7.3. Создание локаций и распределение устройств по ним происходит по командам от приложения.

7.4. Количество локаций: до 16.

7.5. Все локации находятся на одном уровне, никакой многоуровневой иерархии не предусмотрено.

7.6. У контроллера есть общий флаг АВТО (главный выключатель автоматического режима). Если АВТО контроллера = выкл, сигналы от всех датчиков (присутствия и освещённости) игнорируются. Если АВТО контроллера = вкл, работают флаги АВТО отдельных локаций.

7.7. У каждой локации есть свой флаг АВТО. Если АВТО локации = выкл, сигналы от датчиков, действующие на устройства в данной локации, игнорируются (при условии, что АВТО контроллера = вкл).

7.8. Устройства без локации (в корне) работают в автоматическом режиме, если АВТО контроллера = вкл.

8. Светильники

8.1. Количество светильников ограничено емкостью линии DALI: 64 шт.

8.2. Поддерживаемые типы светильников:

8.3. Светильник может находиться в одной из локаций или быть без локации (в корне контроллера).

9. Световые сцены

9.1. Световые (цветовые) сцены в АПК соответствуют DALI-сценам и используют DALI-механизм сцен.

9.2. 5 сквозных сцен (DALI-сцены 0–4) распространяются на все светильники.

9.3. По умолчанию в сценах 0–4 светильники имеют:

9.4. Состояние светильников в сцены может сохраняться:

9.5. Команда на включение сцены может быть отдана приложением:

10. Группы светильников

10.1. Группа может быть привязана к локации или быть без локации (в корне контроллера). Группа без локации может содержать только светильники без локации. Группа с локацией может содержать только светильники из этой же локации.

10.2. Группы в АПК соответствуют DALI-группам и используют DALI-механизм групп.

10.3. Общее максимальное количество групп (включая группы в корне и во всех локациях) — 16.

10.4. Светильник может входить только в одну группу или быть вне групп (чтобы отдельные светильники не занимали DALI-группы, которых на всех не хватит).

10.5. Светильники, объединённые в группу, получают возможность группового управления.

10.6. У светильников в группе остаётся возможность индивидуального управления и настройки.

11. Кнопочные панели

11.1. Количество устройств управления ограничено емкостью линии DALI: 64 шт.

11.2. Кнопочные панели — основной инструмент пользователя для оперативного управления освещением.

11.3. На короткое нажатие кнопки может быть повешено одно или несколько действий (ACTIONS):

11.4. На долгое нажатие можно повесить только одно действие (ACTION). При нажатии и удержании вкл/выкл АВТО-режима производится сразу, яркость светильников плавно меняется в направлении целевой сцены.

11.5. Действия можно вешать и на короткое, и на длинное нажатия одновременно.

12. Датчики присутствия

12.1. На датчик навешиваются два действия (ACTIONS): на присутствие / на отсутствие.

12.2. Действие на отсутствие срабатывает, когда датчик регистрирует отсутствие присутствия.

12.3. Если есть желание деактивировать конкретный датчик присутствия — убираем у него действия.

12.4. Действие всех датчиков на отдельно взятую локацию может быть активировано/деактивировано:

12.5. Оперативное управление хотя бы одним светильником в локации временно переводит режим АВТО в этой локации в выключенное состояние. Возврат в режим Локация.Авто = ON: любой датчик присутствия данной локации регистрирует присутствие (и при этом сразу отрабатывает действие, повешенное на присутствие в этом датчике).

13. Датчики освещенности

13.1. К датчику может быть привязана одна и только одна группа светильников. Датчик и группа должны находиться в одной локации, либо оба должны быть без локации (в корне).

13.2. Группа светильников может быть привязана только к одному датчику.

13.3. Если есть желание деактивировать конкретный датчик освещённости — убираем у него привязку к группе.

13.4. Действие датчиков активируется/деактивируется:

13.5. Датчик по команде из приложения запоминает текущую освещённость как целевую для каждой из 5 сцен группы в момент сохранения каждой из сцен.

13.6. При привязке датчика освещенности к группе группа последовательно переводится в каждую из 5 сцен. В момент работы каждой сцены сохраняется её целевая освещённость (начальная установка).

13.7. Если при сохранении сцены (и, соответственно, задания целевой освещённости) светильник полностью выключен, он в подкрутке освещённости по датчику участвовать не будет.

13.8. Любое изменение яркости светильников в группе, отличное от включения одной из её 5 сцен, отключает подкрутку яркости в ней по датчику освещённости.

13.9. Включение у группы любым способом одной из её сцен переводит группу в режим поддержания целевой освещённости.

14. Действия (ACTION)

14.1. Действие (ACTION) — набор из команд (SUBACTIONS):

14.2. Навешиваются на нажатия кнопок, срабатывание датчиков присутствия, события расписания.

14.3. Действие может распространяться на любые локации и весь контроллер независимо от расположения инициирующего устройства.

15. Расписание

15.1. Расписание задается в виде набора событий (EVENTS), при возникновении каждого из которых выполняется действие (ACTION).

15.2. События могут быть ежедневными или назначаться на определённые дни недели.

15.3. Расписание одно для всего контроллера.

15.4. Расписание может быть активировано/деактивировано.

15.5. Необходимость действий (ACTIONS) по событиям расписания (EVENTS) проверяется контроллером раз в 1 минуту.

15.6. Если на одно время назначено и ежедневное событие и событие на день недели, сначала выполняется первое, затем второе.

15.7. На одно и то же время нельзя назначить два ежедневных событий и/или два события по дням недели.

15.8. Действие может производиться одномоментно (EVENTS.SMOOTH = F), когда параметры меняются шагово, и плавно (EVENTS.SMOOTH = T), когда параметры, меняемые у устройств, линейно изменяются от предыдущих значений к значениям, заданным в ACTIONS.

15.9. При плавном изменении параметров (SMOOTH = T) изменение производится раз в 1 минуту.

16. Автоматическая работа

16.1. Автоматическая работа по датчикам и расписанию при соответствующих флагах, выставленных в локациях.

16.2. Опрос текущего состояния устройств в периоды затишья.

16.3. При отправке устройствам команд на изменение состояния последующий опрос того, подействовали ли эти команды, не предполагается. Выстрелили сообразно стандартам DALI и забыли. Сказали светильнику включиться на 33, считаем, что он включился на 33.

17. Bluetooth-взаимодействие с приложением

17.1. С контроллером одновременно могут работать несколько телефонов.

17.2. Структура данных в контроллере синхронизируется с приложением через Bluetooth.

17.3. Рабочие данные передаются в командах между прошивкой и приложением.

17.4. Интерфейсные данные передаются бинарным блоком между прошивкой и приложением.

17.5. Протокол Bluetooth описан в отдельном документе: SynapsePDS_FW_Bluetooth.md.

18. ПНР

18.1. Инициализация линии DALI

18.1.1. Инициализация по команде от приложения линии DALI со сбросом настроек устройств к состоянию RESET.

18.1.2. При инициализации кроме DALI-настроек удаляются все локации (и создаётся одна, в которую все вновь найденные устройства складируются), устройства, группы, расписание.

18.1.3. Передача в приложение текущего статуса инициализации устройств для информирования пользователя о ходе процесса.

18.1.4. Перед инициализацией все светильники широковещательно выключаются (у кнопок выключаются светодиоды). После успешной выдачи устройству короткого адреса DALI: светильник включается (у кнопок включаются светодиоды).

18.2. Добавление новых устройств

18.2.1. Добавление новых устройств в линию без пересбора линии.

18.3. Замена устройств

18.3.1. Замена вышедших из строя устройств без пересбора линии:

19. Обновление прошивки

19.1. Возможность обновления прошивки с помощью приложения через Bluetooth.

20. Вопросы

20.1. Каким образом будет обновляться прошивка? (детали протокола обновления)

20.2. Должна ли температура света включаться в сцены (сейчас не включена)?

21. Идеи

22.1. Долгим нажатием на настенную кнопку сохранять сцену.

22.2. Должна ли прошивка работать с LLM?