1. 概述
本文通过一个DEMO,演示了如何基于阿里云产品和服务实现设备数据在大屏上显示。在设备端模拟两个点位,通过MQTT协议向阿里云物联网平台设备(高级版)发送数据,物联网平台接收到数据后通过规则引擎转发至DataHub,接着在DataHub中通过DataConnector将数据同步到RDS MySQL数据库中,最终使用DataV将RDS MySQL中数据呈现在大屏上。
物联网平台转发至DataHub是因为DataHub可以将数据同步至MaxComputer,为后续数据计算做准备。
2. 物联网平台
物联网平台主要负责获取设备端数据,并通过规则引擎将数据转发至Table Store、DataHub、RDS、Message Service、Message Queue、HiTSDB、FC以及另外一个Topic。
2.1. 创建产品
[1] https://iot.console.aliyun.com/
[2] 【产品管理】-【高级版】-【创建产品】
2.2. 添加设备
[1] 【设备管理】-【添加设备】
2.3. 创建规则-处理数据
[1] 【规则引擎】-【创建规则】
[2] 编写SQL
n 【规则引擎】-【规则列表】-【管理】:规则详情
n 完成【字段】、【Topic】的填写后,自动生成【规则查询语句:】SELECT content, age FROM “/a1aTa12qI93/myiRobot/user/update” WHERE
2.4. 规则引擎-添加操作
[1] 【添加操作】-【发送数据到DataHub】:如果未创建DataHub,则按第3小节说明创建DataHub。
2.5. 启动规则引擎
3.1. 创建Topic
[1] 进入阿里云DataHub控制台https://datahub.console.aliyun.com/
[2] 【项目管理】-【华东2(上海)】-【创建Project】
[3] 【项目列表】-【查看】-【创建Topic】:添加两个点位,c1和c2
3.2. 数据同步
[1] 【项目管理】-【华东2】-【myirobotdatahub】-【查看】-【gettwostring】-【查看】-【DataConnector】
[2] 【同步到RDS Mysql】: 如果RDS未创建,则按第4小节描述操作
4. RDS Mysql
4.1. 创建实例
[1] https://rdsnext.console.aliyun.com
[2] 创建实例后,需等候几分钟。
4.2. 建表
[1] 【云数据库RDS】-【管理】-【基本信息】:以下数据需要在DataHub中填写
n 内网地址
n 内网端口
[2] 【云数据库RDS】-【管理】-【账号管理】:root和密码
[3] 【云数据库RDS】-【管理】-【数据库管理】-【创建数据库】:mydb
[4] 【云数据库RDS】-【管理】-【数据库管理】-【数据安全性】:设置成允许任何IP访问, 0.0.0.0/0
[5] 【云数据库RDS】-【管理】-【登录数据库】:通过DMS管理数据,新建表mytable,两个字段
5. DataV
[1] http://datav.aliyun.com/ 51元/年
[2] 数据源:【域名】填写RDS内网地址,【名称】可自定义,【用户名】和【密码】和RDS中设置保持一致
[3] SQL: SELECT c1,c2 FROM mytable
[4] 【我的可视化】-【新建可视化】:选择列表区域后,右下角【自定义列】
n 标签1
Ø 列字段名c1
Ø 列显示名content
n 标签2
Ø 列字段名c2
Ø 列显示名age
6. 验证
6.1. 运行MQTT客户端
[1] 进入官网:www.aliyun.com
[2] 【文档】-【阿里云物联网平台】> 【设备端开发指南】> 【SDK使用参考】> 】JAVA-SDK (MQTT)】
[3] 下载iotx-sdk-mqtt-java-20170526.zip
[4] 解压iotx-sdk-mqtt-java-20170526
[5] 导入Eclipse
n 【file】-【import】-【Maven】-【Existing Maven Projects】
n 编辑SimpleClient4IOT.java文件以下内容
(1) 修改设备三元组
n public static String deviceName = "myiRobot";
n public static String productKey = "a1aTa12qI93";
n public static String secret = "WvHXg4EZqSFkVephkPQ1N1**********";
(2) 修改topic
n private static String subTopic = "/" + productKey + "/" + deviceName + "/user/get";
n private static String pubTopic = "/" + productKey + "/" + deviceName + "/user/update";
n 修改content
(3) 运行Java Applicatiion
6.2. DataHub控制台
6.3. RDS
6.4. DataV