Перейти к содержанию

LoRa FS - Настройка в контроллере

Настройка и работа с LoRa в веб-интерфейсе контроллера Lavritech


Этот раздел описывает настройку обмена данными в контроллере при использовании режима LoRa FS - с поддержкой шаблонов для чтения данных и управления.

В разделе рассмотрены:

  • выбор режима работы (Node / Gateway)
  • настройка в режиме Gateway (шлюз)
  • настройка в режиме Node (нода)
  • параметры радиосвязи
  • сценарии использования и интеграции через Web, MQTT, Modbus Master, Modbus Slave
  • детальные настройки

Примечание: Распределение общих ресурсов контроллера выполняется на этапе подготовки прошивки.

Для двух Lavritech контроллеров, выступающих в роли LoRa Gateway и Node - вначале надо произвести общую настройку связи по радиоканалу чтобы они смогли общаться между собой. Общая настройка связи для Gateway и Node производится аналогично с использованием одних и тех же значений.

Нужно будет повторить шаги, описанные ниже для двух контроллеров.

Для перехода к настройкам - зайдите на вкладку Lora с главной страницы контроллера.

tab

Выбор режима работы (Node / Gateway)

В верхней части страницы настройки LoRa сосредоточены общие настройки связи, включая выбор режима работы.

связь

1️⃣ Выбор текущего режима работы:

  • Disable - функционал LoRa отключен
  • Lora Gateway - работа в режиме шлюза
  • Lora Node - работа в режиме оконечного устройства ("ноды")

2️⃣ Выбор режима шифрования (должен совпадать в настройках Gateway и Node):

  • Open - передача данных без шифрования
  • ABP (activation by personalization) - основной вариант, рекомендуемый к использованию в простых сетях. В этом случае надо произвести предварительную настройку параметров идентификации и кодирования данных на ноде и шлюзе через веб-интерфейс, чтобы они смогли "опознать" друг друга.
  • OTAA (over the air activation) - активация «по воздуху». Поддержка шифрования с обменом ключей. Пока в данной версии прошивки используется редко (требует доп. ресурсов)

Другие технические настройки:

  • Use PA BOOST PIN — включение передачи через вывод PA BOOST радиочипа. Активно по-умолчанию.
  • Invert mode - включение инвертирование сигнала на прием на Node. Активно по-умолчанию.

Внимание

Настройки связи шлюза и ноды должны быть идентичные, чтобы они могли общаться между собой.

Настройка в режиме Gateway

Основные настройки

Выбор параметров связи

Параметры связи выбираются в соответствии с региональным стандартами, в РФ это RU864-870.
Более детальное описание параметров связи и вариантов выбора находится в разделе "Общие сведения о технологии LoRa и сети LoRaWAN"

Российские стандарты и принципы передачи данных описаны в ГОСТ Р 71168-2023 (раздел "Региональные параметры").

Общий вид интерфейса Gateway

общий вид gateway

В режиме Gateway контроллер принимает данные от нескольких Node и предоставляет доступ к ним через различные интерфейсы (Web, MQTT, Modbus Slave).

1️⃣ Выбор текущего режима работы:

  • должно быть выбрано Lora Gateway

2️⃣ Выбор режима шифрования (должен совпадать в настройках Gateway и Node):

  • Open - передача данных без шифрования
  • ABP (activation by personalization) - основной вариант, рекомендуемый к использованию в простых сетях. В этом случае надо произвести предварительную настройку параметров идентификации и кодирования данных на ноде и шлюзе через веб-интерфейс, чтобы они смогли "опознать" друг друга.
  • OTAA (over the air activation) - не поддерживается для Gateway

3️⃣ Настройки параметров связи

  • Power TX - мощность передачи
    • доступные значения: 3-14
    • для России максимально разрешенное значение — 14 - 14 dBm (25 мВт)
  • Freq - частота канала
    • для одноканального режима как правило используется значение 868,9 МГц (канал "по-умолчанию" для диапазона RU864-870)
    • полный список частот и каналов для диапазона RU864-870 см. в разделе "Выбор канала (частоты передачи)"
  • CR (Coding Rate) - степень коррекции ошибок, или "избыточность".
    • чем больше CR - тем надёжнее связь, но ниже скорость (меньше полезных данных можно уместить в пакет).
    • поддерживаются значения 5, 6, 7, 8 - что соответствует избыточности 4/5, 4/6, 4/7, 4/8.
  • SF (Spreading Factor) — фактор расширения спектра.
    • чем выше SF - тем больше дальность передачи и выше помехоустойчивость, но ниже скорость.
    • диапазон значений: 7 - 12 (максимальная скорость - максимальное расстояние)
  • BW (Bandwidth) — ширина спектра сигнала
    • для России только 125 кГц

Для сохранения настроек нажмите на кнопку "SET".

Внимание

Настройки связи шлюза и ноды должны быть идентичные, чтобы они могли общаться между собой.

4️⃣ Gateway options

  • нажмите "Nodes options" для настройки метрик и параметров шифрования для связи с Node

5️⃣ Мониторинг подключенных Nodes

мониторинг нод

  • первая цифра - порядковый номер ноды
  • count - счётчик принятых пакетов
  • rssi - уровень сигнала
  • time - счетчик времени с момента получения последнего пакета от ноды

6️⃣ Мониторинг принятых пакетов (Last Package)

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

Last Package

  • RSSI - уровень сигнала
  • LEN - длина пакета
  • HEX - содержимое пакета (байты в формате hex)

Настройка метрик

Gateway обрабатывает принятые данные (и формирует команды к Node) на основе описания структуры данных из LoRa-шаблонов.

Каждой Node на стороне Gateway соответствует свой шаблон.
Функционал LoRa FS позволяет:

  • загружать и обновлять готовые шаблоны с сервера
  • создавать свои шаблоны и редактировать существующие (через ЕasyFS)
  • a также пользоваться шаблонами, которые были автоматически сформированы на стороне Node и отправлены на шлюз.

LoRa-шаблоны хранятся в виде файлов в контролере и доступны на вкладке ЕasyFS.
Подробнее структура шаблонов будет описана в других разделах.

Для выбора шаблона:

  • в Gateway-контроллере перейдите на вкладку Lorа
  • в разделе Gateway options нажмите кнопку Nodes options.
  • выберите ноду, кликнув по её номеру вверху страницы
  • выберите шаблон, используя списки в разделах Выбор группы и Выбор шаблона
  • внизу нажмите кнопку "SET" чтобы сохранить выбор

настройка нод на шлюзе

настройка нод на шлюзе

варианты шаблонов

При выборе шаблона доступны следующие варианты:

  • Выключено - пункт который используется для отключения приёма данных с ноды
  • Локальный конфиг - шаблон из файла вида loralocal1.lr (см. в EasyFS), где 1 - номер выбранной ноды. Этот файл автоматически обновляется при получении конфигурации из Node (см. функцию "Отправить конфигурацию на шлюз" в веб интерфейсе Node).
  • другие варианты - любые другие шаблоны устройств - принятые с сервера или на основе локальных файлов из EasyFS (например, на скриншоте - показан временный шаблон "test_template")
Функции для обновления шаблонов

общие функции шаблонов

Существуют общие функции для обновления шаблонов:

  • Применить локальные правки Device list - если были локальные изменения в файлах шаблонов, нужно будет их применить перед использованием.
  • Загрузить Device list с сервера - загрузить новые версии шаблонов с сервера lavritech.

После применения шаблона данные, принятые от LoRa появятся на главной странице. A также они будут доступны по другим интерфейсам (если были включены соответствующие опции).

lora device на главной

