Настройка частной сети LoRaWAN с использованием шлюза WisGate Connect

В данном руководстве объясняется, как развернуть частную сеть LoRaWAN на базе шлюза RAKwireless WisGate Connect с процессорным модулем Raspberry Pi CM4, используя Docker или Portainer для установки NodeRED, InfluxDB, Grafana и других компонентов, необходимых для конфигурации шлюза.

WisGate Connect представляет собой многофункциональный шлюз с интерфейсами Gigabit и 2.5Gbps Ethernet, а также опциональными беспроводными технологиями, включая LoRaWAN, 4G LTE, 5G, WiFi 6, Zigbee, WiFi HaLow и другие, подключаемые через слоты Mini PCIe или M.2, разъемы расширения WisBlock IO и 40-контактный разъем Raspberry Pi HAT. Далее подробно рассматриваются характеристики шлюза, но при необходимости можно сразу перейти к разделу конфигурации частной сети LoRaWAN .

Распаковка, характеристики и устройство WisGate Connect

Wisgate Connect Gateway Private LoRaWAN network

Комплект от RAKwireless включает модель с Raspberry Pi CM4 (4 ГБ ОЗУ, 32 ГБ eMMC), GPS- и LoRa-антенны, а также металлический корпус для внутренней установки.

Wisgate Connect Gateway Unboxing

В поставку также входят блок питания и кабели.

RAK Wisgate Connect ports SIM card slots

На передней панели шлюза расположены OLED-дисплей, три слота для SIM-карт, разъемы антенн GPS/LoRa и слот для microSD-карты. Имеются также два дополнительных антенных отверстия, не используемых в данной конфигурации.

RAK Wisgate Connect Ethernet USB Power

Задняя панель оснащена двумя портами питания (клеммная колодка на 2 контакта и разъем DC), заголовком UART, индикаторами, выходом HDMI, портами Gigabit Ethernet и 2.5GbE, портом USB-C для прошивки модуля Raspberry Pi CM4, тремя портами USB 3.0 и двумя неиспользуемыми антенными отверстиями.

RAK Wisgate Connect carrier board Raspberry Pi CM4

Разборка шлюза демонстрирует модули Raspberry Pi CM4 и LoRa, а также возможности расширения: два дополнительных слота mini PCIe, два слота WisBlock , пространство для внутренней Raspberry Pi HAT, поддержку опционального PoE HAT и другие элементы.

Напоминаем основные характеристики платы WisGate Connect (RAK7391) :

  • SoM – Raspberry Pi CM4 с 4-ядерным процессором Broadcom BCM2711 Cortex-A72 @ 1.5 ГГц, 1-8 ГБ DDR4, опционально 8-32 ГБ eMMC, опционально WiFi 5 и Bluetooth 5.0 LE
  • Накопитель – Слот для microSD-карты (только для модулей CM4 Lite )
  • Видеовыход – HDMI 2.0 (до 4Kp60), 22-контактный разъем MIPI DSI
  • Интерфейс камеры – 2x 22-контактных разъема MIPI CSI
  • Сетевые интерфейсы
    • Проводные – Порт Gigabit Ethernet RJ45 с поддержкой PoE, порт 2.5GbE RJ45
    • Опционально 802.11 b/g/n/ac/ax WiFi 6 и BLE 5.0 на модуле RPi CM4
    • Опционально LoRaWAN, 4G LTE, 5G, WiFi 6, Zigbee, WiFi HaLow и др. через слоты mini PCIe, M.2 и/или разъем Raspberry Pi
  • USB – 2x порта USB 3.0, 1x порт USB 2.0, 1x порт USB Type-C для обновления прошивки RPi CM4
  • Расширение
    • 40-контактный совместимый с Raspberry Pi разъем
    • 3x слота Mini PCIe
    • 1x слот M.2 B-key
    • 2x разъема WisBlock IO
  • Прочее – Встроенные часы реального времени с разъемом батареи, монитор температуры, зуммер, контроллер вентилятора 12В/5В, монитор напряжения, перемычки конфигурации
  • Питание
    • Вход
      • 10-28В постоянного тока через разъем Phoenix)
      • IEEE 802.3at/bt активный PoE
    • Выход 5В/12В для периферии
  • Габариты – Плата: 170 x 170 мм (форм-фактор Mini-ITX)
  • Вес – 212 грамм
  • Температурный диапазон – -20°C до 85°C (кроме USB 3.0 и зуммера, рассчитанных на 0°C-70°C)
