如何构建物联网网关?

今天和大家分享的是如何构建一套智能物联网网关。我们将利用Ansible实现该网关的自动化配置,当然Ansible亦适用于配置管理及应用部署。如果大家面对大量网关配置与部署工作,那么Ansible绝对是值得强烈推荐的优秀工具。

    下面来看此网关的几大主要组件:

  红帽企业 Linux:提供企业级基础。

  红帽 JBoss A-MQ: 对传感器数据进行评判。

  红帽 JBoss Fuse:传输传感器数据并将其路由至端点。

  红帽 JBoss BRMS:在边缘位置实现实时决策制定。

  在网关配置完成后,我们将启动红帽JBoss Fuse,而后构建并部署路由与业务规则服务,从而使其开始运作。我们随后会启动一款传感器应用,其利用MQTT将温度数据发送至红帽JBoss A-MQ代理。这些消息会被转发至我们此前启动的服务处。最后,我们将创建业务规则,用于在传感器值达到阈值时触发对应操作。

注意:在开始之前,大家首先需要在网关内的Downloads文件夹内保存一份红帽JBoss Fuse 6.2.1

  第一步:利用Ansible准备主机系统

  在主机设备上克隆项目库。

  打开终端并输入以下命令:

  [user@localhost ~]$ git clone -b Virtual-Lab-1-Host https://github.com/RedHat-IoT/Virtual_IoT_Gateway.git

  利用网关IP地址更新主机文件[Virtual-IoT-Gateway/Ansible/host],并将该主机的公钥存放于远程网关上(Ansible会利用ssh与远程系统进行通信)

  更新Ansible playbook BuildGW文件[Virtual-IoT-Gateway/Ansible/BuildGW],将其中的用户名修改为您网关的实际值:user=’user name’

  输入以下命令以启动该Ansible playbook

  [user@localhost ~]$ cd Virtual_IoT_Gateway/Ansible

  [user@localhost ~]$ ansible-playbook BuildGW

  让Ansible运行此playbook中的各项任务。一旦Ansible完成执行,我们即可准备直接操作此网关。

  第二步:登录至该网关

  注意:在此套网关中,我们使用了username = ‘demo-user’password = ‘change12_me’

  第三步:启动红帽JBoss Fuse服务器

  开启新shell,输入以下命令:

  [demo-user@localhost ~]$ cd

  [demo-user@localhost ~]$ cd IoT_Summit_Lab

  [demo-user@iotlab IoT_Summit_Lab]$ ./runJBossFuse.sh

  等待红帽JBoss Fuse服务器完成启动流程。

  红帽 JBoss Fuse需要安装‘camel-mqtt’ OSGi功能以处理MQTT消息。

  在‘JBossFuse’命令提示符下输入以下命令:

  JBossFuse:karaf@root> features:install camel-mqtt

  最小化此shell,保持Fuse服务器在后台运行。

  第四步:构建并部署Camel Route

  传感器数据将由Camel Route负责传输及路由。现在我们需要构建红帽JBoss Fuse项目并将其部署至正在运行的Fuse服务器当中。我们将利用其提供的脚本以构建并部署此项目。

  在终端内执行以下命令:

  [demo-user@iotlab Software_Sensor]$ cd

  [demo-user@iotlab ~]$ cd IoT_Summit_Lab/

  [demo-user@iotlab IoT_Summit_Lab]$ ./runRoutingService.sh

  我们可以登录至JBoss Fuse管理员控制台以验证此Camel route是否部署完成。

  第五步:创建业务规则

  智能物联网网关最为重要的功能之一,是在传感器数据满足业务规则中设定的特定条件时触发对应操作。在本章节中,我们将了解如何创建一项业务规则服务。此服务将通过以下方式起效:

  1. Message队列中读取传感器数据。

  2. 将传感器数据传递至规则执行引擎,并由后者根据定义规则触发操作。

  3. 经过变更的数据被放置在另一已定义Message队列中。

  这里我们将使用微软Excel决策表来定义业务规则。下图所示为一套决策表实例,其中每一行表代表一条规则。蓝色的列为条件(conditions)”,而黄色的列则定义一项操作(action)”。规则语法非常简单:如果满足某条件,则执行某操作。

  这套规则系统会从电子表格中读取规则,并将其按以上语法进行编译。在本示例中,我们的业务规则电子表格可用于创建新规则。

  下面来看表格中各列所代表的含义:

  Alerting Rule(警告规则):规则名称。此为可选字段,但在调试中非常有用。

  Device Type(设备类型):传感器所报告的设备类型。

  Payload(有效载荷):此规则需要匹配的数字范围。

  Result(结果):由规则触发的操作,即将值更改为01

  打开示例规则表格:‘DecisionTable.xls.’

  填写以下信息以创建两项规则:

  规则一:如果我们读取到的温度为060之间,则将结果字段变更为0

  规则一:如果我们读取到的温度为61100之间,则将结果字段变更为1

  注意:在第二条规则Payload列中,在“61”“100”之间添加一个空格。

  注意:将表格保存为微软Excel格式。

  点击此处 查看此业务规则服务 的具体细节。

  第六步:构建并运行业务规则服务

  现在我们已经完成了规则添加,接下来需要构建新的服务版本并加以启动。

  在终端内执行以下命令:

  [demo-user@localhost IoT_Summit_Lab]$ cd

  [demo-user@localhost ~]$ cd IoT_Summit_Lab/

  [demo-user@localhost IoT_Summit_Lab]$ ./runRulesService.sh

  其应显示以下输出结果:

  < output truncated > AMQ-Broker tcp://localhost:61616 ready to work!

  Device-Type = temperature

  Device-ID = 4711

  Payload = 70

  Result = 1

  ----------------------

  Sending 18.05.2016 10:46:22 766temperature47117000.01

  第七步:测试规则服务

  我们通过软件传感器发送一条测试消息,从而进行服务测试。具体步骤如下:

  软件传感器通过MQTT发送一条高值。

  路由服务获取该值后,将其转换为消息并发送至AMQP消息队列。

  业务规则服务从队列中获取此消息,并在其滞业务规则条件时将其添加至另一AMQP消息队列。

  在新终端内输入以下命令:

  [demo-user@localhost Desktop]$ cd

  [demo-user@localhost ~]$ cd IoT_Summit_Lab/

  [demo-user@localhost IoT_Summit_Lab]$ ./runHighSensor.sh

  输出结果如下:

  Starting the producer to send messages

  Sending '70,0'

  AMQ-Broker tcp://localhost:61616 ready to work!

  Device-Type = temperature

  Device-ID = 4711

  Payload = 70

  Result = 1

  ----------------------

  Sending 17.05.2016 15:08:59 265temperature47117000.01

  ----------------------

  大家也可以利用另一种方法进行消息验证,即通过‘http://localhost:8181’'查看红帽JBoss Fuse控制台。这里的入队与出队消息数量应该显示,已经有一条消息由message.to.rules’处获取并被放置在‘message.to.datacenter’当中。

  注意:Fuse控制台的登录名/密码为admin/change12_me

  总结

  我们可以利用Ansible并配合红帽自动化工具轻松完成智能物联网网关的构建工作。这套企业级智能物联网网关基于多项开源技术,包括红帽企业Linux、红帽JBoss Fuse、红帽JBoss BRMS以及红帽JBoss A-MQ

  这里我们已经提供了示例代码,包括部署路由机制与业务规则服务以保证此智能物联网网关开始正常运作。其中传感器应用负责向A-MQ代理发送温度数据。这些MQTT消息由我们此前启动的服务进行处理。最后,我们创建了业务规则,用于在传感器值达到阈值时触发特定操作。

 

来源: 51CTO安全资讯

以工业能源、资源计量和监测为背景,设计了一种基于和的工业 物联网网关设备。实现了多种协议的工业计量仪表的数据采集、本地存储和远传。本文 利用工业级微控制器芯片,通过引脚复用,实现了七路数据采集端口。 采用芯片加以有效的信号隔离、电源隔离措施,实现了串行端口到总 线的自动双工转换。 在网络传输方面,本文充分利用微控制器的以太网介质接入层控制器,通过 接口连接芯片,实现了的双工以太网通信。 本文对网关设备设计的讨论主要分三方面,分别是硬件电路的设计与实现、系统软 件的设计和应用层软件的设计。 网关设备的硬件部分主要包括微控制器、电源、日历、存储器、声卡、网卡、 接门、接门以及卡扩展槽等的原理分析和电路设计、板图的设计、制板及 硬件电路的调试。 系统软件方面采用作为引导加载程序,设了一个基于内核的嵌入式 操作系统并根据需要修改了部分驱动程序。操作系统采用制作了常用的系统工 具,并使用创建了根文件系统。 在系统的基础上,本文采用语言幵发了三种工业远传仪表规约的应用层 实现,利用和两种方式实现与服务器的通信并根裾国家的相关标准实现 了数据采集和远传。 最后,本文针对网关设备的功能,进行了部分测试,并对功能的扩展和进步测试 做出了展望。
NB-IoT现阶段访问一个服务器只能通过IP地址加端口的方式,省去了DNS解析,如果产品以后的IP变化或者改变了服务端的IP地址,就需要一个DNS解析的功能。 通过DNS解析某个域名的IP地址,获取到IP地址后再进行通信。 如果NB-IoT模块只能绑定一个IP,则可以通过这个IP先获取其他IP列表,然后统一经过这个IP进行转发。 参考: 1.1.2 NB卡准备 模组使用的SIM卡为中国电信物联网专用NB卡,如下图正面(留意NB字样,无此字样的均为不合法的NB卡): 背面(留意其ICCID号,在让运营商开放IP白名单时可能需要此号码,相当于手机卡的手机号): 重要:收到卡后,需要致电背面的客服电话, 使其将您自己的IP地址加入访问白名单,此一步完成后,方能进行下面的步骤,切记切记 。 如何判定服务器IP已被加入访问白名单,使用如下两种方式: 1. AT+NPING 指令,通过PING自己的服务器地址,如返回ERROR,则多半(尚需继续排除防火墙因素)未就绪; 2. UDP通讯,如能与自己的服务器直接连接UDP通讯,那可以证明一定就绪; 1.1.3 服务器准备  首先您需要有一个固定IP的公网服务器,由于目前BC95暂不支持域名解析,故必须使用IP地址配置方式。  服务器可以使用阿里云服务器,目前本CoAP端暂未开源,有Windows 32位、Windows 64位、Linux CentOS 6、CentOS 7的可执行文件,请暂时选择以上指定系统;  CoAP标准协议使用 UDP 5683 端口,当然您也可以自定义此端口,必须让防火墙放通UDP 的指定端口;  CoAP网关需要使用WEB方式进行设备管理、用户管理等,默认使用 TCP 8080 端口,同 理,防火墙必须放通此端口; 1.1.4 模组准备 推荐使用 串口调试助手 sscom 来调试NB模组,如下,首先将您的NB模组上电使其启动,使用AT指令能收到OK的回复,证明已启动完毕,按如下步骤进行: 基础配置 1. 配置 NCDP 服务器,使用的指令序列为 AT+CFUN=0 +NCDP=103.37.149.19,5683 AT+NRB 留意 IP 地址必须为您自己指定的IP地址,如果暂时没有,也可以用 如上 地址临时使用(但 WEB 设备管理地址也需换成这个IP),完成后重启了设备; 2. 等待设备附着网络后,使用 AT+NPING=103.37.149.19 尝试PING自己的服务器,当返回ERROR时,极有可能是 IP 白名单未成功配置的缘故; 3. 使用 AT+CGSN=1 查询设备 IMEI 号,并将设备的 IMEI 注册到 WEB 平台,如果在上面操作 过,可忽略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值