# 目标实现:
**阿里云物联网平台某设备实时数据(MQTT协议上云)同步存储到RDS MySQL数据库**
# 实现步骤:
`注意:以下实现默认MQTT上云已经完成,可实时上传数据`
1、物联网平台接收到数据通过规则引擎转发至DataHub。
2、在DataHub中通过DataConnector将数据同步到RDS MySQL数据库中
[阿里云教程概述](https://help.aliyun.com/document_detail/92024.html?spm=a2c4g.11186623.6.1062.2ff21f67pr8772)
![image-20210723231641378](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210723231641378.png)
# 细节!!!拿来吧你!
## 1、创建RDS MySQL数据库表
这步的依据是什么?
答:物联网平台的设备有什么数据?以我这边的情况为例,有甲醛、PM2.5。
![image-20210723233430175](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210723233430175.png)
思考:是不是现在新建一张数据表,表中创建两个就可以字段,分别是HCHO(甲醛)、PM25(PM2.5)就可以了呢?
答:表结构实际上有点问题,因为这样的话那`主键未明确`,后面还要查出来看的,不单单是存着就好,于是这里决定再加一个字段id作为主键(或许也可考虑复合主键,),`并设置自动递增,因为原设备上云数据中没有对应id的值`,然后可以再加两个字段`create_time 和 devicename`,`create_time 和 devicename的值`可通过`阿里云内置函数`获取,后面会讲到。
![image-20210723235021055](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210723235021055.png)
至此,第一步就完成了
## 2、创建DataHub项目
DataHub通俗理解:它是一条线,把两个阿里云的产品连起来,通过一些转发规则完成产品之间的数据流转(我瞎扯的可能不准确,具体可看官网文档)
1、开通服务(有个梗:这游戏求你下一个吧,不用钱好吧)
2、创建项目
![image-20210724001052217](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210724001052217.png)
点击新建项目,随便填,我这里填项目名`alice_air`
![image-20210724001409258](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210724001409258.png)
3、新建Topic
Topic通俗理解:一个话题,物联网平台后面需要去订阅这个话题,把数据同步到Datahub
![image-20210724002619605](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210724002619605.png)
4、同步到RDS MySQL数据库
`注意:我这里先配完DataHub同步数据库,后配置物联网同步到DataHub,当然你也可以先配物联网同步到DataHub,看看DataHub有没有`实时流量`显示`
**点击`查看`**
![image-20210724003009151](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210724003009151.png)
**点击`同步`**
![image-20210724003707089](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210724003707089.png)
**选择`RDS & MySQL`**
![image-20210724003805731](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210724003805731.png)
`新建Connector`(配置对应的MySQL Host,数据库、数据表)
![image-20210724004320554](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210724004320554.png)
至此,第二步也完成了。
## 3、规则引擎
`这步是为了把物联网平台数据转发到DataHub`
1、云产品流转
![image-20210724005807322](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210724005807322.png)
2、创建规则
![image-20210724005525075](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210724005525075.png)
3、选择json(我这边设备数据是通过json格式上云)
![image-20210724010035642](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210724010035642.png)
4、编写SQL
![image-20210724010224744](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210724010224744.png)
![image-20210724011614008](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210724011614008.png)
5、转发数据到DataHub,添加规则
![image-20210724011837618](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210724011837618.png)
![image-20210724012054541](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210724012054541.png)
`注意`:${key},key是什么,key就是`编写SQL`时,`as xxx` 的那个`xxx`
items.HCHO.value as HCHO ==> ${HCHO}
最后`确定`,完美撒花?NO,注意,记得`启动`,这下应该完美撒花了。
![image-20210724012748167](C:\Users\黄子豪\AppData\Roaming\Typora\typora-user-images\image-20210724012748167.png)
经过以上步骤,如果数据库并没有新增任何数据记录,可一步一步排查问题。
1、先确定设备数据是不是在`实时上传`,在物联网平台查看设备`物模型数据`
2、看看DataHub有没显示`实时流量`数据,没有的话说明`云产品流转`这块没弄好
3、如果DataHub有数据流量显示了,说明很可能是`配置MySQL数据库`有问题,看看账号密码,host地址,和网络类型等。