📊 Модель данных
Модель данных
Организация хранения и передачи данных
Этот раздел описывает общие принципы интеграции с устройствами, которые лежат в основе работы программного обеспечения (прошивки) Lavritech. В прошивке Lavritech для интеграции внешних устройств и опций (например, Modbus FS, LoRa FS) используется единая модель данных.
Ниже описано каким образом параметры (или метрики) устройств встраиваются в систему контроллера Lavritech и распределяются по группам системных параметров.
Параметры устройств
В общем случае параметры устройства (или модуля) можно классифицировать по нескольким критериям:
- по типу доступа к данным
- параметры для чтения (показания датчиков, счётчики, состояния, статусы)
- параметры для чтения/записи (уставки, команды)
- по формату данных
- аналоговые значения (показания датчиков, уставки)
- по наличию знака (могут ли быть отрицательными?)
- по точности (целое или дробное, сколько знаков после запятой)
- по размеру данных для значения параметра (8 бит, 16 бит, 32 бит)
- дискретные значения (статусы, команды)
- аналоговые значения (показания датчиков, уставки)
- по типу измеряемой физической величины (по единицам измерения)
- ток, напряжение, температура, влажность, освещённость и др.
При подключении устройства по одному из интерфейсов связи система контроллера Lavritech распределяет все эти комбинации по системным параметрам, образуя единое пространство. Далее оно используется для создания различных интеграций.
Системные параметры
Системные параметры задают единый способ описания любых подключённых устройств: показания датчиков, настройки устройств, дискретные каналы, каналы управления уровнями. Независимо от используемых функций прошивки (Modbus FS, LoRa FS, Modbus Slave, MQTT или Web-интерфейс), интегратор всегда работает с одной и той же моделью данных, где параметры доступны в виде Sensors, GPIO и PWM.
В прошивке Lavritech все данные и каналы управления для устройств сводятся к использованию трёх основных типов системных параметров:
- Sensors — параметры, отражающие аналоговые значения считанные с устройств, показания датчиков и вычисляемые значения. Это базовый тип, в основном используется для чтения параметров устройств и приведения их значений к определённому виду. В некоторых случаях используются также для управления, записи уставок и настроек.
- GPIO — параметры для дискретных сигналов или дискретного управления
- PWM — параметры для аналогового управления (расширяют возможности управления через Sensors и добавляют некоторые варианты интеграций)
На снимке ниже показан пример вида главной страницы контроллера, на котором выведены все три группы параметров:

Примеры применения системных параметров
- Sensors - считывание показаний датчиков (температура, влажность, освещённость и др.) или счётчиков электроэнергии, теплосчётчиков; настройка пороговых значений устройств; управление через топики MQTT c уникальным именем.
- GPIO - управление реле, чтение состояний, чтение входов/выходов.
- PWM - управление уставками/уровнями: яркостью каналов диммеров, желаемым уровнем температуры или влажности; установка пороговых значения срабатывания аварий.
Эти три типа системных параметров образуют единую модель данных, через которую работает большая часть функционала прошивки (Modbus FS, LoRa FS, Modbus Slave, MQTT, Web-интерфейс и др.).
Каждый системный параметр представляет собой "ячейку" в памяти (переменную), связанную с определённым параметром устройства.
Системные параметры одного типа объединяются в группы.
Каждый системный параметр имеет свой уникальный номер или идентификатор в группе.
Группы имеют независимую друг от друга нумерацию. Например, параметры GPIO 200 и PWM 200 - не зависят друга от друга (и будут занимать разные ячейки в памяти контроллера).
| Группа (тип) | Описание | Где хранятся данные | Разрядность и диапазон значений параметров | Нумерация параметров в группе | Примеры |
|---|---|---|---|---|---|
| Sensors | Показания датчиков и вычисляемые значения (иногда уставки) | Массив аналоговых/расчётных переменных. Переменные могут быть различной длины. | гибко настраивается (через шаблоны), до 32 бит | номер устройства + номер параметра в рамках устройства; элементы в массиве формируются на основе используемых шаблонов и устройств | Набор показаний датчиков (температуры, напряжения, показания счётчиков) |
| GPIO | Дискретные сигналы или дискретное управление | Массив дискретных переменных на 256 элементов | 1 бит (on/off) | 0-255 | Набор дискретных каналов «вкл/выкл» (реле, кнопки, дискретные входы/выходы) |
| PWM | Аналоговое управление | Массив аналоговых значений на 256 элементов | 16 бит (0-65535), только целые положительные значения | 0-255 | Набор каналов управления уровнями (управление яркостью через диммеры, мощностью вентиляторов, температурой и т. п.) |
Расшифровка терминов и названий групп
"Sensors" - изначально в контроллере была только эта группа системных параметров, и она предназначалась для чтения значений датчиков (сенсоров). По мере развития ПО была включена поддержка записи параметров через различные опции (Modbus, Get-запросы, MQTT, LoRa) и в целом расширены возможности этой группы (вывод с учётом единиц измерения, возможность математических преобразований)
"GPIO" - этот технический термин означает "порт" или ножка микроконтроллера, которая работает как вход или выход. Один GPIO может принимать значения 0 либо 1 (вкл/выкл). Микроконтроллер изначально имеет несколько физических GPIO, которыми можно управлять. Каждая программная опция может добавлять свои (уже виртуальные) GPIO. Опция занимает свой диапазон виртуальных GPIO, начальный номер и количество которых задаётся в настройках, и это подмножество включается в общее количество GPIO, доступных в системе.
"PWM" - название группы происходит от английского названия термина "ШИМ" (широтно-импульсная модуляция). Изначально некоторые выходы контроллера могли использоваться в режиме "PWM" для плавного управления внешними устройствами. Например, для плавной регулировки скорости вращения вентилятора. Для таких выходов на главной странице возможно вывести cлайдер для удобного изменения значения параметра. В последствии возможности этой группы элементов были расширены и теперь группа поддерживает виртуальные выходы PWМ, которые связываются с каналами управления устройств через опции и шаблоны.
Связь с компонентами ПО
В таблице кратко указаны основные определения и связи, которые используются для системных параметров в опциях и функциях прошивки.
| Группа (тип) | Web-интерфейс Web Key |
Modbus FS и шаблоны | LoRa FS и шаблоны | MQTT | Modbus Slave |
|---|---|---|---|---|---|
| Sensors | Таблица значений в блоке "Sensors" | секция [sensors] |
секция [sensors] |
Чтение ✅ Запись ✅ "именнованные" топики |
Holding, адреса "static registers" (2 регистра на значение) |
| GPIO | Кнопки (вкл/выкл) | секция [gpio] |
Таблица LoRa GPIO ¹ | Чтение ✅ ( .../gpioXXX)Запись ✅ ( .../set/gpioXXX) |
Coils, адрес сoil = номер GPIO |
| PWM | Слайдеры | секция [pwm] |
Таблица LoRa PWM¹ | Чтение ✅ ( .../pwmXXX)Запись ✅ ( .../set/pwmXXX) |
Holding, адресация с 10000 (1 регистр на значение) |
¹ В LoRa FS шаблонах секции
[gpio]и[pwm]не создаются автоматически при автозаполнении. Эти параметры нужно добавлять вручную на стороне Node.
Сводная информация:
- Sensors — в шаблонах указываются в секции
[sensors], отображаются таблицей в Web и доступны в Modbus/MQTT для чтения (а также для записи - если тип метрики позволяет записывать значения). Дополнительно для Sensors поддерживается назначение уникальных названий MQTT топиков - их можно указывать в шаблонах. - GPIO — дискретные каналы управления, видны как кнопки в Web, управляются через Coils в Modbus и в MQTT через топики вида
gpioXXX. - PWM — каналы аналогового управления, отображаются как слайдеры в Web, доступны в Modbus и в MQTT через топики вида
pwmXXX.
Использование системных параметров в интерфейсах и функциях прошивки:
- LoRa FS: принимает и передаёт данные по LoRa, использует шаблоны с маской
[sensors]. GPIO и PWM пробрасываются на основе таблиц, формируемых пользователем через настройки в веб. - Modbus Slave: публикует системные параметры как регистры Modbus (Sensors → Holding, GPIO → Coils, PWM → Holding). Для Sensors поддерживается создание карты в автоматическом режиме на основе "static registers". Все GPIO доступны как Coils.
- MQTT: публикует Sensors, GPIO и PWM в отдельных топиках. Для Sensors происходит дополнительное разделение, а также возможно задание части имени топика для параметров устройств через шаблоны.При записи - в путь топика добавляется
/set/ - Web-интерфейс: на главной странице выводятся Sensors (таблицы значений) для каждого устройства.Также через опцию Web Key добавляются элементы управления: GPIO (кнопки), PWM (слайдеры).
Ключевые особенности
-
Sensors
- Изначально предназначались только для чтения
- Теперь поддерживается и запись (через Modbus, Get-запросы, MQTT)
- В MQTT возможно назначение названий топиков (через шаблоны)
- В Modbus и LoRa FS Sensors описываются через маску в секции шаблонов
[sensors]. - В Modbus шаблонах поддерживают арифметические операции и преобразования
- поддерживает автогенерацию карты регистров в Modbus Slave, одно значение занимает 2 регистра
-
GPIO
- Дискретные элементы (чтение статусов, подача команд).
- Поддерживают чтение и запись.
- В LoRa FS пробрасываются в диапазон адресов, указанный при создании прошивки
- В Web — отображаются как кнопки
- В Modbus Slave автоматически транслируются в Coils.
-
PWM
- Аналоговые каналы управления (например, диммеры).
- Поддерживают чтение и запись.
- В LoRa FS пробрасываются в диапазон адресов, указанный при создании прошивки
- В Web — отображаются слайдерами
- В Modbus Slave автоматически транслируются в Holding.
Контроль распределения GPIO и PWM
Группы GPIO и PWM могут хранить ограниченное количество элементов - максимум по 256 системных параметров в каждой группе.
По мере настройки контроллера, добавления в него опций и устройств - происходит распределение этих параметров.
Распределение по диапазону номеров в группах GPIO и PWM может меняться при изменении настроек. Не всегда известно заранее как распределятся номера. Это зависит от набора включенных опций, набора устройств, подключенных к контроллеру, используемых шаблонов для чтения/записи и других факторов.
Важно учитывать ограничения и контролировать, чтобы не было наложений и конфликтов - чтобы один и тот же номер в рамках группы (GPIO или PWM) не использовался дважды разными компонентами прошивки.
Чтобы отобразить текущий диапазон используемых номеров GPIO и PWM, а также убедиться в отсутствии конфликтов - достаточно открыть соответствующие вкладки на веб-интерфейсе и посмотреть таблицы "GPIO MAP" и "PWM MAP".

