Lora (обновлено: 10 Aug 2023, 13:33:53)

Поддержка радиомодулей Lora в режимах Node и Gateway. Поддержка шифрования ABP и OTAA(только в Node).

Последние обновления:

24.07.21 - Добавлена поддержка обратной связи(управления) на Node и Gateway режимах.

12.07.21 - Оптимизация работы спящего режима в режиме Node на RTOS прошивках. OTAA сейчас работает в спящем режиме.

11.07.21 - Добавлена бинарная отправка в Node.

На RTOS прошивках с 4.12.19 имеются небольшие изменение в интерфейсе настройки и добавлена поддержка ОТАА и плана частот !! 

20.12.19 - сейчас шаблон отправки задается на вкладка lora. Конструктор строк не требуется.

Поддерживаются чипы:

SX1272, SX1273 - частоты 860-1020 мгц

SX1276, SX1277 - частоты 137-1020 мгц

SX1278 - частоты 137-525 мгц (разновидность SX1276, SX1277)

SX1279 - частоты 137-960 мгц (разновидность SX1276, SX1277)

Обратите внимание, что необходимо использовать частоты разрешенные в Вашей стране.

Для России: 868,7-869,2 (25 мвт), 864,0-865,0 (запрещено вблизи аэропортов),  433,075-434,79 (10мвт)

Поддерживаемые протоколы: Lora

Подключение радиомодулей

Подключение радиомодуля по SPI к ESP8266:

CLK 14

MOSI 13

MISO 12

SS 15*

RESET 16*

Подключение радиомодуля по SPI к ESP32:

CLK 5

MOSI 27

MISO 19

SS 17*

RESET 18*

* - GPIO доступны для изменения в дополнительных настройках опции.

На RTOS прошивках доступно подключение GPIO прерывания GPIO INT(DIO0) радиомодуля для эффективного использования ресурсов при режиме приема Gateway. Значение -1(минус один) - не используется GPIO.

При установке значения GPIO RESET в -1(минус один) функция не используется !

Одновременная работа совместно с другими SPI опциями на данный момент не поддерживается !

Общие настройки опции

Use PA BOOST PIN - включение передачи через вывод  PA BOOST радиочипа.

Frequency plan/Inv mode - включение использования плана частот включая инвертирование сигнала на Node. Настройка доступна при включенной опции плана частот.

Invert mode - включение инвертирование сигнала на прием на Node, при использовании с Gateway Wifi-Iot отключить ! Настройка доступна при выключенной опции плана частот.

Power TX - установка мощности передачи, доступные значения: 3-14, 20. Для России максимально разрешенная - 14.

SF - Фактор расширения спектра (Spreading Factor). Диапазон 7 по 12: 7 - максимальная скорость и минимальное время в эфире, 12 - максимальное расстояние.

BW - Ширина спектра радиосигнала (кГц). Для России разрешена только 125 кГц.

Freq - установка частоты приема и передачи. Установить частоту можно только ту, которую поддерживает чип.


Режимы шифрования:

Open - без шифрования.

ABP(Activation by Personalization) - поддержка шифрования со статичными ключами.

OTAA(Over-The-Air Activation) - поддержка шифрования с обменом ключей(только Node)


Работа в качестве Gateway (шлюз)

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

Реализовано отображение метрик на главной странице модуля.

В нижней части страницы настроек будет отображаться список активных Node, где доступна информация: счетчик передач, уровень сигнала, время последнего выхода на связь. Далее отображается последняя строка принятых данных в виде hex или текста в зависимости от режима работы.

Поддержка MAC команд: Поддерживается только ответ на запрос времени с Node.

Режим без шифрования(open):

Требуется указать номер шлюза, по умолчанию 1.


Режим шифрования ABP:

При выборе режима ниже перейдя по ссылке Nodes options, можно ввести параметры Node устройств.


Режим шифрования OTAA:

Данный режим в качестве шлюза не поддерживается.


Прием текстовых данных

Настройка опции на Gateway не требуется - вся настройка на Node.


Прием бинарных данных

Опция включается дополнительно в шестеренке опции. Формат данных используется аналогично как в опции NRF24 Hub.

В настройках ноды требуется ввести структуру пакета в поле Data structure, если поле пустое, то используем текстовый формат.

Основные типы данных:

