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




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

【2024年5月9日,德国慕尼黑讯】信息安全与功能安全在汽车行业发挥着日益重要的作用,即便在低端微控制器应用中也不例外。与此同时,汽车制造商正在用触摸表面取代机械按钮,实现简洁的驾驶舱和方向盘。因此,电子电路的空间受到很...

关键字: 物联网 电子电路 微控制器

深圳2024年5月6日 /美通社/ -- 从4月23日的一场大会开始,到24-26日的IOTE会展节,我们共同见证了物联网领域的最新技术、产品和解决方案的集中展示,感受到了AIoT释放数字经济潜力的巨大能量。今天以展商满...

关键字: IoT 物联网 TE AIOT

北京,2024年5月7日——负责监管蓝牙技术的行业协会蓝牙技术联盟(Bluetooth Special Interest Group,SIG)发布年度报告《2024年蓝牙市场最新资讯》。该报告介绍了蓝牙技术在各个行业和市...

关键字: 蓝牙 物联网 智能家居

【2024 年 5 月6日,德国慕尼黑和台湾新北市讯】全球电源供应器制造商及电力电子行业领导者群光电能 (Chicony Power; TWSE:6412)(以下简称群电) 宣布其年度合作伙伴奖项得主,全球功率系统和物联...

关键字: 氮化镓 物联网 电源

【2024年4月29日, 德国慕尼黑讯】嵌入式安全被认为是物联网(IoT)应用部署的一个重要属性。英飞凌科技股份公司(FSE代码:IFX / OTCQX代码:IFNNY)近日宣布,其新型PSOC™ Edge E8x MC...

关键字: 微控制器 MCU 物联网

此战略布局将Wi-Fi HaLow置于台湾无线网络产业中心

关键字: Wi-Fi 无线网络 物联网

芯科科技推出其迄今最高能量效率且支持能量采集功能的无线SoC

关键字: 物联网 能量采集 SoC

【2024年4月24日,德国慕尼黑讯】英飞凌科技股份公司(FSE代码:IFX / OTCQX代码:IFNNY)发布全新PSOC™ Edge微控制器(MCU)系列的详细信息,该系列产品的设计针对机器学习(ML)应用进行了优...

关键字: 物联网 机器学习 MCU

TDK株式会社(东京证券交易所代码:6762)新近推出InvenSense SmartEdgeMLTM解决方案,这是一种先进的边缘机器学习解决方案,为用户提供了在可穿戴设备、可听戴设备、增强现实眼镜、物联网 (IoT)...

关键字: 机器学习 物联网 传感器

TDK 株式会社(东京证券交易所代码:6762)隆重宣布其具有片上处理能力的 InvenSense SmartSonic™ICU-10201 超声波飞行时间 (ToF) 传感器全面上市。该传感器可助力实现高性能和低功耗的...

关键字: 飞行传感器 物联网 机器人
关闭
关闭