数据转发到云数据库 MySQL

最近更新时间:2025-12-29 15:26:13

我的收藏

概述

规则引擎支持用户配置转发规则,将符合条件的设备上报数据转发到云组件 MySQL ,您可以在 MySQL 控制台 或者使用云 API 创建 MySQL 实例和表后,即可将设备消息中的指定字段写入到对应的 MySQL 表中。
下图展示了规则引擎将数据转发给 MySQL 的整个过程:




前提条件

已有可使用的实例,可参见 实例管理
已配置物模型,具体操作可参见 配置物模型
已创建 MySQL 实例,具体操作可参见 管理实例

配置步骤

1. 登录 物联网开发平台控制台,单击目标实例进入产品列表
2. 单击产品名称进入产品详情页,选择功能定义,找到对应要转发的物模型数据字段。(本文以电源开关、亮度和场景为例)

3. 选择左侧菜单栏规则引擎,单击新建规则完成创建。

4. 单击名称进入规则详情页面,单击筛选数据右侧的编辑来配置规则。
字段填入第2步的物模型数据字段,这里选择物模型属性上报,在对应字段应该加 params. 字段才行。如下图:

5. 在规则详情页面,单击添加行为操作。第一次使用时会提示用户授权访问 MySQL,您需单击立即授权后才能同步 MySQL 数据信息。

5.1 选择“数据转发到云数据库(MySQL)”,授权成功后,需要配置 MySQL 实例信息和写入的字段信息,如下图所示。

5.1.1 选择地域和实例。
5.1.2 输入实例所属的账户用户名和登录密码。
5.1.3 选择需要写入的数据库名。如果创建的 MySQL 实例下还没有建立数据库,请前往 MySQL 控制台创建一个新的数据库。具体操作请参见 建立数据库和表
创建表数据库SQL示例:
CREATE TABLE my_table (
id INT AUTO_INCREMENT PRIMARY KEY,
field1 VARCHAR(1024),
field2 VARCHAR(1024),
field3 VARCHAR(1024),
json_field JSON,
int_field1 INT,
int_field2 INT,
int_field3 INT
);
5.1.4 选择要写入的表。如果创建的数据库下还没有建立表,前往 MySQL 控制台创建一个新的表。

5.1.5 配置要写入的字段。这里有两列:"字段名称"和"值"。"字段名称"对应的是数据库表中的字段,表示要写入的字段。"值"表示要写入对应字段的值。值的来源可以是消息体(注意消息体必须是 JSON 格式才支持提取值),或者是在这里填入常量。
注意:
如果来源是消息体,那么使用“${}”来引用消息体内的字段。如果要指定常量,直接填相应的值就行了,例如5或者 hello 这样的数字或者字符串字面值。
需先在云组件 MySQL 中创建完成数据库、表以及字段名称之后才可成功将数据写入数据库。
更多详情请参见 建立数据库和表
说明:
物模型字段的数据类型要和 MySQL 表定义的类型一致,否则会无法写入至 MySQL 表里。暂不支持数组写入。
5.2 配置完成后单击保存即可。
5.3 行为操作创建好后,还需同步登录 MySQL 产品进入数据库控制台创建表,MySQL 字段映射示例如上文步骤5.1处所示。
6. 设备侧需要先上报物模型消息到平台,消息格式示例如下:
{
"method":"report",
"clientToken":"123",
"params":{
"power_switch":1,
"brightness":11,
"scene":3
}
}
这边用 MQTTX 工具 来模拟设备侧上报数据,需要提前订阅好该设备的上下行 Topic,如下图所示:

若订阅的设备消息 code 返回为0,则表示物模型属性上报成功。失败可具体参考 code 错误码。
code
说明
400
报文格式非 JSON 格式。
403
错误的 method 标识符或属性、事件、行为标识符与物模型定义的标识符不一致。
405
时间戳错误,当前时间和上报时间相差24小时,注意时间戳是毫秒。
406
物模型参数输入值数据类型错误或数据超出定义范围。
503
系统内部错误。
7. 确认好设备侧属性上报无误后,可在对应规则的 SQL 调试中输入 Payload 内容。参考调试结果,若结果为空则需回到第4步检查 params. 字段。结果正常如下图所示:

8. 转发成功后,MySQL 中显示的信息如下图所示:


重发机制

重发机制用于在消息转发过程中发生失败的情况下,进行再次重发以达到接收消息的目的,具体说明如下:
若消息转发失败,系统则会进行转发重试,重试按照1s、3s、10s的时间间隔依次进行,若三次重试均失败,则将消息丢弃掉。
若用户配置了“转发错误行为操作”,在三次重试失败后,将按“转发错误行为操作”的配置,再进行一次消息转发,如果仍失败,则将消息丢弃掉。