Wisgate Connect Block Diagram
Блок-схема Wisgate Connect

Аппаратная совместимость и программная архитектура

В полученной модели RAKwireless установлены модуль LoRaWAN RAK5146, OLED-дисплей и Raspberry Pi Compute Module 4, но шлюз может быть расширен любыми аппаратными модулями и аксессуарами, перечисленными в таблице ниже.

Wisgate WisConnect hardware compatibility list

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

WisGate software architecture

Подключение к ОС RAKPiOS через Secure Shell (SSH)

Существует два способа подключения к шлюзу WisGate Connect:

  1. Через порт RJ45 Ethernet
  2. Через точку доступа WiFi

Выберем второй вариант. Подключитесь к точке доступа «RAK_1D4F» с паролем «rakwireless». В Windows потребуется выбрать «Подключиться с использованием ключа безопасности».

Windows 11 connect using a security key

IP-адрес интерфейса vlan0 отобразится на OLED-экране шлюза. Этот адрес используется для SSH-подключения через порт 22 (например, с помощью Putty в Windows).

Wisgate Connect SSH

Доступ к оболочке RAKPiOS выполняется под именем пользователя «rak» и паролем «changeme», который необходимо изменить при первом входе.

RAKPiOS shell

Дополнительные сведения об RAKPiOS можно получить командой:

rak@rakpios:~ $ cat /etc/os-release

RAKPiOS Debian 11

Исходный код ОС доступен на GitHub .

Настройка частной сети LoRaWAN с использованием Wisgate Connect

Способ 1: Установка через командную строку с Docker

RAKwireless предоставляет шесть примеров Docker compose для развертывания на шлюзе WisGate Connect RAK7391.

  1. Dual_Band_LoRaWAN_Gateway – Автономный шлюз с поддержкой субгигагерцевых и 2.4 ГГц концентраторов LoRaWAN, TailScale для удаленного доступа и The Things Stack LNS.
  2. MQTT_to_ModBUS_bridge – Мост ModBUS-MQTT с использованием модуля RAK8802 WisBlock RS485 и Node-RED.
  3. Node-RED – Кастомизированный сервис Node-RED с поддержкой всех модулей WisBlock
  4. Standalone_LoRaWAN_Gateway – Автономный шлюз LoRaWAN с UDP-ретранслятором, The Things Stack LNS, Node-RED, InfluxDB и Grafana.
  5. Standalone_LoRaWAN_Gateway_TagoCore – Автономный шлюз LoRaWAN с UDP-ретранслятором, The Things Stack LNS и TagoCore.
  6. WiFi-HaLow – Шлюз с поддержкой модуля Wi-Fi HaLow AHPI7292S .

В данном примере используется Standalone_LoRaWAN_Gateway, так как он наиболее соответствует требованиям.

rak@rakpios:~ $ git clone https://github.com/RAKWireless/rak7391-examples.git
rak@rakpios:~ $ cd rak7391-examples
rak@rakpios:~ $ cd Standalone_LoRaWAN_Gateway

Требуется изменить «docker-compose.yml» в соответствии с настройками шлюза (например, EUI) и параметрами (например, модуль RAK5146).

version: '2'

services:

udp-packet-forwarder:
image: rakwireless/udp-packet-forwarder:latest
container_name: udp-packet-forwarder
restart: unless-stopped
networks:
- bridge
devices:
- /dev/ttyACM0
volumes:
- /sys:/sys
environment:
MODEL: "RAK5146"
INTERFACE: "USB"
RADIO_DEV: "/dev/ttyACM0"
GATEWAY_EUI: "D83ADDFFFE061D4F"
SERVER_HOST: stack
SERVER_PORT: 1700

