当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘 要:消息中间件是一种被广泛采用的企业级异构系统集成方式,在物联网应用中同样面临着异构系统的集成问题。为解决物联网系统中异构节点之间的数据通信问题,提出了一种基于消息中间件的集成方案,并基于该方案设计实现了环境监控系统。系统使用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 功能模块即可可靠地实现数据通信。但由于消息通信的时间延迟,只能在非实时的场景下应用。




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

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