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

Материал из Wiren Board
(Перенаправление на Lavritech L1 Lite LoRaWAN)
Метка: новое перенаправление
 
(не показано 15 промежуточных версий 2 участников)
Строка 1: Строка 1:
{{Draft}}
#REDIRECT [[Lavritech_L1_Lite_LoRaWAN]]
{{DISPLAYTITLE: Использование контроллера Lavritech L1 Lite в качестве LoRaWAN Gateway с контроллером Wiren Board}}
== Общая информация ==
LoRaWAN —  это беспроводная технология передачи данных с дальностью действия до 15 км. Используется в домашней и коммерческой автоматизации.
 
На физическом уровне основана на методе модуляции LoRa (ЛоРа) и разработана специально для использования в интернете вещей (IoT).
 
== Описание ==
[[Файл:Lavritech L1 Lite.png|300px|thumb|right|Lavritech L1 Lite]]
Для использования LoRaWAN устройств с контроллером Wiren Board понадобится контроллер Lavritech L1 Lite, который будет выступать в качестве LoRaWAN шлюза.
 
Контроллер Lavritech L1 Lite должен содержать модули LoRaWAN и ModBus Slave, и в составе прошивки должны быть включены соответствующие программные модули.
 
В качестве оконечного устройства могут выступать разнообразные устройства: датчики температуры, охранные устройства, приборы учёта и др.
{{note|info| Обратите внимание устройства должны поддерживать протокол LoRaWAN, не все устройства работающие на физическом уровне LoRa поддерживают LoRaWAN.}}
== Настройка контроллера Lavritech L1 Lite в качестве LoRaWAN шлюза ==
#Подключится к web-интерфейсу контроллера Lavritech L1 Lite ([http://wiki.lavritech.com/soft/lavritech/firmware/setup/ инструкция производителя])
#* Нажмите и удерживайте на материнской плате кнопку «USER» и затем нажмите кнопку «RESET», так контроллер перейдёт в режим точки доступа WiFi, на устройстве с WiFi модемом найдите и подключитесь к открытой WiFi сети "Lavritech_L1", web-интерфейс будет доступен по ip адресу 192.168.4.1
#*Так же возможно проводное ethernet подключение, Lavritech_L1 получит ip адрес от вашего DHCP-сервера и web интерфейс будет доступен по его ip адресу.
#Настройка котроллера Lavritech L1 Lite в режим шлюза LoRaWAN ([http://wiki.lavritech.com/soft/lavritech/firmware/options/lora/ инструкция производителя])
## В web-интерфейсе перейдите Config:LoRa
## В первой строке выбрать Lora Gateway
## Во второй строке выбрать ABP
== Подключение оконечных устройств в LoRaWAN шлюз по ABP ==
ABP(Activation by Personalization) — поддержка шифрования со статическими ключами. Работа в режиме ABP — это наилучший компромисс между безопасностью передачи данных и удобством (простотой) работы. Для работы в шлюз должны быть записаны DevAddr, AppSkey, NwkSkey полученные от производителя оконечного устройства (часто указаны на наклейке или в паспорте устройства).
 
# В web-интерфейсе Lavritech L1 Lite перейти Lora-Nodes option, выбрать из номеров Node (каждый номер соответствует подключенному оконечному устройству)
# Заполнить графы
#*DevAddr - адрес устройства
#*TimeOut - оставить по умолчанию 65535 секунд (если за это время шлюз не получал данных от оконечного устройства - выводится сообщение об ошибке)
#*AppSkey - сессионный ключ
#*NwkSkey - сетевой сессионный ключ
#*Data structure - здесь нужно описать структуру получаемого сообщения, можно найти в документации на оконечного устройства
Ниже представлена расшифровка основные типов бинарных данных из документации на Lavritech L1 Lite, для заполнения поля Data structure:
*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 знаками после запятой.
====Пример подключения оконечного устройства к шлюзу LoRaWAN====
[[Файл:Temperature_sensor_vega_td11.png|300px|thumb|right|Вега ТД-11]]
Подключаемо оконечное устройство - датчик температуры Вега ТД-11.
 
DevAddr, AppSkey, NwkSkey этого устройства указаны в паспорте устройства,  а так же их можно считать или сгенерировать новые в ПО Vega LoRaWAN Configurator, при подключении датчика к ПК.
 
Для заполнения графы Data structure, в инструкции надатчик, находим таблицу ''Пакет с текущими показаниями''
[[Image: Vega td11 register map.png |600px|center|]]
Соответственно наша запись в поле Data structure будет такая : '''BBBLTBBBB'''
[[Файл:Lavritech lorawan vega sensor.png|300px|thumb|right|Показания в меню]]
 
Где:
# B - Тип пакета
# B - Заряд батареи в %
# B - Превышение лимитов ("0" - нет превышения, "1" - есть превышение)
# L - Время снятия показаний, передаваемых в данном пакете (unixtime UTC)
# T - Температура в °C, умноженная на 10
# B - Нижний температурный лимит
# B - Верхний температурный лимит
# B - Причина передачи пакета
# B - Состояние входов (битовое поле)
На главной странице шлюза мы должны получить показания с датчика
 
== Передача показаний от шлюза в контроллер WB по ModBus ==
=== Настройка ModBus_slave на контроллера Lavritech L1 Lite ===
Открыть Config: ModBus_slave-Config RTU
# Address - ModBus адрес контроллера Lavritech L1 Lite
# Speed RS485 - Скорость обмена на шине
=== Привязка данных полученных от шлюзом к регистрам ModBus ===
В настойках шлюза выбираем ModBus_slave, здесь происходит привязка полученных данных к регистрам ModBus, которые будут доступны для чтения.
[[Файл:Lavritech modbus slave config.png|300px|thumb|right|Config ModBus Slave (RTU)]]
# Регистр - по этому адресу будет доступны данные при запросе 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.
*Считать данный со шлюза можно создав устройство через [[RS-485:Configuration via Web Interface#Устройство без шаблона | веб интерфейс]] или [[Connecting Third Party Devices to Wiren Board#Создание шаблона | создав шаблон]]
==== Пример без шаблона ====
#Открыть web-интерфейс контроллера WB-Настройки-Конфигурационные файлы-Настройка драйвера serial-устройств(необходимы права Администратора) - Добавить устройство
#Порт - RS485-1 или RS485-2, в соответствии к какой шине подключен шлюз, тип устройства - Произвольные устройства -Устройство с протоколом Modbus. Нажать '''добавить устройство'''.
[[Файл:Lavritech modbus-serial-config-1.png|300px|thumb|right|Настройка канала батареи]]
[[Файл:Lavritech modbus-serial-config-2.png|300px|thumb|right|Настройка канала температуры]]
 
#Адрес устройства - адрес контроллера Lavritech L1 Lite
#Свойства - название устройства, ввести название устройства '''Температура на улице'''
#Нажатием '''+канал''' создаём канал устройства
#*Имя-Заряд батареи
#Заполняем поля
#*Тип - range
#*Тип регистра - input
#*Адрес (десятичное значение) - 0
#Нажатием "+канал" создаём ещё один канал устройства
#Заполняем поля
#*Имя - Температура
#*Тип - temperature
#*тип регистра - input
#*Адрес (десятичное значение) - 2
#*множитель - 0.1
#Нажать - Сохранить настройки
#В web-интерфейсе WB выбрать Устройства, увидеть устройство '''Температура на улице''' с полями ''Заряд батареи'' и ''Температура''.
 
 
[[Файл:Vega td11 in WB.png|300px|thumb|center|Результат]]
 
====Пример с созданием шаблона ====
Для удобства использования и редактирования можно создать шаблон [[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",
                "format": "u16"
            },
            {
                "name": "Temperature",
                "reg_type": "input",
                "address": 2,
                "type": "value",
                "units": "deg C",
                "format": "u16",
                "scale": 0.1
            }
        ],
        "translations": {
            "ru": {
                "LoRa Temperature Sensor": "LoRa датчик температуры",
                "Battery Charge": "Заряд батареи",
                "Temperature": "Температура"
            }
        }
    }
}
</syntaxhighlight>
 
== Передача показаний от шлюза в контроллер WB по MQTT==
Для передачи данных от шлюза к контроллеру WB можно вместо ModBus использовать MQTT
Для этого контроллер Lavritech L1 Lite должен иметь сетевой доступ к контроллеру WB (обычно используется при использовании обоих котроллеров в одной локальной сети)
#В настройках Lavritech L1 Lite перейти к настройке публикаций сообщений в брокер MQTT установленный на WB Config:Servers.
#Включить функцию Enable send MQTT.
#Ввести ip адрес, порт, логин и пароль от MQTT брокера установленного на WB (по умолчанию порт 18883, логин и пароль отсутствуют).
#Нажать SET, через несколько секунд в первой строчке должно быть сообщение '''OK''', если подключение прошло успешно.
#Данные от шлюза теперь публикуются в MQTT брокере контроллера WB (для удобства просмотра можно использовать [[MQTT Explorer|MQTT Explorer]]).
#Для получения данных в web-интерфейсе WB необходимо создать виртуальное устройство и связать его каналы с топиком в MQTT брокере с помощью [[Движок правил wb-rules | правила wb-rules]]
====Пример правила с датчиком Вега ТД-11====
<syntaxhighlight lang="json">
defineVirtualDevice('lora-device', {
    title: 'Vega DT11' ,
    cells: {
      temperature: {
        title: "Temperature",
        type: "value",
        value: "0",
        units:"deg C",
        scale:0.1
       
      },
      battery:{
        title: "Battery",
        type: "range",
        value: "0",
        readonly:true
      }
    }
});
 
trackMqtt("/Lavritech_L1/lors0102", function(message) {
  dev["lora-device/battery"]=Number(message.value);
});
trackMqtt("/Lavritech_L1/lors0105", function(message) {
  dev["lora-device/temperature"]=Number(message.value);
});
</syntaxhighlight>
== Полезные ссылки ==
* [https://lavritech.com/ Официальный сайт Lavritech]
* [https://iotvega.com/ Официальный сайт Vega IoT]
{{Wbincludes:Device Page Footer}}

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

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