Примеры таблиц:

Пример интеграции
Рассмотрим работу системных параметров на примере управления тремя каналами диммера.
Для интеграции диммера в систему контроллера Lavritech подключаем его по Modbus RTU, заходим во вкладку ModBus и выбираем соответствующий шаблон. После выбора шаблона на странице появится карта устройства - "Device map". Она показывает какие системны параметры будут использоваться совместно с выбранным устройством (диммером).

На иллюстрациях ниже показано как выглядят группы системных параметров в различных интерфейсах.
- 1 - Sensors
- 2 - GPIO
- 3 - PWM
Web-интерфейс контроллера (главная страница)
Аналоговые значения яркости для трёх каналов представлены в двух вариантах:
- как Sensors - для чтения и контроля
- как PWM - для управления через слайдеры
Каналы диммеров можно включать/выключать через GPIO, выведенные кнопками: Dim_1, Din_2, Dim_3. Привязка названий кнопок к номерам GPIO осуществляется в опции Web_Key.

MQTT
- Sensors - читаются и пишутся через топики с уникальным именем (имя можно задать в Modbus шаблоне).
- GPIO - имя топика формируется по номеру параметра GPIO
- PWM - имя топика формируется топики по номеру параметра PWM
Для записи в топики надо добавлять
/set/после имени пользователя и устройства.
