# 目标实现:
**阿里云物联网平台某设备实时数据(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通俗理解:它是一条线,把两个阿里云的产品连起来,通过一些转发规则完成产品之间的数据流转(我瞎扯的可能不准确,具体可看乐橙lc8官网文档)
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地址,和网络类型等。