LoRaWAN: различия между версиями

Материал из Wiren Board
(Основные пункты написаны, требуют корректировки)
 
(Перенаправление на Lavritech L1 Lite LoRaWAN)
Метка: новое перенаправление
 
(не показаны 44 промежуточные версии 2 участников)
Строка 1: Строка 1:
{{Draft}}
#REDIRECT [[Lavritech_L1_Lite_LoRaWAN]]
{{DISPLAYTITLE: Использование контроллера Lavritech L1 Lite в качестве LoRaWan Gateway с контроллером Wiren Board}}
== Общая информация ==
LoRaWAN -  это беспроводной протокол для домашней и коммерческой автоматизации. Это беспроводная технология, которая используется для передачи данных на дальние расстояния от 1 до 15 км.
 
На физическом уровне основана на методе модуляции LoRa (ЛоРа) и разработана специально для использования в интернете вещей (IoT).
 
== Описание ==
 
Для использования LoRaWan устройств с контроллером Wiren Board понадобится:
 
#Контроллер Lavritech L1 Lite
 
#Дополнительное ПО:
 
#*Шаблон wb-mqtt-serial ???
 
Инструкции по установке смотрите ниже на этой странице.
 
== Настройка контроллера Lavritech L1 Lite в качестве LoRaWAN шлюза ==
 
#Подключится к web интерфейсу контроллера Lavritech L1 Lite согласно [http://wiki.lavritech.com/soft/lavritech/firmware/setup/ инструкции производителя]
#Настроить котроллер Lavritech L1 Lite в режим шлюза LoRaWAN  согласно [http://wiki.lavritech.com/soft/lavritech/firmware/options/lora/ инструкции производителя]
== Подключение оконечных устройств в LoRaWAN шлюз по ABP ==
 
ABP(Activation by Personalization) — поддержка шифрования со статическими ключами. Работа в режиме ABP — это наилучший компромисс между безопасностью передачи данных и удобством (простотой) работы.
 
 
# В web интерфейсе Lavritech L1 Lite перейти Lora-Nodes option, выбрать из номеров Node (каждый номер соответствует подключенному оконечному устройству)
# Заполнить графы
#:DevAddr - адрес устройства
#:TimeOut - оставить по умолчанию 65535 сек
#:AppSkey - сессионный ключ
#:NwkSkey - сетевой сессионный ключ
#:Data structure - здесь нужно описать структуру получаемого сообщения, можно найти в документации на оконечного устройства
Пример: Подключаемо оконечное устройство - датчик температуры Вега ТД-11, находим таблицу "Пакет с текущими показаниями"
 
[[Image: Vega td11 register map.png |600px|center|]]
 
из документации на Lavritech L1 Lite
Типы бинарных данных
 
Ниже представлена расшифровка основные типов бинарных данных:
 
*T — Температура, 2 байта int, значение умножено на 10 (1 знак после запятой).
*H — Влажность, 2 байта uint, значение умножено на 10 (1 знак после запятой).
*L — Long данные, 4 байта, например, счетчики импульсов.
*С — Аналогично L.
*А — АЦП или другие 16 битные данные, 2 байта.
*B — Однобайтовое значение.
*G — состояние GPIO.
*1..9 — количество пропускаемых байт, эти данные не будут использоваться. Также данные не используются, если названия переменных указать в нижнем регистре.
 
Дополнительные флаги (дописываются перед основными):
 
*R — обратный порядок байтов (старший байт первый), т. е. если принимаем температуру то пишем не просто T, а RT, если старший байт передаётся первым.
*S — значение с 2 знаками после запятой.
 