Таким образов в системе контроллера появятся новые связи на основе системных параметров (Sensors/GPIO/PWM), которые были описаны в шаблоне. Подробнее про системные параметры можно прочитать в разделе "Модель данных". Подробнее про интеграцию LoRa с другими опциями, использование значений и связей будет описано ниже.

Настройка в режиме Node

Основные настройки

Общий вид интерфейса Node

общий вид node

В режиме Node контроллер передаёт метрики по LoRaWan согласно конфигурации.

Настройка метрик

Настройка данных (метрик) для передачи осуществляется через веб-интерфейс:

  • в Node-контроллере перейдите на вкладку Lorа
  • в разделе Node options нажмите кнопку Configure binary metrics.

кнопка

Откроется список метрик, который можно редактировать вручную, либо воспользоваться Автозаполнением датчиков

метрики_node

Метрики выбираются на основе доступных системных параметров из Sensors/GPIO/PWM.
(на скриншоте Sensors берутся из параметров Modbus устройств)

На основе списка метрик нода формирует конфигурацию пакета (LoRa-шаблон), и периодически отправляет пакеты на шлюз.

Автозаполнение датчиков позволяет заполнить часть списка метрик в автоматическом режиме. Автозаполнение формирует список метрик, основываясь на данных устройств, интегрированных в систему контроллера (устройства должны быть настроены и подключены). За основу берутся данные, которые видны в блоке "Sensors" на главной странице. В частности, в список метрик попадают параметры из опрашиваемых Modbus устройств. Связи c Modbus строятся на основе данных из секций [sensors] Modbus-шаблонов.

Отправить конфигурацию на шлюз - чтобы шлюз (Gateway) смог верно распознать принятые данные от ноды, ему нужно однократно отправить конфигурацию. При этом на стороне Gateway будет создан или изменён LoRa-шаблон.

Использование и управление

Web-интерфейс

управление по web

  • На главной странице в Gateway-контроллере в блоке Sensors - появятся данные от Nodes. Они группированы под именами Lora device D, где D - номер подключенной ноды.
  • при помощи Web_Key для GPIO существует возможность вывести кнопки-индикаторы для контроля и управления. Они будут отображать состояния удалённых GPIO с ноды.
  • при помощи Web_Key для PWM существует возможность вывести слайдеры на главной странице. При помощи них можно управлять (или считывать состояние) удалённых PWM с ноды.
Особенности управления через веб (для устройств Class A)

Реакция для команд с Web-кнопок/слайдеров не моментальная.
Большинство Node работает как LoRa-устройство Class A, поэтому при управлении с Gateway нужно учитывать возможные задержки (около двух интервалов между пакетами).

Ожидаемая логика и реакция при управлении с Gateway:

  1. При нажатию на кнопку или при изменении уровня слайдера - вначале видимого эффекта нет. Команде требуется время на выполнение.
  2. Надо подождать нового окна передачи от Node к Gateway.
  3. Когда приходит очередной пакет от Node, шлюз шлёт команду на запись (Downlink-сообщение).
  4. Нода принимает команду и применяет изменение (реле щёлкает / диммер меняет уровень).
  5. В составе следующего пакета от Node - новое значение возвращается на шлюз и становится видимым.

MQTT

mqtt mqtt именнованные топики

Чтение значений, формирование имён топиков:

  • для чтении группы GPIO - в топике указывается gpioN - где N - номер параметра
  • для чтении группы PWM - в топике указывается pwmN - где N - номер параметра
  • группа Sensors (в веб отображается как Lora device D) - может отображаться двумя способами:
    • при использовании стандартных сгенерированных шаблонов в топике указывается lorsDDNN, где DD - номер устройства (номер ноды), а NN - номер параметра в рамках ноды.
    • если в шаблоне добавлены имена топиков для параметров - возможно более удобное обращение по имени параметра в рамках ноды. Тогда появляется группа lorsD - где D - это номер устройства

Для формирование запросов на запись нужно в топик вставить секцию .../set/...
Например, если топики для чтения имеют вид user/device/...,
то топики для записи будут user/device/set/...

