当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘 要:消息中间件是一种被广泛采用的企业级异构系统集成方式,在物联网应用中同样面临着异构系统的集成问题。为解决物联网系统中异构节点之间的数据通信问题,提出了一种基于消息中间件的集成方案,并基于该方案设计实现了环境监控系统。系统使用OSGi插件技术对物联网网关功能进行扩展,使其支持JMS消息通信。系统测试表明,节点通过消息机制实现了异构系统集成。

0 引 言

物联网应用系统是一个复杂的分布式系统,系统通常由数管理界面以及支持Amazon AWS IoT,Microsoft Azure IoT 和IBM IoT 云服务的接口 [4]。Kura 运行在 Java 虚拟机(JVM)上,据采集节点、执行器节点和网关组成,不同功能节点之间可以使用模块化 OSG(iOpen Service Gateway Initiative,OSGi)技

使用 ZigBee,BLE 等通信协议实现数据通信。通常情况下,这些协议的实现要求所有节点使用同一种开发环境,部署在同一款软件框架上,在实际应用中,更多的是对原有系统的扩展或者是在原有系统之上再叠加一层新系统。用户更关注如何复用已有的软硬件资源,以减少开发周期并降低成本。原有节点可能由不同的开发语言实现,运行在不同的框架和平台之上。如何在不同的模块、平台和应用之间进行数据通信是实际应用过程中亟待解决的问题。消息中间件是解决企业应用系统异构集成的一种有效方法 [1-2],这种方法也同样适用于物联网 [3]。物联网中的分布式节点本身就是一个小型的嵌入式系统,其硬件配置足以支持其上运行嵌入式操作系统和服务管理软件,从而为基于消息的异构系统集成在物联网节点上的实现提供了可能。

本文对基于消息中间件的物联网应用异构系统集成进行了探索,并在环境监控系统中对设计方案进行了验证。传感器节点和网关分别使用不同的开发语言和客户端软件,传感器节点采用Python 开发,网关使用基于 OSGi 框架的插件技术,对网关管理软件 Kura 的服务进行扩展,使其支持 JMS(Java Message Service,JMS)。借助部署在网关的 ActiveMQ 消息中间件,实现了在不同节点之间通过消息机制进行数据通信的目的。

1 相关技术介绍

1.1 Kura 开源网关框架

Kura 是 Eclipse 基金会发布的物联网项目,用于构建 IoT网关框架,它提供了一种使用开源硬件作为网关的方式。Kura内部嵌入了多种对网关容器进行管理的服务,包括 UI Web管理界面以及支持 Amazon AWS IoT,Microsoft Azure IoT 和IBM IoT 云服务的接口[4]。Kura 运行在 Java 虚拟机(JVM)上,使用模块化 OSGi(Open Service Gateway Initiative,OSGi)技术实现。由于网关基于动态可插拔的模块化技术实现,因此用户可以很方便地创建自己的功能插件,并集成到系统中实现网关功能的扩展 [5-6]。Kura 遵循 OSGi R4 规范,其核心设计思想是面向服务的组件模型。在 OSGi 中,组件或模块称为 bundle,OSGi 支持软件热插拔、多版本并存,具有动态模块化、面向服务架构和模块扩展等功能,OSGi 的模块扩展功能可以在不改变原有模块代码的情况下注入新的功能或更新原有功能 [7]。

1.2 ActiveMQ 消息服务

消息中间件基于消息驱动方式,为异构系统和平台提供了一种高效、可靠的数据通信服务 [8]。ActiveMQ 是被广泛使用的基于 JMS 规范的开源消息中间件,它屏蔽了底层软件框架和硬件的差异,具有部署简单、占用资源少、运行可靠等特点。消息中间件不仅简化了在物联网环境下异构应用的集成,也提供了一种构建松耦合系统的方式。

2 系统框架设计

系统由传感器节点和网关构成,在局域网内采用分布式部署,节点之间通过消息进行数据通信,系统架构如图 1 所示。

消息中间件在物联网网关中的应用

传感器节点采集现场数据后,将传感器数据封装到消息负载中,并通过设计开发的 ActiveMQ 客户端软件将消息发送到网关。网关采用 Kura 框架对软硬件资源进行管理,与传感器节点的硬件运行平台相同,它们运行在开源硬件树莓派(Raspberry Pi)之上。网关不具有数据采集功能, 但具有更多的数据处理和网络管理功能。系统需要在网关中部署ActiveMQ 消息中间件,用于 JMS 消息管理。由于 Kura 框架本身不支持 JMS 服务,无法实现与消息中间件的消息通信, 因此,需要设计新的 bundle 对 Kura 网关框架进行 JMS 消息功能扩展,使其支持对JMS 消息的订阅 / 发布服务。网关既可以利用消息机制接收来自传感器节点的数据,也可对数据进行格式转换、分析,并通过 MQTT 协议与云端相连。

基于 JMS 消息的通信机制可以屏蔽通信双方的具体技术实现细节,以统一的消息协议通过第三方消息中间件实现通信, 并可以实现一对一、一对多等不同形式的消息通信模式。传感器节点可以在不同的主题上发布消息,也可以多个节点在同一主题上发布,满足了系统集成的松耦合和灵活性要求。

3 主要功能的设计与实现

3.1 传感器节点

系统中节点硬件平台均选用开源硬件树莓派开发板,其上可运行 Linux 或Win10 操作系统,开发板搭载 1.2 GHz 的64 位 ARM 处理器,板上集成 802.11 b/g/n 无线网卡和低功耗蓝牙 4.1 适配器。为连接外部设备,树莓派上配置有 40 个GPIO 引脚,支持 SPI,I2C 以及Serial 等接口和总线标准,丰富的软硬件资源可保证其不仅可作为数据采集终端,也可作为物联网系统的小型网关。

传感器节点通过 GPIO 接口连接温湿度传感器 DHT11。数据采集程序使用 Python 开发,获取数字量的环境温、湿度数据,然后调用 STOMP(Streaming Text Orientated Message Protocol,STOMP)库函数将数据封装为 JMS 消息发送到网关。 STOMP 即流文本定向消息协议,是一种面向消息中间件设计的简单文本协议。传感器节点程序流程如图 2 所示。

消息中间件在物联网网关中的应用

                                                                                                                                            图 2 传感器节点程序流程图

3.2 网关 JMS插件实现

Kura 虽然内置了大量支持物联网功能的服务,但并未直接提供对JMS 的支持。Kura 基于 OSGi 技术实现,用户可以基于 OSGi 的动态化插件技术构建自己的功能插件。为了在网关实现 JMS 客户端功能,需要做如下两方面工作 :

(1) 安装配置 JMS支持插件,OSGi 框架只能运行符合bundle规范的 Jar库文件,JMS支持库文件,以普通 Jar库文件的形式提供,因此需要将 Jar文件转变成 bundle插件。

(2) 设计可提供 JMS服务的 bundle,其实质是封装 JMS客户端的具体实现,以服务的形式发布接口,供其他 bundle调用,这部分是系统设计的核心内容。

bundle 之间通过服务的方式关联,可以降低 bundle 之间的耦合,有利于软件重用,并提高其灵活性。在发布或使用bundle 前,首先需要注册和获取 bundle 所提供的服务。服务的注册和获取主要包括如下两种方式 :

(1) 通过编码的方式在 bundle激活器中完成 ;

(2) 使用声明式服务的方式管理 bundle,由组件配置文件定义 bundle的服务接口以及插件倚赖。

相对于第一种方式,第二种方式具有更大的灵活性。本系统对插件的管理使用第二种方式,声明式服务可以保证在服务接口不变的情况下,根据需要动态配置、升级、替换bundle,并在服务切换过程中无需重启系统,实现“热插拔”。

在系统设计过程中,基于 Kura 框架设计实现了多个bundle 对原有服务进行扩展,包括 JMS 服务 bundle(JMS Service)、服务实现 bundle(JMS Service Implement)和 JMS服务支持 bundle(JMS bundle)。JMS Service 提供框架级别的服务,该服务注册后可被其他 bundle 使用。JMS Service Implement 提供具体的服务实现,将接口与实现分离,对其他插件隐藏了服务实现的细节,符合 OSGi 对模块动态性和松耦合的要求。网关扩展 bundle 之间的依赖关系如图 3 所示。

消息中间件在物联网网关中的应用

不依赖框架的任何 bundle,是一个完全独立的 bundle,它可以根据需要向外发布软件包,供其他 bundle 进行功能调用。

以上三个 bundle 使用 OSGi 机制管理 bundle 的生命周期,实现服务的注册和发布。JMS Service Implement 和 JMS Service bundle 还需要使用 Kura 框架提供的底层服务,如通过事件机制与其他 bundle 通信。

4 系统功能测试

系统测试环境包含两块树莓派 3B 开发板,板上运行Raspbian 操作系统,分别作为数据采集节点和网关,网关运行Apache ActiveMQ 5.13.0 消息中间件和网关管理软件 Kura3.1,系统工作在 Internet 和 WiFi 网络环境。测试环境硬件连接如图 4 所示。

数据采集节点以 10 s 为周期采集环境的温度数据,并以消息的形式发送到特定的主题或消息队列中。网关节点启动服务器消息中间件 ActiveMQ 和 Kura 管理软件后,ActiveMQ将来自传感器节点的消息保存在队列中,Kura 的功能扩展插件读取消息队列消息,并由其他插件对数据进行分析处理。测试结果表明,系统实现了不同节点之间异构应用的集成。

消息中间件在物联网网关中的应用

5 结 语

本文使用消息中间件实现了物联网系统的异构集成,重点对 Kura 的服务功能进行了扩展,设计实现了面向服务的JMS bunble,部署到 OSGi 框架之上,使 Kura支持 JMS 消息通信。实验结果表明,消息集成模式可以简单有效地实现物联网应用系统的异构集成,在保持原有节点功能不变的情况下,只需添加 JMS 功能模块即可可靠地实现数据通信。但由于消息通信的时间延迟,只能在非实时的场景下应用。




本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