T -Температура, 2 байта int. значение умножено на 10(1 знак после запятой);

H- Влажность, 2 байта uint. значение умножено на 10(1 знак после запятой);

L - Long данные, 4 байта, например разнообразные счетчики передач или счетчики импульсов. 4 байтовая переменная;

С - Аналогично L;

А - АЦП или другие 16 битные данные , 2 байта;

B - Простое одно байтовое значение;

G - для передачи значений чтения/состояния GPIO;

1..9 - указывает количество пропускаемых байт в структуре,эти данные не будут нигде отображаться. Актуально, если нужно пропустить несколько байт в пакете. Аналогично не выводятся данные, если названия переменных указать в нижнем регистре.

Дополнительные флаги(дописываются перед основными): R - обратный порядок байтов(старший байт первый). S - значение с 2 знаками после запятой. Т.е. если принимаем температуру то пишем не просто T , а RT , если применяется старший байт первым.


Примеры структур для разных моделей готовых устройств:

Вега СИ-11 : [0=1]1B5BCCCC (фильтр по нулевому байту, он должен быть равен 1)

Dragino LHT65 : RARSTRH1RST


Передача команд на Node

Передача команд включается дополнительно в шестеренке опции "Обратная связь" , доступно только на ESP8266(RTOS) и ESP32.  Передача команд доступна только при включенном шифровании !

Отправка HTTP GET командами:

[ip адрес]/lorasend?nd=Y&txt=команда- отправка текста

[ip адрес]/lorasend?nd=Y&hex=команда - отправка в виде hex строки

[ip адрес]/lorasend?nd=Y&dec=команда  - отправка десятичных значений через запятую.

[ip адрес]/loraqueue - команды, находящиеся в очереди на отправку.

Параметр nd=Y задает номер node, кому отправить команду.  Все команды попадают в очередь(не больше 4) и при выходе на связь Node команда отправляется (Class A).


Управление через MQTT:

Аналогичные топики для записи команды в ноду десятичный режим через запятые и hex формат, где Х - номер ноды.

login/hostname/[set/]lorasenddecХ

login/hostname/[set/]lorasendhexХ


Работа в качестве Node (датчик)

Модуль может работать в полноценном режиме Node LoraWan с шифрованием и обменом MAC командами по Class A, работает с любыми шлюзами Lora. Так же доступен режим без шифрования(не рекомендуется), совместим только с Gateway Wifi-Iot прошивкой.

Node может работать в качестве удаленного хаба-датчика, где нет доступа к интернету, при этом собирать данные с других модулей ESP через wifi (используя VSENS или D2D) или работать как независимый модуль со спящим режимом. При этом WIFI, если не требуется, можно отключить в меню main, далее можно включить safe mode включающий  WIFI и веб только для настройки устройства .

Общие настройки режима работы:

Send Mask - шаблон(маска) отправки в текстовом виде(как в конструкторе строк). При включенной поддержке бинарных данных вместо данной настройки будет доступна ссылка на вкладку настроек отправки бинарных данных.

Send interval - период отправки данных. Не засоряйте эфир частыми отправками данных, допустима частая отправка только на минимальной мощности для тестов.

Режим без шифрования(open):

Node ADDR - номер данной ноды (датчика).

Destination ADDR - номер шлюза куда отправлять, по умолчанию 1.

Enable ACK - разрешить ACK для подтверждения доставки пакета.


Режим шифрования ABP:

Требуется ввести адрес устройства DevAddr , выданный сервером и ключи AppSkey, NwkSkey.


Режим шифрования OTAA:

Требуется ввести идентификаторы Device EUI и Application EUI , а так же ключ AppKey. При успешном соединении (join) сервер задает адрес устройства DevAddr.

Данный режим поддерживает только ESP8266(RTOS) и ESP32.


Отправка текстовых данных

Формат строки в поле Send Mask должен быть в виде X:YYY;X:YYY;X:YYY; , где X - тип метрики (доступны метрики t и h), YYY - значение метрики. Пример: t:_DHTT1_;h:_DHTH1_;


Отправка бинарных данных

Поддержка бинарного формата включается в шестеренке опции и заменяет текстовый формат.

В настройках Lora модуля будет доступна ссылка  Configure binary metrics на страницу формирования данных , где требуется выбрать необходимые датчики:

Требуется выбрать метрику из списка, при этом, если метрика имеет несколько номеров, то требуется указать это в поле Num.

Поле Num заполняется просто числом -номером датчика, например для датчика DS1820.

Или заполняется значением через дефис: 3-5, например для D2D, где первое число обозначает номер удаленного устройства , второе число - номер датчика на данном устройстве.

Если поле Num оставить пустым, то оно установиться в первый номер 1 или 1-1.

Ниже будет показана строка в виде списка количества байт на каждую метрику, а  так же готовый шаблон для вставки в Gateway на базе wifi-iot прошивки.

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

При ошибке датчика будет посылаться значение 25500. Возможно смещение данных при ошибке датчика, если значение датчика 4 байта(32 бита).


Прием команд и управление с Gateway

Прием данных включается дополнительно в шестеренке опции "Обратная связь" , доступно только на ESP8266(RTOS) и ESP32.  Передача команд доступна только при включенном шифровании ! При включенной данной опции модуль умеет отвечать на ack принятых команд (режим Confirmed) в LoraWan сети. Возможно добавить поддержку ADR(адаптация скорости). Поддерживается обмен MAC командами, в том числе и запрос времени с шлюза.

Поддерживаются бинарные команды:

Команда Назначение Пример
1 Перезагрузка модуля 1 - перезапуск модуля
3, XX, YY YY Управление PWM 3,1,255,0 -Установка 1 PWM в значение 255
4, XX, YY YY Управление значением термостата 4,2,25,0 -Установка 2 термостата в значение 25 градусов

5, XX, YY YY

Управление гистерезисом термостата 5,2,2,0 -Установка гистерезиса 2 термостата в значение 2 градусов

6, XX, YY ZZ

Управление планировщиком заданий 6,1,12,30 -Установка времени 12:00 на первом планировщике
16, XX, ZZ Управление GPIO 16,3,1 -Установка 3 GPIO в значение 1
17, YY YY

Установка интервала отправки Lora(в формате минут)

17,10,0 -Установка интервала отправки в значение 10 минут
18, YY YY Установка интервала отправки Lora(в формате секунд) 18,100,0 -Установка интервала отправки в значение 100 секунд
19, YY YY Установка интервала сна спящего режима(в формате минут) 19,10,0 -Установка интервала сна в значение 10 минут
20, YY YY Установка интервала сна спящего режима(в формате секунд) 20,100,0 -Установка интервала сна в значение 100 секунд
21, YY YY Управление температурой ПИД 21,26,0 -Установка температуры ПИД в 26 градусов

До 16 кода команды размер параметров команды строго 3 байта, с 16 - строго 2 байта. Можно подать несколько команд подряд.

Список команд позже может быть расширен.

Значение YY YY подразумевает отправку 2-х байтового значения(младший байт первый). Пример значение 300 - это 01 2С в hex , отправляем 2C 01

Обратите внимание, что , например на The Things Network, значения требуется отправлять в hex формате.


Работа в спящем режиме

Опция Lora в режиме Node поддерживает работу в спящем режиме, но для этого на данный момент требуется обязательно отключать wifi.

Примерное время работы с учетом инициализации радиомодуля и отправки данных - примерно 4 секунды. При подключении к сети(Join) в режиме OTAA время достигает до 10 секунд.

План частот

Для работы в качестве node в сети LoraWan с полноценными многоканальными шлюзами требуется список частот для работы в конкретной сети. В этом случае частоты перебираются по списку каждую передачу. При использовании одноканального шлюза опцию использовать не требуется.

Данная настройка находится в шестеренке и включается дополнительно на вкладке опции. 

Сейчас план частот имеет следующие варианты:

0 - нет плана частот, одноканальный режим.

1 - План частот для России 868 мгц.

2 - План частот для Европы 868 мгц

При использовании плана частот настройка частоты в прошивке не действует. Доступно как на ABP так и на OTAA

Надстройка для Lopy

Включает необходимое управление wifi антенной (16 GPIO), инвертирует GPIO RESET для Lora радиомодуля.

Используемые GPIO: 18 - RESET, 17 - SS. GPIO 23 - GPIO INT

Полезные ссылки

http://espmeteo.ru/loragate/ 

https://github.com/maksms/wifi-iot-cda/blob/master/rapid/lora/README.md