Примеры управления с Gateway:

  • GPIO: включение второго канала диммера - запись 1 в топик user/device/gpio221
  • PWM: установка яркости второго канала диммера на 70% - запись 70 в топик user/device/pwm221
  • Sensors: установка яркости второго канала диммера на 25% - запись 25 в топик user/device/set/lors0102

Дополнительный контроль: Также дополнительно в MQTT можно контролировать изменение счётчика принятых пакетов на gateway lorsc1 и RSSI (уровень сигнала) lorsr1 (1 - номер ноды). Для каждой ноды эти параметры свои.

Особенности управления через MQTT (для устройств Class A)

Обновление значения после записи в топик и реакция - не моментальные.
Большинство Node работает как LoRa-устройство Class A, поэтому при управлении с Gateway нужно учитывать возможные задержки (около двух интервалов между пакетами).

Ожидаемая логика и реакция при управлении с Gateway:

  1. При записи в топик регистрируется только запись в .../set/...). Значение топика на чтение может не поменяться. Команде требуется время на выполнение.
  2. Надо подождать нового окна передачи от Node к Gateway.
  3. Когда приходит очередной пакет от Node, шлюз шлёт команду на запись (Downlink-сообщение).
  4. Нода принимает команду и применяет изменение (реле щёлкает / диммер меняет уровень).
  5. В составе следующего пакета от Node - новое значение возвращается на шлюз.
  6. В новый интервал отправки в MQTT - шлюз шлёт значения параметров, и параметр которые записывали устанавливается в нужное значение.

Именнованные топики

Именованные MQTT-топики для Sensors не генерируются автоматически при авто-заполнении — при необходимости они добавляются вручную в файле шаблона на шлюзе.

Modbus Slave

Шлюз предоставляет карту регистров для доступа со стороны Modbus Master:

  • GPIO транслируются в область Coils с 1-го адреса. Адрес Сoil = номер GPIO (управление реле/выполнение дискретных команд).
  • PWM транслируются в область Holding Registers с 10000-адреса. Адрес Holding = номер PWM + 10000.
  • Sensors транслируются как “static registers” — см. диапазоны, автоматически созданные из LoRa-шаблона ноды.

Более детальное описание работы находится в разделе про опцию Modbus Slave.

Внимание

Некоторые Modbus-утилиты используют адресацию “1-based” — может потребоваться смещение адреса +1 при обращении к регистрам/coil.

Примеры запросов от Modbus Master и ответов контроллера (c использованием утилиты "modpoll"). Данные соответствуют данным показанным на скриншоте главной страницы.

  • чтение трёх GPIO: 220 221 222
    ./modpoll -m tcp -a 1 -r 221 -t 0 -c 3 192.168.1.125
    [221]: 0
    [222]: 1
    [223]: 0
    
  • чтение трёх PWM: 220 221 222

    ./modpoll -m tcp -a 1 -r 10221 -t 4 -c 3 192.168.1.125
    [10221]: 75
    [10222]: 20
    [10223]: 5
    

  • чтение всех Sensors параметров (10 параметров)

    ./modpoll -m tcp -a 1 -r 2001 -t 4 -c 20 192.168.1.125
    [2001]: 75
    [2002]: 0
    [2003]: 20
    [2004]: 0
    [2005]: 5
    [2006]: 0
    [2007]: 2
    [2008]: 0
    [2009]: 2
    [2010]: 0
    [2011]: 2
    [2012]: 0
    [2013]: 5
    [2014]: 0
    [2015]: 12
    [2016]: 0
    [2017]: 11
    [2018]: 0
    [2019]: 75
    [2020]: 0
    

Особенности управления через Modbus Slave (для устройств Class A)

Обновление значения после записи в топик и реакция - не моментальные.
Большинство Node работает как LoRa-устройство Class A, поэтому при управлении с Gateway нужно учитывать возможные задержки (около двух интервалов между пакетами).

