2022年1月基本站2.0.6文档

LNS协议

连接一个罗拉基础™站LoRaWAN®网络服务器(LNS)是一个两步的过程使用WebSocket传输协议交换文本记录包含json编码的对象。

首先,车站查询的LNS LNS的实际连接端点的URI。第二,它建立了一个数据连接端点接收设置信息。从那时起,罗拉®上行和下行帧交换连接。这种方式,一个LNS可能动态网关分配给不同的数据连接端点为了,例如,分发负载或地理相邻。

请注意

LNS服务分配数据连接端点可以LNS分开。同时,服务可以运行在服务器分开LNS连接端点,这可能是分布在不同的服务器。

LNS协议

查询LNS连接端点(发现)

默认情况下,最初的URI查询是由文件的内容tc.uri通过添加路径/ router-info(见凭证其他选项)。这形成一个WebSocket端点提交以下JSON对象:

{“路由器”:ID6|行,|整数}

这里车站仅仅是宣布其身份和问路LNS应当连接到连接端点。身份是一个64位的行提供的字段路由器,无论是在一个字符串的形式编码的行ID6行,格式,或作为一个整数值代表行。

根据授权方案(见身份验证模式),LNS应当确认声明的身份匹配提供的凭证并回答以下JSON对象,之后立即关闭连接:

{“路由器”:ID6,“mux”:ID6,“uri”:“URI”,“错误”:字符串/ /只有在出错的情况下}

这个领域路由器包含标准化的网关的身份。的mux字段包含LNS的身份连接端点选择LNS的领域uri包含此连接端点的地址。车站然后连接到这个URI与LNS建立数据连接。

如果不能确定网关,或者有其他问题,响应包含一个对象错误字段描述问题。这可能是因为字段muxuri人失踪。

连接到一个LNS

查询成功后的LNS数据连接端点,车站会连接到端点URI,使用当前配置的凭证。如前所述,建立链接是一个WebSocket连接站,LNS交换JSON对象。每一个JSON对象,一个上行(即是否,from Station to LNS) or a downlink (i.e., from LNS to Station), must have a field namedmsgtype标识消息的类型,决定了结构的JSON对象。

对WebSocket连接已经建立后,车站发送一个版本消息。接下来,LNS应当回应router_config消息。正常运行之后,开始上行/下行消息如下所述。

版本消息

第一站发送的消息是一个版本消息,报告对LNS的版本信息(例如,,固件,模型),协议版本(常数2现在),和一个可选特性列表支持的网关。那就是:

{“msgtype”:“版本”“站”:字符串“固件”:字符串“包”:字符串“模型”:字符串“协议”:INT“特征”:字符串}

特性字符串的空格分隔的列表下面的关键词:

  • rmtsh车站:支持远程shell访问与LNS通过建立WebSocket连接。

  • 刺激:车站是建立在生产水平,也就是说,某些测试和调试功能可能被禁用。

  • 全球定位系统(gps)车站能够访问一个GPS设备。

router_config消息

LNS必回复版本消息,该消息带有一个router_config消息指定一个电台频道计划和定义一些基本操作模式:

{“msgtype”:“router_config”“NetID”:(INT,。。]“JoinEui”:((INT,INT),。。]/ /范围:乞讨,包容“地区”:字符串/ /可选的,如“EU868”、“US915”. .“max_eirp”:浮动/ /可选“hwspec”:字符串“freq_range”:(INT,INT]/ /分钟,马克斯(赫兹)“博士”:((INT,INT,INT),。。]/ /科幻、bw dnonly“sx1301_conf”:(SX1301CONF,。。]“bcn”::BCNCONF“nocca”:BOOL“nodc”:BOOL“nodwell”:BOOL}

的字段NetIDJoinEui用于过滤罗拉帧接收到车站。NetID是接受NetID值的列表。任何罗拉数据帧携带NetID以外的上市将会下降。JoinEui是对整数值的列表加入行编码范围。加入请求帧将下降了车站,除非该领域JoinEui在消息满足条件BegEui < = JoinEui < = EndEui至少一对[BegEui, EndEui]

的字段nocca,nodc,nodwell只在调试版的车站。他们的目的是禁用某些监管输电约束,即clear channel评估、频宽比限制,和停留时间限制。

地区字段中指定的区域渠道计划。它控制某些监管行为如clear channel评估、频宽比限制和停留时间限制。有效的名字是兼容常见名字LoRaWAN区域参数规范中指出。此外,为了向后兼容,除外,以下名称映射到各自的名称在括号:EU863 (EU868) US902 (US915)。如果省略该字段然后站在一个地区不可知论者模式。

max_eirp字段指定一个maxmimum输出功率。如果没有这个字段,那么有针对性马克斯附近使用价值。在缺席的情况下区域说明符,它默认为14。如果max_eirp存在,只有通过降低区域价值。

hwspec字段描述所需的集中器硬件操作通道计划交付router_config消息。指定字符串必须有以下形式:sx1301 / N,在那里N表示SX1301集中器芯片的数量需要操作通道计划。车站将检查这个需求对其硬件功能。

freq_range字段定义的可用频谱的上限和下限为该地区集。车站允许这个频率范围以外的下行传输。

DRs通道内的字段定义了可用的数据率的计划。它必须是一个数组的16个条目。每个条目是一个数组的三(3)整数编码扩频因子(科幻小说)、带宽(BW),以及一个DNONLY国旗。科幻小说必须在7 - 12范围罗拉®,或0移频键控。BW必须的数字:125,250,500。BW移频键控的被忽略。

请注意

DNONLY必须1如果下行帧的数据率是有效的,和0如果不是。

sx1301_conf字段定义了如何映射到单个SX1301芯片通道计划。它的值是一个数组SX1301CONF对象。数组元素的数量必须符合的价值hwspec字段。

的布局SX1301CONF对象是这样的:

{“radio_0”:{。。}/ /与radio_1相同的结构“radio_1”:{“启用”:BOOL,“频率”:INT},“chan_FSK”:{“启用”:BOOL,“广播”:0|1,“如果”:INT},“chan_Lora_std”:{“启用”:BOOL,“广播”:0|1,“如果”:INT,“带宽”:INT,“spread_factor”:INT},“chan_multiSF_0”:{。。}/ / _0 . ._7都有相同的结构。。“chan_multiSF_7”:{“启用”:BOOL,“广播”:0|1,“如果”:INT}}

bcn字段是没有一个或BCNCONF对象布局如下:

{“博士”:INT“布局”:(INT,INT,INT]“频率”:(INT,。。]}

这些字段的值可以从区域中提取目的规范LoRaWAN标准。的博士字段定义了数据率用于灯塔。的布局消息的字段指定插入的八位字节偏移量字段时间GwSpecific,其次是beacom PDU的长度。的频率字段定义了广播的频率信号。一个典型的设置将{“博士”:3,“布局”:[2,8,17],“频率”:为区域EU868 [869525000]。

监控往返时间

站之间的消息交换和LNS允许监视跟踪某些字段到正常往返次消息交换。LNS可能添加MuxTime场每一个下行发送到一个站:

{“msgtype”:“. .”“MuxTime”:浮动/ /下行。。}

MuxTime字段包含一个浮动值,它代表了UTC时间戳,分数秒,标志着当时LNS的消息被发送。车站就会回应通过添加字段RefTime:

{“msgtype”:“. .”“RefTime”:浮动/ /上行。。}

RefTime从去年收到场计算MuxTime调整后的时间间隔之间的路由器的到来MuxTime和发送RefTime。因为频繁的下行流量小于上行消息,很有可能MuxTime可能被重用构建多个RefTime字段。这意味着往返延迟的测量是由过去的下行消息和最新的上行消息。

时间同步

时间同步有两种操作模式:

  1. 访问pp

  2. PPS的独立。

PPS GPS时间同步

如果一个站访问PPS一致的GPS秒,它会推断出GPS时间同步与LNS通过运行一个协议。推断出正确的GPS时间标签对于给定的PPS脉冲,车站将继续发送timesync上行消息LNS下游应及时回答timesync消息。

格式的上游信息:

{“msgtype”:“timesync”“txtime”:INT64,}

下游反应后应立即由LNS发送接收相应的上游timesync。LNS将插入gpstime场和通过txtime场,收到站,txtime一些当地未指定的时间到车站。

这个领域gpstime标志着当时LNS的即时处理timesync消息。它的值是GPS时代以来的时间以微秒为单位。

{“msgtype”:“timesync”“txtime”:INT64,“gpstime”:INT64}

将GPS时间

LNS应当定期发送以下信息传输GPS时间到车站。

{“msgtype”:“timesync”“xtime”:INT64,“gpstime”:INT64}

这个领域xtime特定的车站和GPS时间推断从上游帧到达LNS重叠。

远程命令

站支持两种机制运行远程命令网关:

{“msgtype”:“runcmd”“命令”:字符串,“参数”:(字符串,]}

命令字段包含实际的命令来执行。根据其内容,车站会表现如下:

  • 如果设置了可执行的旗帜,车站运行命令指定的一组参数。

  • 如果它是一个文件但不执行,车站将包含一个shell脚本,并将它作为一个文件,连同参数,为解释系统的本地shell。

  • 如果以上都不是是真的,车站假设命令值代表壳牌语句。它运行本地shell和传递参数的值作为表述一起执行。

参数字段是可选的,可以缺席或一个空数组。如果现在和非空,这些参数传递的命令。

远程Shell

站支持远程shell会话隧道通过WebSocket LNS。会话启动的命令如下所示。在会话建立之后,壳牌的输入数据和输出数据生成的外壳和其命令通过WebSocket隧道作为二进制记录。一个站可以维护多个会话。是这样的话,第一个字节的二进制记录会话指数。剩余的字节的二进制记录的输入/输出数据。WebSocket传输的编码是透明的。

查询、启动或停止一个会话,LNS必须发送以下信息:

{“msgtype”:“rmtsh”,“用户”:字符串,“术语”:字符串,“开始”:INT,“停止”:INT}

如果字段开始停止缺席,当前会话状态查询。否则,只有一两个字段的存在,分别指示一个会话启动或停止。

的值术语字段的值术语环境变量。这是之前设置本地shell启动。

用户字段描述用户操作会话。对车站这只是信息上下文数据。

车站就会回复以下消息描述所有会话的当前状态:

{“msgtype”:“rmtsh”,“rmtsh”:({“用户”:字符串,“开始”:BOOL,“年龄”:INT,“pid”:INT},。。]}

年龄场以来的时间间隔,以秒为单位的输入/输出操作远程shell会话。

pid字段是本地进程标识符开始的壳。

开始现场实际运行表明,壳过程。