LoRa服务器项目概览

前言

LoRaWAN 协议定义了系统拓扑,这是我们最常见的系统拓扑图。

但当了解到LoRaServerProject时,这套系统拓扑有了更细致的展现,采用 MQTT 来实现 Gateway、NS、AS 的协议处理。深入到这个开源项目中,会体会到 MQTT 给这个系统架构所带来的高效率与灵活性。

一、工程总体介绍

Lora Server project 是一套开源应用软件,实现从 网关接收到节点数据 一直到 应用程序接收到数据 这一段链路的处理。

The Lora Server project is an open-source set of applications that fill the gap between the gateways receiving messages from the nodes to just before the applications receiving the data. It provides mechanisms for managing the gateways on the LoRa network, the applications supported, and the devices associated with the applications.

整个工程设计地非常灵活,这样可以用不同方式来使用它。例如 LoRa App Server 组件实现 应用服务器组件,为用户提供一套 Web UI 来访问和修改他们的网关、应用程序和节点,还可以通过 gRPC and JSON REST APIs 编程接口来访问系统。而且,API设计地也很灵活,子系统可以用其他相同接口的软件来替代。

The project is designed so that it may be used in a very flexible manner. For example the LoRa App Server component implements the application-server component and offers a Web UI for users to access and modify their gateways, applications and nodes. The system can also be accessed via programmatic interfaces implemented in gRPC and JSON REST APIs. Further, the APIs are designed such that the subsystems may be replaced by other software implementing the same interfaces.

二、系统架构

LoRa nodes

LoRa gateway

网关从节点接收数据,实现包的转发。

LoRa Gateway Bridge

LoRa Gateway Bridge负责处理网关的通讯。将网关转发的UDP协议转化成MQTT上的JSON。它比直接用UDP来传输,有如下优点:

  • 调试容易
  • 下行数据时只要知道网关的相应MQTT主题,MQTT broker 会找到负责相应网关的LoRa Gateway Bridge。
  • 使得网关和NS直接可以使用更安全的连接(使用 MQTT over TLS )
  • 未来,不同的bridge版本可以处理不同的网关协议,因此其余设备只需要知道 MQTT格式上的JSON串。

LoRa Server

LoRa Server组件能知道激活节点会话,当新节点加网时,它会向AS询问这个节点是否可以加入网络,如果准许的话,应该给这个节点采用何种设置。

对于激活节点会话,它对接收到的数据包做去重,并且对日期做校正(避免转发攻击),它转发数据给AS,会询问AS是否有东西要回复。

除了管理数据流,也可以通过所谓的MAC命令等来管理节点状态。

LoRa Server 使用 gRPC API,以方便你建立自己的AS。

LoRa App Server

LoRa App Server组件实现了一套对接 LoRa Server 的应用服务器。它提供了针对各个应用或者各个机构的节点管理,也提供了针对各个机构的网关管理。它还提供了用户管理以及针对不同机构、应用的用户的权限分配。它和应用的通讯是使用 JSON over MQTT,使用裸露的APIs。

LoRa App Servers提供了一个WEB界面,用来管理网关和节点,也提供API端点,这样它可以集成到你的自有产品中。

LoRa App Servers offers a web-interface that can be used for gateway, node and gateway management, but also offers API endpoints so that it can be integrated with your own products.

Application

应用则通过订阅MQTT主题来接收节点的数据,也能通过MQTT回传数据。如果需要,它可以用 gRPC or JSON REST api 来和AS进行交互。

三、功能特性

ISM bands

满足 Regional Parameters 1.0 。

Devices classes

目前支持 LoRaWAN Class-A and Class-C

Adaptive data-rate (ADR)

Channel re-configuration

标准只使用了一部分信道,而这边支持信道重配置。

Web-interface

提供了Web界面,它提供了针对各个应用或者各个机构的节点管理,也提供了针对各个机构的网关管理。它还提供了用户管理以及针对不同机构、应用的用户的权限分配。它和应用的通讯是使用 JSON over MQTT,使用裸露的APIs。

API

NS和AS都提供了API来集成到你的产品中。如果需要的话,也可以使用 LoRa Server API 来实现一套自己的节点管理系统,来完全替代掉 LoRa App Server 。

Gateway management

提供了网关管理功能,这样可以管理你的网关,及他们的GPS位置,以及一些他们的性能追踪。

LoRa Server 功能

设备类型(Device classes)

  • Class A

LoRa Server 全面支持 Class-A 设备。接收到的数据会做去重处理,然后转发给AS。当 接收窗口 打开时,LoRa Server 会向 AS poll 下行数据。通过 polling 这种方式,AS 可以按照 速率相应的最大载荷长度 的相关规定来安排下行数据。

  • Class B

Todo

  • Class C

LoRa Server 全面支持 Class-C 设备。它会记住上一次的接收参数(每个网关接收到的上行数据情况),因此可以判断出最近的那个网关,从而下发下行数据。下行数据可以调用 NetworkServer.PushDataDown API 来处理。

带应答的上下行数据(Confirmed data up / down)

带应答的上下行数据都是 LoRa Server 来处理,特别是下行数据, LoRa Server 会一直保存着它的序列号,直到等到节点的应答。

终端加网(Node activation)

LoRa Server 支持 ABP 和 OTAA 两种加网方式。在 ABP 方式中,AS 提供给 LoRa Server 一个 node-session 。在 OTAA 方式中,LoRa Server 会调用将接收到的 join-request 发给 AS,如果准许的话,它会发送 join-accept 给节点。

速率自适应(实验阶段)(Adaptive data-rate (experimental))

LoRa Server 支持 速率自适应(ADR)。

LoRa Server has support for adaptive data-rate (ADR). In order to activate ADR, The node must have the ADR interval and installation margin configured. The first one contains the number of frames after which to re-calculate the ideal data-rate and TX power of the node, the latter one holds the installation margin of the network (the default recommended value is 5dB). From the node-side it is required that the ADR flag is set for each uplink transmission.

Important: ADR is only suitable for static devices, thus devices that do not move!

网关管理和统计(Gateway management and stats)

Gateways can be created either automatically when LoRa Server receives statistics from the gateways or by using the API. Gateway statistics will be aggregated on the given intervals and are exposed through the api API. See also gateway management.

接收窗口(Receive windows)

Through OTAA and ABP, it is possible to configure which RX window to use for downlink transmissions. This also includes the parameters like data-rate (for RX2) and the delay to use.

释放帧序号(Relax frame-counter)

A problem with many ABP devices is that after a power-cycle, the frame-counter of the device is reset. Since this reset is not known by LoRa Server it means that all payloads with a frame-counter smaller or equal than the known counter get rejected. In order to work around this issue it is possible to enable the relax frame-counter mode. Important to know, this compromises security!

ISM频段(ISM bands)

As different regions have have different regulations regarding the license-free bands, you have to specify the ISM band to operate on when starting LoRa Server. At this moment the following ISM bands have been implemented:

  • AS 923
  • AU 915-928
  • CN 470-510
  • CN 779-787
  • EU 433
  • EU 863-870
  • IN 865-867
  • KR 920-923
  • US 902-928
说明:LoRa应用学习站通过公开互联网收集、整理并转载有关LoRa及物联网应用解决方案,以供广大LoRa应用开发者和爱好者共同学习交流和参考运用到实际生产生活中。本站所有转载的文章、图片、音频、视频等资料的版权归版权所有人所有并衷心感谢您的付出,由于本站采用的非本站原创文章及图片等内容无法一一联系确认版权者,如果本网所选内容的文章原创作者认为其作品不宜放在本站,请及时通过以下留言功能通知我们采取适当措施,避免给双方造成不必要的经济损失。如果您希望保留本文在LoRa学习站,但希望文章末尾提供对作者的致谢或者产品、网站交换链接的,也请将需求写入以下留言栏中,谢谢您的支持。让我们共同努力,打造万物互联的未来美好生活!

您的留言或需求: