Synapse
Telegram GitHub →

Приложение. База данных

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

Последнее изменение: 22.12.2025, 12:24 МСК

erDiagram LOCATIONS ||--o| LUMINAIRES : "LOCATION_ID nullable" LOCATIONS ||--o| GROUPS : "LOCATION_ID nullable" LOCATIONS ||--o| PRES_SENSORS : "LOCATION_ID nullable" LOCATIONS ||--o| BRIGHT_SENSORS : "LOCATION_ID nullable" LOCATIONS ||--o| BUTTON_PANELS : "LOCATION_ID nullable" GROUPS ||--o{ LUMINAIRES : "GROUP_ID" GROUPS ||--o{ BRIGHT_SENSORS : "GROUP_ID" LUMINAIRES ||--o{ SCENE_LUMINAIRES : "LUMINAIRE_ID" BUTTON_PANELS ||--o{ BUTTONS : "BUTTON_PANEL_ID" BUTTONS ||--o{ ACTIONS : "BUTTON_SHORT_ID" BUTTONS ||--o{ ACTIONS : "BUTTON_LONG_ID" ACTIONS ||--o{ PRES_SENSORS : "ACTION_OCCUPANCY_ID" ACTIONS ||--o{ PRES_SENSORS : "ACTION_VACANCY_ID" ACTIONS ||--o{ SUBACTIONS : "ACTION_ID" CONTROLLERS { INTEGER ID PK INTEGER SCALE TEXT NAME TEXT PASSWORD TEXT IS_SCHEDULE TEXT IS_AUTO INTEGER ICO_NUM TEXT STATUS INTEGER SCENE_NUM INTEGER TIMESTAMP } LOCATIONS { INTEGER ID PK TEXT NAME INTEGER ICO_NUM INTEGER SCALE INTEGER POS_X INTEGER POS_Y TEXT EXIST TEXT IS_AUTO INTEGER SCENE_NUM } GROUPS { INTEGER ID PK TEXT NAME TEXT EXIST INTEGER LOCATION_ID FK INTEGER DALI_NUM INTEGER SCENE_NUM } LUMINAIRES { INTEGER ID PK TEXT NAME INTEGER ICO_NUM INTEGER POS_X INTEGER POS_Y TEXT EXIST INTEGER DALI_ADDR INTEGER LOCATION_ID FK INTEGER GROUP_ID FK INTEGER VAL_BRIGHT INTEGER VAL_TW INTEGER VAL_R INTEGER VAL_G INTEGER VAL_B INTEGER VAL_W INTEGER SCENE_NUM INTEGER MIN_LEVEL INTEGER MAX_LEVEL INTEGER FADE_TIME TEXT STATUS } SCENE_LUMINAIRES { INTEGER ID PK INTEGER SCENE_NUM INTEGER LUMINAIRE_ID FK INTEGER VAL_BRIGHT INTEGER VAL_TW INTEGER VAL_R INTEGER VAL_G INTEGER VAL_B INTEGER VAL_W } PRES_SENSORS { INTEGER ID PK TEXT NAME TEXT EXIST INTEGER DALI_ADDR INTEGER DALI_INST INTEGER LOCATION_ID FK INTEGER ACTION_OCCUPANCY_ID FK INTEGER ACTION_VACANCY_ID FK INTEGER HOLD_TIME TEXT STATUS } BRIGHT_SENSORS { INTEGER ID PK TEXT NAME TEXT EXIST INTEGER DALI_ADDR INTEGER DALI_INST INTEGER LOCATION_ID FK INTEGER GROUP_ID FK INTEGER SCENE_BRIGHTNESS_0 INTEGER SCENE_BRIGHTNESS_1 INTEGER SCENE_BRIGHTNESS_2 INTEGER SCENE_BRIGHTNESS_3 INTEGER SCENE_BRIGHTNESS_4 TEXT STATUS } BUTTON_PANELS { INTEGER ID PK TEXT NAME TEXT EXIST INTEGER DALI_ADDR INTEGER LOCATION_ID FK TEXT STATUS } BUTTONS { INTEGER ID PK TEXT NAME INTEGER BUTTON_PANEL_ID FK INTEGER DALI_INST } ACTIONS { INTEGER ID PK INTEGER BUTTON_SHORT_ID FK INTEGER BUTTON_LONG_ID FK INTEGER POS } SUBACTIONS { INTEGER ID PK INTEGER ACTION_ID FK INTEGER OBJECT_TYPE INTEGER OBJECT_NUM INTEGER VALUE } EVENTS { INTEGER ID PK TEXT EXIST TEXT DAYS TEXT TIME TEXT SMOOTH INTEGER ACTION_ID FK }

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

Описать структуру базы данных (USM, Unit System Model) мобильного приложения.

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

2.1. Рабочие данные — необходимые для организации работы освещения и в прошивке, и в приложении. В приложении находятся в таблицах SQLite, в прошивке в виде массивов структур C.

2.2. Интерфейсные данные — используемые только приложением для организации пользовательского интерфейса. Примеры: названия светильников, номера их иконок. В приложении находятся в таблицах SQLite, в прошивке в виде единого блока где-то в постоянной памяти.

3. Основные положения

3.1. База данных в приложении представлена в виде схемы в SQLite.

3.2. Задача: иметь в ней копию базы из прошивки контроллера, расширенную интерфейсными данными. В прошивке интерфейсные данные лежат в отдельной области. Здесь они должны быть разложены по дополнительным полям в таблицах.

3.3. В отличие от контроллера здесь полноценная таблица с контроллерами, т.к. телефон может с несколькими работать.

3.4. В целях подстроиться максимально под структуру БД контроллера таблицы здесь (кроме CONTROLLERS) имеют на постоянке столько записей, сколько элементов имеют соответствующие массивы в прошивке: в прошивке в массиве 64 элемента под светильники и тут 64 записи. Записи эти в таблицах не создаются и не удаляются, а просто заполняются данными из соответствующих массивов прошивки.

3.5. Значения в полях ID этой базы (кроме CONTROLLERS) соответствуют индексам соответствующих элементов в соответствующих массивах БД прошивки.

4. Таблицы

Рабочие данные помечены в таблицах ниже жирным.
Формат поля в таблицах: ИМЯ_ПОЛЯ (ТИП_ДАННЫХ / НАЧАЛЬНОЕ_ЗНАЧЕНИЕ).

4.1. CONTROLLERS

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

4.2. LOCATIONS

Локации.

4.3. GROUPS

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

4.4. LUMINAIRES

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

4.5. SCENE_LUMINAIRES

Параметры светильников в сценах. При инициализации началньго значения SCENE_NUM перебирается от 0 до 4 и для каждого номера сцены создаются 64 записи с LUMINAIRE_ID = 0..63. В VAL_BRIGHT и VAL_W в зависимости от сцены записываются:

4.6. PRES_SENSORS

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

4.7. BRIGHT_SENSORS

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

4.8. BUTTON_PANELS

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

4.9. BUTTONS

Кнопки.

4.10. ACTIONS

Действия с устройствами.

4.11. SUBACTIONS

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

4.12. EVENTS

События расписания.

5. Вопросы

5.1. Рабочие данные таки храним в Си или переносим в одну область с интерфейсными?

5.2. Как рабочие и интерфейсные данные будут попадать во флэш-память?

5.3. Не будет ли заморочным в смысле размера кода работать с бинарным блоком рабочих данных как с базой?

5.4. Как храним в БД значения для димм., РГБ и ТВ?

6. Идеи