postgres:
image: postgres:14.3-alpine3.15
container_name: postgres
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=root
- POSTGRES_USER=root
- POSTGRES_DB=ttn_lorawan
networks:
- bridge
volumes:
- 'postgres:/var/lib/postgresql/data'
ports:
- "5432:5432"

redis:
image: redis:7.0.0-alpine3.15
container_name: redis
command: redis-server --appendonly yes
restart: unless-stopped
networks:
- bridge
volumes:
- 'redis:/data'
ports:
- "6379:6379"

stack:
image: xoseperez/the-things-stack:latest
container_name: stack
restart: unless-stopped
depends_on:
- redis
- postgres
networks:
- bridge
volumes:
- 'stack-blob:/srv/ttn-lorawan/public/blob'
- 'stack-data:/srv/data'
environment:
TTS_DOMAIN: 10.249.197.175
CLI_AUTO_LOGIN: "true"
TTN_LW_BLOB_LOCAL_DIRECTORY: /srv/ttn-lorawan/public/blob
TTN_LW_REDIS_ADDRESS: redis:6379
TTN_LW_IS_DATABASE_URI: postgres://root:root@postgres:5432/ttn_lorawan?sslmode=disable
WAIT_HOSTS: redis:6379, postgres:5432
WAIT_HOSTS_TIMEOUT: 300
WAIT_SLEEP_INTERVAL: 30
WAIT_HOST_CONNECT_TIMEOUT: 30

ports:
- "80:1885"
- "443:8885"
- "1881:1881"
- "1882:1882"
- "1883:1883"
- "1884:1884"
- "1885:1885"
- "1887:1887"
- "8881:8881"
- "8882:8882"
- "8883:8883"
- "8884:8884"
- "8885:8885"
- "8887:8887"
- "1700:1700/udp"

influxdb:
image: influxdb:1.8
container_name: influxdb 
restart: unless-stopped
ports:
- '8086:8086'
networks:
- bridge
volumes:
- influxdb-storage:/var/lib/influxdb
environment:
- INFLUXDB_DB=sensors
- INFLUXDB_HTTP_AUTH_ENABLED=true
- INFLUXDB_ADMIN_USER=admin
- INFLUXDB_ADMIN_PASSWORD=changeme

grafana:
image: grafana/grafana:latest
container_name: grafana 
restart: unless-stopped
ports:
- '3000:3000'
networks:
- bridge
depends_on:
- influxdb
volumes:
- grafana-storage:/var/lib/grafana
- ./volume/grafana/provisioning/:/etc/grafana/provisioning
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=changeme

node-red:
image: nodered/node-red:latest
container_name: node-red 
restart: unless-stopped
entrypoint: /data/entrypoint.sh
environment:
- TZ=Europe/Amsterdam
ports:
- "1880:1880"
networks:
- bridge
depends_on:
- influxdb
- stack
volumes:
- ./volume/node-red/data:/data
volumes:
influxdb-storage:
grafana-storage:
node-red-data:
redis:
postgres:
stack-blob:
stack-data:

networks:
bridge:

Развертывание контейнеров с Docker:

rak@rakpios:~ $ sudo ./run.sh

Docker private LoRaWAN gateway deployment

Теперь на шлюзе работают 7 контейнеров:

  • dp-packet-forwarder – Взаимодействует с чипом LoRa для приема и передачи пакетов.
  • Stack – Сервер сети LoRaWAN (The Things Stack), использующий Redis и Postgres для обеспечения подключения, управления и мониторинга устройств, шлюзов и приложений.
  • Redis – Основное хранилище для Network Server, Application Server и Join Server.
  • Postgres – Дополнительная БД для The Things Stack.
  • Node-RED с начальным потоком, подписывающимся на восходящие данные от The Things Stack через MQTT и сохраняющим их в БД InfluxDB «Sensors».
  • InfluxDB – База данных временных рядов для записи данных с сенсоров.
  • Grafana – Визуализация данных из InfluxDB в виде графиков, индикаторов и диаграмм.

Данный метод подходит для пользователей, знакомых с командной строкой Docker (docker compose) и конфигурацией YAML.

Wisgate Connect docker command line

