IoT 企业物联网平台,从设备端到云端业务系统全链路开发实战

通过阅读本文你将学会以下技能:
设备通过MQTT协议与您在阿里云上购买的IoT企业实例建立双向连接,上报设备采集的数据,监听云端下达的指令;
通过规则引擎配置把上报的数据实时存储到指定数据库,无需编写代码
通过规则引擎配置把上报的数据实时流转到业务服务器,需要使用AMQP协议SDK
业务服务器调用IoT平台的API,下达控制指令到设备端
一、创建企业实例
首先,我们登录物联网平台控制台(https://iot.console.aliyun.com), 点击购买实例来创建一个企业实例。

然后,在购买页面,根据实际业务需求,选择地域、实例类型、设备数量、消息上下行TPS、规则引擎TPS等参数,点击立即购买,付费成功后,即可看到企业实例创建中。

稍等几分钟后,企业实例创建完成。进入企业实例,我们可以看到当前规格参数,设备接入点信息,AMQP订阅接入点信息,云端API调用接入点信息。如下图:

二、创建产品和注册设备
在企业实例的设备管理页面,我们需要先创建一个产品家庭温控器,数据通信以JSON格式,认证方式为设备秘钥。

在产品的功能定义页面,我们添加温度和湿度两个属性,具体细节如下图:

最后,我们在设备管理页面,基于家庭温控器产品,注册一个物理设备,并获取设备身份认证的三元组。如下图:

三、设备接入和上报数据
获取设备身份三元组后,即可通过MQTT协议接入到我们开通的企业实例。设备端应用程序逻辑如下图:

完整的Nodejs示例代码如下:
启动模拟脚本后,我们看到设备状态为在线,物模型数据中可以看到最新上报的温度和湿度值。

在监控运维的日志服务里,也可以看到设备上报数据的日志。如下图:

四、数据存储到数据库
首先,我们创建一个表格存储实例 IoTDataStore,建立一张数据表iot_data,以deviceName和timestamp为主键。如下图:

在IoT企业实例,云产品流转中创建规则引擎,编写数据处理SQL,配置流转目的地为上面创建的数据库表。

数据处理SQL编辑界面:

数据流转到表格存储编辑界面:

当设备有数据上报后,我们就可以在表格存储的iot_data表中实时看到存储的数据了。如下图:

在企业实例的日志服务中,我们可以查看到完整的流转日志,协助我们排查数据链路异常。如下图:

五、业务服务器实时接收数据
IoT场景中有些数据需要业务系统实时处理,这时我们可以通过服务端订阅AMQP方式,实时接收设备上报的数据。
首先,我们要在企业实例的服务端订阅中,创建一个新的消费组,用来接收特定类型的消息。如下图:

然后,我们在云产品流转中创建规则引擎,编写数据处理SQL,配置流转目的地为上面创建的服务端订阅消费组。

最后,我们在业务服务器编写程序,使用阿里云账号的AccessKey与IoT企业实例建立AMQP连接,参考代码如下:
在AMQP的回调中处理收到的业务数据,参考代码如下:
启动业务服务器后,我们看到不断有设备数据流转过来,如下图:

在企业实例的控制台,服务端订阅中,我们也可以看到消费组的运行情况,包括消费速率,消息堆积量,消费客户端列表,如下图:

在企业实例的控制台,日志服务中,我们可以看到完整的消息流转日志,如下图:

六、下达云端控制指令
业务系统通过调用IoT物联网平台提供的HTTPS API 可以给指定设备下发控制指令,调用过程如下:

Pub API调用的参考代码:
运行日志:

在企业实例的控制台,日志服务中,我们也可以追踪到完整的下行链路日志,如下图:

版权声明: 本文为 InfoQ 作者【IoT物联网技术】的原创文章。
原文链接:【http://xie.infoq.cn/article/2cb679e572df167776b68dfd7】。文章转载请联系作者。
评论