Ожидаемая логика и реакция при управлении с Gateway:

  1. В ответ на команду записи в регистр - возвращается код успешного выполнения команды.
  2. Если сразу же после этого прочитать значение из регистра - значение будет старым. Команде требуется время на выполнение.
  3. Надо подождать нового окна передачи от Node к Gateway.
  4. Когда приходит очередной пакет от Node, шлюз шлёт команду на запись (Downlink-сообщение).
  5. Нода принимает команду и применяет изменение (реле щёлкает / диммер меняет уровень).
  6. В составе следующего пакета от Node - новое значение возвращается на шлюз.
  7. Далее, если опрос значения по Modbus активен - произойдёт изменение значения в регистре, параметр установится в нужное значение.

Интеграция с Node + Modbus Master FS → Gateway

Node:

  1. Настройте устройства на вкладке Modbus (режим Modbus Master FS) (шаблоны, адреса, параметры опроса).
  2. На вкладке Lora откройте список метрик (Node options → Configure binary metrics) и выполните Автозаполнение датчиков — нода автоматически сформирует список метрик на основе доступных параметров для подключенных Modbus-устройств [sensors]
  3. При необходимости - вручную добавьте в список метрик нужные GPIO и PWM. Номера каналов GPIO и PWM можно увидеть на вкладке Modbus, в Device map соответствующего устройства.
  4. Отправьте конфигурацию на шлюз - она будет передана на Gateway и там будет обновлён файл конфигурации.

Gateway:

  1. Зайдите на вкладку Lora, откройте Gateway options → Nodes options
  2. Выберите нужную ноду по её номеру вверху страницы
  3. Выберите "Локальный конфиг" в списке шаблонов
  4. Сохраните выбор для этой ноды - кнопка "SET"
  5. Зайдите на вкладку Lora, убедитесь что счётчик пакетов (count) для ноды увеличивается. Нужно подождать время - интервала передачи пакета который был выставлен на Node.
  6. Проконтролируйте, что данные от ноды отобразились на главной странице (Lora device в блоке Sensors).
  7. При необходимости выполните привязки к GPIO и PWM - если данные этого типа передавались с Node и были в списке метрик.
Автозаполнение - только Sensors

Автозаполнение создаёт только часть конфигурации (Sensors).
Автозаполнение датчиков учитывает только секцию [sensors] из Modbus-шаблонов.
Проброс GPIO и PWM из Modbus-шаблонов пока не выполняется автоматически — их необходимо задать в списке метрик вручную.

Пример связывания GPIO и PWM на стороне Node и Gateway

GPIO и PWM с Node транслируются по-порядку как они указаны в списке метрик,
и транслируются по номерам которые были выделены для области LoRa на стороне Gateway.

Например, в списке метрик на Node - мы передаём по 2 параметра из этих групп:

node_link_gpio_pwm

В веб-интерфейсе Gateway-контроллера уточняем какие номера системных параметров GPIO и PWM были выделены под Lora. Открываем таблицы на вкладках GPIO и PWM.

карта gpio карта pwm

В итоге, получаем такие таблицы соответствия:

GPIO:

Номер канала на Node Номер канала на Gateway
181 220
190 221

PWM:

Номер канала на Node Номер канала на Gateway
180 220
181 221

Детальные настройки

Настройка интервала передачи данных

На стороне Node выбираем подходящий интервал передачи данных. При выборе необходимо ориентироваться на такие факторы, как:

  • объём передаваемых данных c одной ноды
  • количество нод в сети
  • настройки параметров связи
  • региональные стандарты

Рекомендуется использовать длинные интервалы, чтобы не создавать помехи в сети и не перекрывать "окна" передачи других устройств.

Также длинные интервалы передачи позволяют соблюдать региональные стандарты. Например, согласно RU864-870 для частоты канала 868,9 МГц Duty Cycle должен быть менее 10%. Это означает, что при интервале в 10 минут (360 sec) устройство может находится в режиме активной передачи не более 36 секунд. То есть нужно использовать соответсвующие настройки связи, чтобы не превышать это значение, либо реже выходить на связь и увеличивать интервал.

интервал_передачи

Внимание

При использовании интервала передачи менее 30-60 секунд увеличивается вероятность ошибок и потери пакетов.
В режиме штатной эксплуатации не рекомендуется устанавливать интервал менее 60 секунд.
Для тестирования (а также для отдельных случаев прямого соединения Gateway-Node с малым количеством данных в условиях отсутствия передачи от других устройств) можно сокращать интервал до значений 30-60 секунд, при условии соблюдения региональных стандартов.

Выбор интервала для нескольких Node

В одноканальном режиме работы, если несколько Node передают данные на один Gateway-контроллер - они разделяют один и тот же канал (частоту передачи) между собой. Чтобы снизить вероятность наложения по времени отправки пакетов и снизить вероятность возникновения ошибок приёма - рекомендуется выбирать на разных Node разные интервалы отправки сообщений (не кратные между собой). Например Node1 - 61 cек., Node 2 - 73 cек, Node 3 - 85 сек.

Настройка времени ожидания пакета

В Gateway эта настройка называется TimeOut. Она настраивается индивидуально для каждой ноды. По умолчанию таймаут не используется - значение 65535.

Значение таймаута не должно быть меньше интервала передачи данных в настройках Node-контроллера, иначе Gateway будет всегда детектировать ошибку приёма. Рекомендуется устанавливать таймаут с двухкратным запасом или более (2*Send interval Node).

список_nodes

таймаут_шлюз

Идентификация и шифрование в режиме ABP

Важно указать DevAddr, AppSkey и NwkSkey на Node и повторить эти жe значения в Gateway.

DevAddr (Device Address) — это 32-битный (4-байтный) уникальный сетевой адрес устройства, который используется для идентификации устройства в сети во время обмена данными. в ABP — он прописывается вручную и статически.

AppSKey (Application Session Key) и NwkSKey (Network Session Key) — это два ключа шифрования в LoRaWAN.

Для взаимодействия в режиме ABP на ноде и шлюзе должны быть указаны одинаковые DevAddr, AppSkey и NwkSkey.

Пользователь задаёт уникальный DevAddr вручную на стороне ноды, и потом дублирует его в настройках Gateway.

По умолчанию в полях AppSkey и NwkSkey находятся по 32 символа «F». Пользователь должен заменить их на свои уникальные 32-битные ключи и затем скопировать их на Gateway.

Пример настроек на Node:

идентификация_node

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

nodes_options

идентификация_gateway

Контроль счётчика пакетов (Frame Counter)

счётчик_gateway счётчик_node

  • у ноды и у шлюза собственные счётчики пакетов
  • шлюз отслеживает несколько счётчиков - для каждой ноды в отдельности
  • шлюз также передаёт счётчики в MQTT - cм. топики lorscN, где N - номер ноды
  • контроль значений счётчиков позволяет определить моменты передачи и приёма сообщений

Контроль уровня сигнала от Node (RSSI)

  • в веб интерфейсе на вкладке Lora - видны уровни сигналов от каждой ноды (рядом со счётчиком пакетов)
  • в MQTT - cм. топик, заканчивающийся на lorsr1, где 1 - номер ноды

Локальные шаблоны на шлюзе

  • после нажатия кнопки “Отправить конфигурацию на шлюз”, на шлюзе появится либо обновится локальный шаблон (например, файл loralocal1.lr)
  • его можно выбрать и при необходимости отредактировать через EasyFS
  • при повторной отправке конфигурации с ноды - файл будет перезаписан! Если в нём были локальные правки - его лучше использовать как отдельный шаблон и сохранять под другим именем.
  • подробнее про использование и редактирование шаблонов будет рассказано в других разделах