Соответственно наша запись в поле Data structure будет такая : "BBBLTBBBB"
Где
# B - Тип пакета
# B - Заряд батареи в %
# B - Превышение лимитов ("0" - нет превышения, "1" - есть превышение)
# L - Время снятия показаний, передаваемых в данном пакете (unixtime UTC)
# T - Температура в °C, умноженная на 10
# B - Нижний температурный лимит
# B - Верхний температурный лимит
# B - Причина передачи пакета
# B - Состояние входов (битовое поле)
 
 
OTAA(Over-The-Air Activation) — поддержка шифрования с обменом ключей (обычно не используется)
== Передача показаний от шлюза в контроллер WB по ModBus ==
=== Настройка ModBus_slave на контроллера Lavritech L1 Lite ===
Открыть Config: ModBus_slave-Config RTU
# Address - ModBus адрес контроллера Lavritech L1 Lite
# Speed RS485 - Скорость обмена на шине
=== Привязка данных полученных от шлюзом к регистрам ModBus ===
В настойках шлюза выбираем ModBus_slave, здесь происходит привязка полученных данных к регистрам ModBus, которые будут доступны для чтения.
# Регистр - по этому адресу будет доступны данные при запросе ModBus командой чтения Input registrer(0x04)
# Далее выбор источника данных - Lora 
# Привязка регистров Num: A-B, где A - номер ноды, B -  регистр ноды
В соответствии с нашим примером установим:
*1 Registr : 0 Lora Num: 1-2 (Заряд батареи в %)
*2 Registr : 2 Lora Num: 1-5 (Температура в °C, умноженная на 10)
=== Подключение контроллера Lavritech L1 Lite к контроллеру WB по шине RS-485 ModBus ===
#Подключите устройство к шине RS-485 с соблюдением распиновки, указанной на Lavritech L1 Lite. A-A, B-B.
 
Считать данный со шлюза можно создав устройство [[RS-485:Configuration via Web Interface#Устройство без шаблона | Веб интерфейс]] или создав шаблон
==== Пример без шаблона ====
#Открыть web интерфейс контроллера WB-Настройки-Конфигурационные файлы-Настройка драйвера serial-устройств(необходимы права Администратора) - Добавить устройство
#Порт - RS485-1 или RS485-2, в соответствии к какой шине подключен шлюз, тип устройства - Произвольные устройства -Устройство с протоколом Modbus. Нажать "добавить устройство".
#Адрес устройства - адрес контроллера Lavritech L1 Lite
#Свойства - название устройства, ввести название устройства "Температура на улице"
#Нажатием "+канал" создаём канал устройства
#Заполняем поля
#*Имя-Заряд батареи
#*Тип - value(range??? проверить работу)
#*Тип регистра - input
#*Адрес(десятичное значение) - 0
#Нажатием "+канал" создаём ещё один канал устройства
#Заполняем поля
#*Имя-Температура
#*Тип - temperature
#*тип регистра - input
#*адрес(десятичное значение) - 2
#*множитель - 10
#Нажать - Сохранить настройки
#В web интерфейсе WB выбрать Устройства, увидеть устройство "Температура на улице" с полями "Заряд батареи" и "Температура"
#Готово!
====Пример с созданием шаблона ====
Для удобства использования и редактирования можно создать шаблон [[Connecting Third Party Devices to Wiren Board | по инструкции]].
Пример шаблона:
<syntaxhighlight lang="json">
{
    "device_type": "lora_temperature_sensor",
    "title": "LoRa Temperature Sensor",
    "group": " g-climate-sensor",
    "device": {
        "name": "LoRa temperature sensor",
        "id": "lora_temperature_sensor",
        "channels": [
            {
                "name": "Battery Charge",
                "reg_type": "input",
                "address": 0,
                "type": "range",
                "units": "%",
                "format": "u16"
            },
            {
                "name": "Temperature",
                "reg_type": "input",
                "address": 2,
                "type": "value",
                "units": "deg C",
                "format": "u16",
                "scale": 10
            }
        ],
        "translations": {
            "ru": {
                "LoRa Temperature Sensor": "LoRa датчик температуры",
                "Battery Charge": "Заряд батареи",
                "Temperature1": "Температура"
            }
        }
    }
}
</syntaxhighlight>

Текущая версия на 18:04, 5 июня 2024

Перенаправление на: