Использование контроллера Lavritech L1 Lite в качестве LoRaWAN Gateway с контроллером Wiren Board

Материал из Wiren Board

Это черновик страницы. Последняя правка сделана 03.06.2024 пользователем A.Ksenofontov.

Общая информация

LoRaWAN - это беспроводной протокол для домашней и коммерческой автоматизации. Это беспроводная технология, которая используется для передачи данных на дальние расстояния от 1 до 15 км.

На физическом уровне основана на методе модуляции LoRa (ЛоРа) и разработана специально для использования в интернете вещей (IoT).

Описание

Lavritech L1 Lite

Для использования LoRaWAN устройств с контроллером Wiren Board понадобится контроллер Lavritech L1 Lite, который будет выступать в качестве LoRaWAN шлюза.

Контроллер Lavritech L1 Lite должен содержать модули LoRaWAN и ModBus Slave, и в составе прошивки должны быть включены соответствующие программные модули.

В качестве оконечного устройства могут выступать разнообразные устройства: датчики температуры, охранные устройства, приборы учёта и др. Обратите внимание устройства должны поддерживать протокол LoRaWAN, не все устройства работающие на физическом уровне LoRa поддерживают LoRaWAN.

Настройка контроллера Lavritech L1 Lite в качестве LoRaWAN шлюза

  1. Подключится к web-интерфейсу контроллера Lavritech L1 Lite (инструкция производителя)
    • Нажмите и удерживайте на материнской плате кнопку «USER» и затем нажмите кнопку «RESET», так контроллер перейдёт в режим точки доступа WiFi, на устройстве с WiFi модемом найдите и подключитесь к открытой WiFi сети "Lavritech_L1", web-интерфейс будет доступен по ip адресу 192.168.4.1
    • Так же возможно проводное ethernet подключение, Lavritech_L1 получит ip адрес от вашего DHCP-сервера и web интерфейс будет доступен по его ip адресу.
  2. Настройка котроллера Lavritech L1 Lite в режим шлюза LoRaWAN (инструкция производителя)
    1. В web-интерфейсе перейдите Config:LoRa
    2. В первой строке выбрать Lora Gateway
    3. Во второй строке выбрать ABP

Подключение оконечных устройств в LoRaWAN шлюз по ABP

ABP(Activation by Personalization) — поддержка шифрования со статическими ключами. Работа в режиме ABP — это наилучший компромисс между безопасностью передачи данных и удобством (простотой) работы. Для работы в шлюз должны быть записаны DevAddr, AppSkey, NwkSkey полученные от производителя оконечного устройства (часто указаны на наклейке или в паспорте устройства).

  1. В web-интерфейсе Lavritech L1 Lite перейти Lora-Nodes option, выбрать из номеров Node (каждый номер соответствует подключенному оконечному устройству)
  2. Заполнить графы
    • 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

Вега ТД-11

Подключаемо оконечное устройство - датчик температуры Вега ТД-11.

DevAddr, AppSkey, NwkSkey этого устройства указаны в паспорте устройства, а так же их можно считать или сгенерировать новые в ПО Vega LoRaWAN Configurator, при подключении датчика к ПК.

Для заполнения графы Data structure, находим таблицу "Пакет с текущими показаниями"

Vega td11 register map.png

Соответственно наша запись в поле Data structure будет такая : "BBBLTBBBB"

Показания в меню

Где

  1. B - Тип пакета
  2. B - Заряд батареи в %
  3. B - Превышение лимитов ("0" - нет превышения, "1" - есть превышение)
  4. L - Время снятия показаний, передаваемых в данном пакете (unixtime UTC)
  5. T - Температура в °C, умноженная на 10
  6. B - Нижний температурный лимит
  7. B - Верхний температурный лимит
  8. B - Причина передачи пакета
  9. B - Состояние входов (битовое поле)

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

Передача показаний от шлюза в контроллер WB по ModBus

Настройка ModBus_slave на контроллера Lavritech L1 Lite

Открыть Config: ModBus_slave-Config RTU

  1. Address - ModBus адрес контроллера Lavritech L1 Lite
  2. Speed RS485 - Скорость обмена на шине

Привязка данных полученных от шлюзом к регистрам ModBus

В настойках шлюза выбираем ModBus_slave, здесь происходит привязка полученных данных к регистрам ModBus, которые будут доступны для чтения.

  1. Регистр - по этому адресу будет доступны данные при запросе ModBus командой чтения Input registrer(0x04)
  2. Далее выбор источника данных - Lora
  3. Привязка регистров 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.
  • Считать данный со шлюза можно создав устройство веб интерфейс или создав шаблон

Пример без шаблона

  1. Открыть web-интерфейс контроллера WB-Настройки-Конфигурационные файлы-Настройка драйвера serial-устройств(необходимы права Администратора) - Добавить устройство
  2. Порт - RS485-1 или RS485-2, в соответствии к какой шине подключен шлюз, тип устройства - Произвольные устройства -Устройство с протоколом Modbus. Нажать "добавить устройство".
  3. Адрес устройства - адрес контроллера Lavritech L1 Lite
  4. Свойства - название устройства, ввести название устройства "Температура на улице"
  5. Нажатием "+канал" создаём канал устройства
  6. Заполняем поля
    • Имя-Заряд батареи
    • Тип - value(range??? проверить работу)
    • Тип регистра - input
    • Адрес(десятичное значение) - 0
  7. Нажатием "+канал" создаём ещё один канал устройства
  8. Заполняем поля
    • Имя-Температура
    • Тип - temperature
    • тип регистра - input
    • адрес(десятичное значение) - 2
    • множитель - 10
  9. Нажать - Сохранить настройки
  10. В web-интерфейсе WB выбрать Устройства, увидеть устройство "Температура на улице" с полями "Заряд батареи" и "Температура"
  11. Готово!

Пример с созданием шаблона

Для удобства использования и редактирования можно создать шаблон по инструкции. Пример шаблона:

{
    "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": "Температура"
            }
        }
    }
}

Передача показаний от шлюза в контроллер WB по MQTT

Для передачи данных от шлюза к контроллеру WB можно вместо ModBus использовать MQTT Для этого контроллер Lavritech L1 Lite должен иметь сетевой доступ к контроллеру WB (обычно используется при использовании обоих котроллеров в одной локальной сети)

  1. В настройках Lavritech L1 Lite перейти к настройке публикаций сообщений в брокер MQTT установленный на WB Config:Servers.
  2. Включить функцию Enable send MQTT.
  3. Ввести ip адрес, порт, логин и пароль от MQTT брокера установленного на WB (по умолчанию порт 18883, логин и пароль отсутствуют).
  4. Нажать SET, через несколько секунд в первой строчке должно быть сообщение "OK", если подключение прошло успешно.
  5. Данные от шлюза теперь публикуются в MQTT брокере контроллера WB (для удобства просмотра можно использовать [Программа для работы с MQTT MQTT Explorer]).
  6. Для получения данных в web-интерфейсе WB необходимо создать виртуальное устройство и связать его каналы с топиком в MQTT брокере с помощью правила wb-rules

Пример с датчиком Вега ТД-11

// тут надо доделать шаблон
defineVirtualDevice('lora-device', {
    title: 'lorawanDT11_wbrules' ,
    cells: {
      rssi: {
        title: "rssi",
        type: "value",
        value: "0",
        units:"dB"
        
      }
    }
});

trackMqtt("/Lavritech_L1/rssi", function(message) {
  dev["lora-device/rssi"]=Number(message.value);
});

В web-интерфейсе WB на панели Устройства теперь существует наш датчик температуры.