LoRaWAN: различия между версиями
(Перенаправление на Lavritech L1 Lite LoRaWAN) Метка: новое перенаправление |
|||
(не показано 19 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
# | {{Draft}} | ||
{{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 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> |
Версия 18:06, 3 июня 2024
Это черновик страницы. Последняя правка сделана 03.06.2024 пользователем A.Ksenofontov.
Общая информация
LoRaWAN - это беспроводной протокол для домашней и коммерческой автоматизации. Это беспроводная технология, которая используется для передачи данных на дальние расстояния от 1 до 15 км.
На физическом уровне основана на методе модуляции LoRa (ЛоРа) и разработана специально для использования в интернете вещей (IoT).
Описание
Для использования LoRaWAN устройств с контроллером Wiren Board понадобится контроллер Lavritech L1 Lite, который будет выступать в качестве LoRaWAN шлюза.
Контроллер Lavritech L1 Lite должен содержать модули LoRaWAN и ModBus Slave, и в составе прошивки должны быть включены соответствующие программные модули.
В качестве оконечного устройства могут выступать разнообразные устройства: датчики температуры, охранные устройства, приборы учёта и др. Обратите внимание устройства должны поддерживать протокол LoRaWAN, не все устройства работающие на физическом уровне LoRa поддерживают LoRaWAN.
Настройка контроллера Lavritech L1 Lite в качестве LoRaWAN шлюза
- Подключится к web-интерфейсу контроллера Lavritech L1 Lite (инструкция производителя)
- Нажмите и удерживайте на материнской плате кнопку «USER» и затем нажмите кнопку «RESET», так контроллер перейдёт в режим точки доступа WiFi, на устройстве с WiFi модемом найдите и подключитесь к открытой WiFi сети "Lavritech_L1", web-интерфейс будет доступен по ip адресу 192.168.4.1
- Так же возможно проводное ethernet подключение, Lavritech_L1 получит ip адрес от вашего DHCP-сервера и web интерфейс будет доступен по его ip адресу.
- Настройка котроллера Lavritech L1 Lite в режим шлюза LoRaWAN (инструкция производителя)
- В 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
Подключаемо оконечное устройство - датчик температуры Вега ТД-11.
DevAddr, AppSkey, NwkSkey этого устройства указаны в паспорте устройства, а так же их можно считать или сгенерировать новые в ПО Vega LoRaWAN Configurator, при подключении датчика к ПК.
Для заполнения графы Data structure, в инструкции надатчик, находим таблицу Пакет с текущими показаниями
Соответственно наша запись в поле Data structure будет такая : BBBLTBBBB
Где:
- 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, которые будут доступны для чтения.
- Регистр - по этому адресу будет доступны данные при запросе 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.
- Считать данный со шлюза можно создав устройство через веб интерфейс или создав шаблон
Пример без шаблона
- Открыть web-интерфейс контроллера WB-Настройки-Конфигурационные файлы-Настройка драйвера serial-устройств(необходимы права Администратора) - Добавить устройство
- Порт - RS485-1 или RS485-2, в соответствии к какой шине подключен шлюз, тип устройства - Произвольные устройства -Устройство с протоколом Modbus. Нажать "добавить устройство".
- Адрес устройства - адрес контроллера Lavritech L1 Lite
- Свойства - название устройства, ввести название устройства "Температура на улице"
- Нажатием "+канал" создаём канал устройства
- Имя-Заряд батареи
- Заполняем поля
- Тип - range
- Тип регистра - input
- Адрес (десятичное значение) - 0
- Нажатием "+канал" создаём ещё один канал устройства
- Заполняем поля
- Имя-Температура
- Тип - temperature
- тип регистра - input
- Адрес (десятичное значение) - 2
- множитель - 0.1
- Нажать - Сохранить настройки
- В web-интерфейсе WB выбрать Устройства, увидеть устройство "Температура на улице" с полями "Заряд батареи" и "Температура"
Пример с созданием шаблона
Для удобства использования и редактирования можно создать шаблон по инструкции. Пример шаблона:
{
"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": "Температура"
}
}
}
}
Передача показаний от шлюза в контроллер 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).
- Для получения данных в web-интерфейсе WB необходимо создать виртуальное устройство и связать его каналы с топиком в MQTT брокере с помощью правила wb-rules
Пример правила с датчиком Вега ТД-11
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);
});