Пример использования частного Network Server с The Things Stack, доступного по IP-адресу шлюза.

Private LoRaWAN Gateway The Things Stack

После входа в интерфейс можно зарегистрировать шлюз в The Things Network.

Wisgate Connect Gateway Add to The Things Network

Способ 2 – Установка через Portainer Local

Для избежания командной строки RAKwirless предоставляет веб-интерфейс активации контейнеров через шаблон Portainer для RAK7391 . Требуется выполнить только одну команду через SSH:

rak@rakpios:~ $ portainer up

Wisgate Connect portainer

Скопируйте URL из оболочки (например, https://10.249.198.174:9443) и откройте его в браузере (тестирование проводилось в Chrome на Windows).

portainer login prompt

Войдите под логином «admin» и паролем «changeme», который необходимо сменить (минимум 12 символов).

portainer user settings

В разделе Settings добавьте URL «https://raw.githubusercontent.com/RAKWireless/portainer-templates/master/portainer_app_template.json» в поле «App Template».

Portainer app template

В меню App Template появится список из 35 шаблонов Docker-контейнеров: LoRaWAN Network Server, Scada, OPC-UA Server, PLC, Home Assistant, Zigbee, базы данных, дашборды и др.

Wisgate Connect Portainer App Templates

Portainer Tailscale

Portainer Home Assistant

Portainer OPC UA server

Portainer RabbitMQ

Далее с помощью Portainer развертывается частная платформа LoRaWAN на базе шлюза WisGate Connect с UDP Packet Forwarder, ChirpStack, Node-RED, InfluxDB и Grafana.

Установка и конфигурация контейнера UDP Packet Forwarder

UDP-ретранслятор взаимодействует с чипом LoRa. Подробности доступны на GitHub .

Name:     CNXsoftwareUDPPacketForwarder
Network:     host
Time Zone:     Asia/Bangkok
RAK gateway model:     RAK5146
Concentrator interface:     USB
Has GPS:     True
Has LTE:     False
Where the concentrator is connected to:     /dev/ttyACM0
Where the GPS is connected to:     /dev/ttyAMA0
Source of the Gateway EUI:     Generate gateway EUI based on folllowing network interfaces: eth0, wlan0, usb0, eth1, or most used NIC
LNS URL or Server_Host:     <IP.address>
Server port:     1700
TTN Frequency Plan:     as_915_928(as_923_1)

Portainer UDP Packet Forwarder configuration

Portainer UDP Packet Forwarder AS923 Thailand

Развертывание ChirpStack Network Server

Сервер сети LoRaWAN ChirpStack используется совместно с MQTT Mosquitto, Redis и Postgres для обеспечения подключения, управления и мониторинга устройств, шлюзов и приложений.

Name:     CNXsoftware 
Time Zone:     Asia/Bangkok 
Network Server Band:     AS923

ChipStark configuration

Учетные данные ChirpStack по умолчанию: логин/пароль «admin». Устанавливаются 6 стеков Docker-контейнеров:

  1. chirpstack-gateway-bridge-1
  2. chirpstack-network-server-1
  3. chirpstack-application-server-1
  4. chirpstack-mosquitto-1
  5. chirpstack-redis-1
  6. chirpstack-postgresql-1

Установка и развертывание Node-RED

Node-RED настраивается для подписки на восходящие данные от ChirpStack через MQTT, декодирования полезной нагрузки (алгоритм Base64) и сохранения в InfluxDB или проверки данных для оповещений через LINE Notify.

Application Time Zone:     Asia/Bangkok

Конфигурация InfluxDB

База данных временных рядов InfluxDB позволяет Node-RED записывать данные с сенсоров. Требуется изменить только часовой пояс.

Time Zone:     Asia/Bangkok

Portainer InfluxDB

Перед использованием InfluxDB создайте базу данных через консоль контейнера:

connect user: root
influx
create database iot
quit

Установка Grafana

Grafana визуализирует данные из InfluxDB в виде графиков, индикаторов, диаграмм и т.д. В Portainer изменяется один параметр перед развертыванием:

Time Zone:     Asia/Bangkok

Grafana Portainer

Теперь постоянно работают следующие Docker-контейнеры и стеки.

Portainer private LoRaWAN gateway container list

Тестирование IoT-платформы частной сети LoRaWAN

Развернута аналогичная частная IoT-платформа LoRaWAN , использованная Ninephon в предыдущих обзорах, но с более производительным шлюзом Wisgate Connect от RAKWireless, заменившим Dragino LG308 с процессором MIPS 400 МГц. Для тестирования сети в качестве LoRa-узла используется комплект разработки Link.ONE .

Private LoRaWAN IoT Platform Wisgate Connect Gateway

Конфигурация ChirkStack

Для доступа к ChirpStack Network Server перейдите по адресу http://<IP.address>:8080 , используя учетные данные admin/admin (пароль необходимо сменить после первого входа).

ChirpStack gateway configuration

В разделе Gateways добавьте RAKwireless RAK7391 WisGate Connect в ChirpStack.

chirpstack add gateway

Вкладка «LIVE LORAWAN FRAMES» отображает список полученных пакетов в радиусе действия шлюза.

chirpstack live lorawan frames

Создайте приложение «RAKWireless» в меню Applications.

chirpstack applications

Добавьте новое устройство LinkONE в приложение «RAKwireless», указав Device EUI 88 88 88 88 88 88 33 33.

chirpstack add device Link.ONE

Выберите OTAA-активацию (Over The Air Activation) и введите Application Key 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88, затем нажмите SET DEVICE-KEYS.

ChirpStack LoRaWAN application key

Сенсорный узел Link.ONE LoRaWAN был запрограммирован в Arduino IDE для считывания статуса батареи каждую минуту и кодирования данных в Base64 перед отправкой пакета шлюзу.

ChirpStack Link.ONE devkit battery status

Подробности о комплекте разработки Link.ONE описаны в обзоре «Использование комплекта разработки LPWAN Link.ONE с ChipStark, Node-Red, InfluxDB и Grafana» .

Конфигурация Node-RED

Веб-интерфейс Node-RED доступен по адресу http://<IP.address>:1880. Используются узлы Flow: MQTT in, Function, InfluxDB out, HTTP Request и другие, предустановленные RAKwireless для поддержки устройств (WisBlock Module, ModBus и др.).

Link.ONE Node-RED

Node-RED автоматически сохраняет данные сенсоров и системы LoRaWAN в InfluxDB, а при низком уровне заряда батареи (<3.3В) отправляет уведомление на смартфон через API LINE Notify.

InfluxDB battery level LoRaWAN data

Визуализация данных InfluxDB в DBeaver Ultimate 22.2.0

Настройка визуализации данных в Grafana

Дашборд Grafana доступен по адресу http://<IP.address>:3000 (логин/пароль admin/admin, смену пароля можно отложить). Дашборд отображает из InfluxDB: напряжение батареи (В), процент заряда (%) и потребляемую мощность при передаче данных (мВт).

Grafana Link.ONE battery monitoring

Шлюз WisGate Connect работал 24/7 без сбоев. Корпус нагревается, выполняя роль радиатора для охлаждения модуля Raspberry Pi CM4, что позволяет обойтись без вентилятора.

RAKWireless Wisgate Connect Review Link.ONE devit

Заключение

Шлюз RAKwireless WisGate Connect подходит разработчикам для реализации сетей беспроводной связи: LoRaWAN, 4G LTE, 5G, WiFi 6, Zigbee, WiFi HaLow и других. Он снижает затраты, объединяя функции шлюза, сетевого и прикладного сервера. Настройка выполняется по описанным шагам. Однако для задач только LoRaWAN рекомендуется более доступный RAKwireless Wisgate Edge или аналогичные модели.

Благодарим RAKwireless за предоставленный для обзора комплект WisGate Connect. Стоимость начинается от $149 за плату-носитель RAK7391 Compute Module 4 (CM4) и достигает $531 за полный комплект (Raspberry Pi CM4 4ГБ/32ГБ/WiFi, 16-канальный модуль LoRaWAN, уличный корпус). Тестируемая модель стоит $381. Возможно добавление модулей WisBlock для расширения функциональности.

Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments