前段时间我们看了一下物联网(IoT)通信在尝试消化一些模糊的营销信息来自不同的公司参与该业务。我确定了三个层:由抽象消息传递覆盖的正式协议和由业务对象覆盖的抽象消息传递。
“正式协议”层通常被称为“传输”(即使它可能包含也可能不包含正式的OSI传输层功能)。当物联网通信人员谈论基于标准时,这通常是大多数标准的所在,无论是TCP/IP还是Zigbee或其他什么。
在此之上是通用消息传递层,它只是一种编码信息以便在其他地方运输的方法。没有语义,接收实体需要了解消息是如何构建的,以便正确地解包它。内容本身并不是标准化的。我们将Xively作为一个例子,但这里也有其他标准;MQTT就是一个例子。DDS是另一个。请注意,在这个级别上,可能有特定级别的规定格式,但是对于特定类型的端点没有规定的语义。
这样的语义属于上面一层,在那里我们可以找到业务对象。为了澄清两者的区别,让我们举三个例子:
-在一种情况下,通用消息协议可能被用来传递指令到恒温器。假设有两个头字节和一个消息字段。设计人员可以使用消息字段的第一个字节来识别这将发送到恒温器,第二个字节可以识别哪个恒温器,然后下面的字节将携带指令和任何数据(例如,“将温度设置为72”)。此结构仅为该系统定义,并且系统的两端都需要知道各个字节表示什么以便进行通信。
在另一种情况下,更像DDS,可能已经有了通用“主题”的规定。因此,在这种情况下,设计人员可以像上面那样对指令进行编码,但不必为“恒温器”构建一个字段,他或她只需使用一个恒温器主题,感兴趣的订阅者可以订阅该主题。特定的恒温器指令仍然是自定义的,但是将消息传递给相关方的一些基础设施内置于协议中。
—前面两个没有包含业务对象语义,因为特定于温控器的指令是自定义的。相比之下,第三个示例将包括一个恒温器对象,并且该对象将具有预定义的API。你不会为“设置临时”、“打开”、“关闭”等“发明”代码;这是协议的一部分。这样做的好处是,任何与支持该协议的任何供应商的恒温器通信的系统都可以工作。没有供应商锁定(某些供应商可能不认为这是一个好处)。
IPSO联盟已经整理了一个物联网对象的“入门包”。他们这样做是因为他们的主要目标,IP的扩散,可以通过IPv6和6LoWPAN扩展到包括受限资源的东西。参考实现利用了为设备管理和服务设计的轻量级M2M协议,该协议本身基于新的CoAP协议,该协议为资源受限的低带宽、低功耗设备提供消息传递。
也就是说,对象也可以在其他协议上实现。没有什么能限制它们使用基于ip的传输。
他们创造了18个不同的对象。其中一些是相当普通的:
- 数字输入
- 数字输出
- 模拟输入
- 模拟输出
- 通用传感器
- 功率测量
- 驱动
- 设置点
- 负荷控制
例如,虽然没有特定的恒温器对象,但“致动”对象允许打开/关闭,而“设定点”对象允许设置一个值,如温度。
然后是一些具体的对象:
- 照度传感器
- 存在传感器
- 温度传感器
- 湿度传感器
- 灯光控制
- 功率控制
- 加速度计
- 磁强计
- 气压计
每个对象都定义了“资源”。例如,Illuminance传感器对象有以下资源:
- 传感器值
- 单位
- 最小测量值(自上次重置以来)
- 最大测量值(自上次重置以来)
- 最小量程值
- 最大量程值
- 重置最小/最大测量值
每个资源都有自己的ID。名称和id通过开放移动联盟(定义LWM2M的组织)名称授权进行注册。