|
Метка: новое перенаправление |
(не показано 25 промежуточных версий 2 участников) |
Строка 1: |
Строка 1: |
| {{Draft}}
| | #REDIRECT [[Lavritech_L1_Lite_LoRaWAN]] |
| {{DISPLAYTITLE: Использование контроллера Lavritech L1 Lite в качестве LoRaWAN Gateway с контроллером Wiren Board}}
| |
| == Общая информация ==
| |
| LoRaWAN - это беспроводной протокол для домашней и коммерческой автоматизации. Это беспроводная технология, которая используется для передачи данных на дальние расстояния от 1 до 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 L1 Lite
| |
| #Свойства - название устройства, ввести название устройства "Температура на улице"
| |
| #Нажатием "+канал" создаём канал устройства
| |
| #Заполняем поля
| |
| [[Файл:Lavritech modbus-serial-config-1.png|300px|thumb|right|Настройка канала батареи]]
| |
| #*Имя-Заряд батареи
| |
| #*Тип - range
| |
| #*Тип регистра - input
| |
| #*Адрес (десятичное значение) - 0
| |
| #Нажатием "+канал" создаём ещё один канал устройства
| |
| #Заполняем поля
| |
| [[Файл:Lavritech modbus-serial-config-2.png|300px|thumb|right|Настройка канала температуры]]
| |
| #*Имя-Температура
| |
| #*Тип - temperature
| |
| #*тип регистра - input
| |
| #*Адрес (десятичное значение) - 2
| |
| #*множитель - 0.1
| |
| #Нажать - Сохранить настройки
| |
| #В web-интерфейсе WB выбрать Устройства, увидеть устройство "Температура на улице" с полями "Заряд батареи" и "Температура"
| |
| [[Файл:Vega td11 in WB.png|300px|Результат]]
| |
| | |
| ====Пример с созданием шаблона ====
| |
| Для удобства использования и редактирования можно создать шаблон [[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>
| |