文档

端口字段

LoRaWAN规范提供了一个数据传递字段(FRMPayload)和一个端口字段(FPort)来区分不同类型的消息。FPort 0用于MAC消息。不要使用此端口传输数据字段。FPort 224用于MAC遵从性测试,FPorts 225-255用于未来的标准化应用扩展1.这使得有效端口号在1到223之间。

设备或对象的型号和端口

虽然在规范中没有明确说明,但是港口领域的灵感来自IPSO联盟的“智能对象”。2在该框架中,智能对象是物理设备中的虚拟函数或控件。其思想是,设备管理对象并公开接口,如传感器测量和驱动控制。对象定义,例如温度传感器,可以在许多不同的设备中,但具有相同的特征,如精度、格式和功耗。通过将端口绑定到特定的功能(例如进行测量),可以更容易地抽象底层操作。

图1。IPSO设备和对象模型

如果你制作两个设备,例如,一个水表有一个流量传感器(Object a)和一个水阀有一个阀门执行器(Object B),这两个设备可以使用相同的压力传感器(Object C)。通过单独处理每个功能,你可以在两个系统中重用压力传感器(Object C)的代码和数据处理,从而在实现设备接口时减少开发时间。

API的实现

虽然所有有效负载都可以用一个端口标识符发送,但如果有效负载之间的格式一致,那么编写解码器会更快、更容易。有效负载可以包括一个“包类型”,但这需要额外的位,甚至需要在端口字段中传输一个完整的字节的信息。使用多个端口,您可以编写一个使用更少的条件语句和更简单的检查来验证其内容的解码器。相比之下,如果负载长度可变或根据设备状态具有不同的数据类型,则相对于固定的种类,解码器所需的复杂性和处理会增加。这满足了IPSO联盟/OMA SpecWorks的设计目标,在设备中定义了可以简单表达和管理的功能。

组测量

通过跨函数使用端口定义,您可以在逻辑上分割数据流,并使设计人员能够自然地拥有更多的“原子”和概念上更小的包定义。某些具有多个传感元件的传感器具有自然的同步测量。

例如,用于液体或气体的压力和温度传感器(参见图2)。在不同时间获得这两个测量值将使描述系统状态比同时获得这两个测量值更难。在这种情况下,将压力和温度读数放在同一个数据包中是有意义的。

图2。同时采样测量的示例系统

然而,另一个多测量传感器可能有不一定相关的数据。例如,一个带有防篡改加速计的被动红外运动传感器。被动红外传感器的目的是确定是否有人在房间里。加速度计的目的是确定传感器是否被移动过。这些是非常不同类型的测量,而且几乎完全独立于彼此。可以定义一个包为两个传感器一起提供信息(如果其中一个传感器“触发”就会触发),也可以为每个测量类型单独提供信息。如果你想象一下,这个传感器的典型用法是每天触发10次房间占用率,而加速度计一年触发一次,那么每年你会收到3650个房间占用率通知和一个加速度计通知。如果加速度计数据包含在每个房间的入住更新中,每年将有3649条重复的“没有加速度计触发”消息。在这种情况下,为被动红外传感器和加速计设置单独的端口对于数据效率的目的是有意义的。加速度计的单独端口可以作为警报的简单触发器,甚至不需要解码有效负载,从而简化了应用程序实现。

图3。具有不同测量值的多传感器设备的示例

总之,端口允许:

  • 创建“原子”有效载荷定义
  • 简化API的创建和解码
  • 将相似或相关的测量分组在一起
  • 将不同的度量或过程分离到不同的有效负载中

1.LoRaWAN 1.0.2规范(2016年7月),第4.3.2节。LoRaWAN 1.1规范(2017年10月11日),章节4.3.2。

2.https://www.omaspecworks.org/what-is-oma-specworks/iot/lightweight-m2m-lwm2m/注意:IPSO联盟于2018年与OMA合并。它现在被称为“OMA SpecWorks”。IPSO文档作为轻量级m2m (LwM2M)规范发布。

Baidu
map