开发者中心

对接设备

对接设备介绍

本节介绍了与对接物联网设备和通过QuarkIoE对接其他物联网有关数据源的相关概念。

通过QuarkIoE对接该系统,需要一个称为 agent 的驱动软件。我们将首先描述该agent的主要职责,并讨论agent的架构选项。然后,我们将一步步查看整个agent的生命周期。最后,我们会讨论获取来自其他数据源数据的agent用法,比如,某个租户的IT系统。

相关的要点可以在下列章节中找到:

什么是agent?

随着M2M设备一起到来的是,多种多样的协议、参数和网络连接选项。设备的协议涵盖了从低级别的串行链路,到成熟的IT协议,比如Web服务。今天的物联网标准很少准确地定义,如何访问特定传感器的特定读数,或操作特定的控制器。设备可以通过移动网络和网关进行连接。

为了避免M2M应用程序的差异,QuarkIoE使用了称为"agent"的工具。agent是一个能满足某个指定供应商和设备种类三种职责的功能。

  • 它可以将设备特定的接口协议翻译成单一的参考协议。
  • 无论设备具有怎样的域模型,它都可以转化成参考域模型。
  • 在多种网络架构中,它可以进行安全的远程通信。
agent架构

协议转换通过在一侧的设备特定协议,配置参数、读数、事件和其他信息要么被发送到agent处("推送"),要么被agent查询("轮询")。agent会将这些信息在另一侧转化为QuarkIoE可以理解的协议。它还将收到来自QuarkIoE的设备控制指令("关闭那个继电器"),并将其转换为设备可以理解的各种协议。

QuarkIoE使用一个基于REST(例如,HTTPS)和JSON的简单、安全的参考协议,该协议可以用于从各种编程环境到小型的嵌入式系统。为了支持近实时场景,协议是根据"推送"模型设计的,例如,只要数据可用它就会被发送出去。

模型转化 配置参数、读数、事件等都具有他们设备特定的名称(和可能的单位)。对于一个特定的设备来说,agent将会把这个设备的特定模型转化为QuarkIoE的参考模型。举例来说,一个电表可以提供主要的读数,作为"已接收的瓦时"的参数。所以该agent可以将读数转化为,以千瓦时体现的"全部有效电力"。

安全远程通信设备可能会提供一个不适用于安全远程通信的协议,特别是在公有云的环境中。该协议可能只支持本地网络,并且无法通过防火墙和agent服务器,同时也能通过明码电文携带敏感的数据。为了克服这种情况,agent可以被协同到设备上,为远程设备提供一个安全、基于互联网的连接。

总结下来,agent概念的优势有:agent可以通过物联网应用程序安全地与任何类型的远程物联网设备对接,同时对于设备本身没有强制性的系统要求。它们通过屏蔽来自物联网设备和协议多样化的应用程序,彻底地简化了物联网应用程序的开发。

支持什么样的agent架构?

agent可以通过多种方法进行部署,如下图所示。我们主要分为两种方式:服务器端agent和设备端agent。

agent架构

服务器端agent运行在云上,可以由QuarkIoE托管或由你自己管理。设备使用他们特定的协议连接到服务器端agent。该类型主要适用于,当下列内容出现一个或多个时的情况:

  • 设备是"关闭"的,例如,设备不可被编程,并且在连接外部世界时只支持一个特定、预定义的协议。
  • 设备上的协议是安全和网络驱动的。
  • 在设备和QuarkIoE之间是有一个VPN架构的。

设备端agent是在设备传感器网络上运行的。这样的设备可以是路由器,移动电话或调制解调器。在任何设备支持的运行时间环境下,从最基础的电池-内存-受限制的嵌入式微控制器到运行嵌入式Linux系统的微电脑,agent都可以被执行。agent可以直接查询和操作连接的控制器,通常情况下它的架构比服务器端agent要更简单。

agent的生命周期

启动agent

服务器端agent持续地在云端运行,接受来自它们支持的设备类型的连接。设备端agent在设备上运行,并且当设备被开启后,和其他设备软件一同开启。

两种类型的agent都是通过固定的平台端点URL进行预配置的。 使用该平台端点的URL,必须获取每个连接设备的凭证。这些凭证容许设备连接到QuarkIoE的租户上,并且向租户发送数据,同时也可以接受来自租户的操作。

启动后,agent会通过该agent负责的传感器子网络,与设备清单进行同步。

同步设备清单数据

要理解设备清单同步,我们需要重新回顾在 "QuarkIoE的领域模型"中描述的通信层级。在设备清单中,agent被放置在通信层级的根部。下面的每个agent中,agent所管理的子网络拓补图反映了这种结构。该拓扑结构存在于实际的网络中,同时也在设备清单中以快照的形式存在。它也可能在实际的网络中改变,同时这些改变也需要在设备清单中予以反映。

通信层级

设备清单同步需要两个步骤:第一步是从设备清单中查询agent条目,如果它不存在的话,则创建agent。第二步是发现子网络,并基于查询的agent条目,同设备清单进行同步。

第一步是提供了将配置信息作为agent条目的一部分发送到agent的可能性,该配置信息取决于agent的类型和连接的设备。它可能包括,比如,测量值的轮询间隔。它同样也可在agent不能自动发现其关联网络的情况下,承担为agent分配子网络的责任。

例如,安装在手机上的一个agent可以发现一个连接蓝牙的心脏监测器,而无需进一步的配置。一个安装在本地IP网络中的agent,可以在本地网络中运行一个发现程序。作为对比示例,一个Multispeakagent需要Multispeak服务器和凭证的URL,才能发现连接的智能表具。

为了保证设备清单信息的更新并在设备上保持集中的视图,通常使用两种机制:

  • 定期触发的设备清单上传,当agent启动,它就会首先运行,并可能定期重复。
  • 当agent运行时,传播个体设备改变的情况。

设备清单明确定期上传的需要,取决于特定的设备协议,这可能支持或可能不支持变更通知。比如,假设一个设备是通过设备上的按压控制器或启动本地设备管理软件,来进行本地操作的。如果设备协议不能传递这些变更,那他们只能通过定期地查询设备被发现。从另一个例子来看,假设新的设备只能通过定期地扫描传感器网络中的一个网络地址范围被发现,则该步骤肯定是由agent来完成的。

请注意,设备agent在设备拓扑结构和设备的任意配置属性上假设数据的所有权,因此可能会在设备清单中覆盖类似的信息。

从应用程序处接收数据和指令

现在,拓扑结构已在设备清单中被建立,设备可以从物联网应用程序上可见和操作。如在设备控制章节"QuarkIoE的域名模型"中所述的,物联网应用程序可以向在核心中排队的设备发送操作。agent必须为定向的操作查询其设备的核心。

如果一个操作被发送到一个agent的设备处,则agent会将操作转化为设备特定的表示方式。比如,一个Multispeakagent可以将一个操作转化为设置电表SOAP"初始连接/断开"请求的开关状态。然后被转化的操作会被发送到设备处。

最后,agent确认操作的执行。同时它也需要更新设备清单。在上述例子中,它也可以更新设备清单中开关的状态。

发送传感器的读书、事件、报警和审核日志。

除了设备的远程控制,agent的另一个主要职责是从传感器传输数据。该数据可以是多种类型的,如域模型中描述的:

  • 由读取的传感器值生成的测量值。有时候是在静态间隔下读取,并发送到平台的数据(如温度传感器或电表)。有时候是按需要或非频繁间隔下读取的数据(如体重秤等健康设备)。无论设备支持何种协议,agent都会通过上传数据到QuarkIoE,负责将其转化为"推送"协议。Javaagent库通过一个调度程序简化了传感器的定期轮询(参见Javaagent)。
  • 需要由IoT应用程序实时处理的事件,例如来自运动检测器的通知或来自自动售货机的事务。
  • 需要人力干预的报警事件。例如,由电表发送的篡改事件。
  • 以风险管理为目的而记录的审核日志事件。例如,登录失败。

更新agent配置

agent配置可能需要在运行时进行变更。比如,需要将新的网关安装到传感器网络上,并且可能需要将访问网关的地址和凭证发送到agent处。这是通过发送定向的设备控制请求到agent本身来实现的。在处理了该配置后,agent可能会在设备网络上执行一个可能发生的变更的上传。

整合其他数据源

系统集成

到目前为止,我们主要讨论了与物联网设备交换的数据。然而,另一种agent使用常用情况是在系统集成的时候。提供物联网使能服务的企业通常都运行着其他的IT系统,这类系统用于提供物联网资产和设备的重要信息。该类系统的例子有:

  • 可以提供有关可用设备和其安装位置附加信息的资产管理系统。
  • 可以提供已安装设备的客户信息的客户关系管理系统。
  • 可以提供设备维护状态信息的劳动力管理系统。

从技术上来说,为系统集成开发和运行一个agent,与为设备集成开发和运行agent没有什么不同。然而,系统拥有的数据子集是不同的。针对设备集成的agent具有设备层级结构和设备配置的信息。而用于系统集成的agent为设备设备提供附件信息,并且可能拥有资产层级结构的部分信息。它们在一起有助于为储存在设备清单中的设备信息,提供一个与物联网服务相关的一切资产和设备的集中视图。

QuarkIoE是怎么样支持agent开发的?

QuarkIoE在三个不同的级别上支持agent的开发?

  • 有一些全功能的开源agent和驱动程序在QuarkIoE的bitbucket.orgmbed.org 存储库中。更多的信息请在该文档的"设备"部分查找。
  • 针对主要运行环境的客户端库,例如C/C++,JavaME/SE和Lua,同样也在bitbucket.org中具有开源代码。
  • 针对其他运行环境的技术中性的REST APIs

总结

agent为物联网数据源提供接口,比如设备和外部IT系统,agent是使物联网网络进行全方位集中体现和对物联网网络进行中心操作的软件组件。