tencent cloud

物联网通信

动态与公告
产品动态
产品简介
产品概述
产品功能
产品优势
应用场景
产品限制
基本概念
快速入门
快速开始
场景一:设备互通
场景二:设备状态上报与状态设置
MQTT.fx接入指南
控制台使用手册
产品管理
规则引擎
子账号访问IoT
固件升级
资源管理
证书管理
开发者手册
功能组件
签名方法
设备身份认证
设备接入协议
网关子设备
消息通信
设备影子
设备固件升级
设备远程配置
资源管理
设备日志上报
NTP服务
设备端接入手册
设备接入概述
基于C SDK接入
基于 Android SDK 接入
基于 Java SDK 接入
基于 Python SDK 接入
API 文档
History
Introduction
API Category
Making API Requests
Device Shadow APIs
Device APIs
CA Certificate APIs
Product APIs
Data Types
Error Codes
常见问题
一般性问题
设备接入和上报问题
规则引擎问题
控制台相关问题
IoT Hub 政策
隐私协议
数据处理和安全协议
词汇表

数据处理

PDF
聚焦模式
字号
最后更新时间: 2024-12-27 10:29:42
创建完规则,即可编写 SQL 对某一类 Topic 中数据的处理。物联网通信控制台提供了 SQL 填写的方式,简化 SQL 语句的生成。
将 Topic 为E23VBC3GE8/device_02/event中的 JSON 消息的action targetDevice count三个字段提取出来,再通过count <= 3对数据进行过滤,得到最终处理过的数据,用于下一步数据转发。下图中示例表达的规则:


行为 Action

当从 Topic 提取到了感兴趣的字段后,就要考虑对其进行一些操作,例如,转发或者存储等。目前支持的操作有:
数据转发到另一个 Topic。
数据转发到第三方服务。
数据转发到消息队列 CKafka。
数据转发到消息队列 CMQ-Topic。
数据转发到消息队列 CMQ-队列模型。
数据转发到时序数据库 CTSDB。
数据转发到云数据库 MySQL。
数据转发到云数据库 MongoDB。
在触发转发行为时,规则引擎会对设备上报的 payload, 进行JSON 封装,格式示例如下:
1. 转发到 CMQ/Ckafka 的 JSON 示例:
{
"MsgType": "Publish",
"Topic": "AD4GVS5549/device/data",
"Seq": 13107192,
"PayloadLen": 17,
"Payload": "dGhpcyBpcyBhIGV4YW1wbGU=",
"ProductId": "AD4GVS5549",
"DeviceName": "device",
"Time": "2018-08-14 15:12:05",
}
各字段含义如下:
MsgType:取值有 Publish(配置消息队列转发), Forward(命中规则引擎转发), StatusChange(状态变化)。
PayloadLen:设备上报消息 payload 的长度,单位为字节数。
Payload:原始消息的 payload,默认会对内容使用 Base64 编码。
Event:仅 StatusChange 类型消息有,目前取值为 Online 和 Offline,代表上线和下线操作。
Time:转发行为触发的时间戳。
2. 转发到第三方服务(http forwad)的 JSON 示例:
{
"devicename":"device",
"payload":{
"params":{
"power_switch":1,
"color":1,
"brightness":32
}
},
"productid":"AD4GVS5549",
"seq":2,
"timestamp":1587109346,
"topic":"AD4GVS5549/device/data"
}
各字段含义如下:
devicename:设备在物联网通信平台中定义的设备名称。
payload:原始消息的 payload,若设备原始上报格式 JSON 将透传转发;若为二进制格式,会对内容使用 Base64 编码。
seq:内部自增的唯一消息标识符,int 类型。
timestamp:该转发行为触发时的 Unix 时间戳。

补充说明

字段的定义

字段中仅支持' * '、','、'.'、空格、字母和数字,不为空,最多不超过300个字符。
字段表示的是 JSON 中的键值 Key,若数据格式为二进制时不可使用字段筛选,可使用' * '将所有二进制数据进行转发。
上报的 JSON 数据格式,可以是嵌套的 JSON。例如:{"device_status":{"switch":"on"}},可以通过 device_status.switch 来获取到 switch 的值。
暂不支持子 SQL 和 JSON 数组。

Topic 通配符的定义

如果想要监听多个 Topic,可以使用#+通配符来定义多个 Topic。
#代表0个或多个任意 Topic 段,只能放在 Topic 的最后。
+代表1个任意 Topic 段,可以放在 Topic 的中间。
例如, house_monitor/+/get
可监听house_monitor/thermometer/gethouse_monitor/door/get等 Topic。
但不可监听house_monitor/door/switch/get,因为 + 只能代表1个 Topic 段。
例如, house_monitor/#
可监听house_monitor/thermometerhouse_monitor/door/switch/get等 Topic。
house/#/get 是非法的,因为 # 只能放在 Topic 结尾。

条件的定义

[条件]表达式用于过滤 Topic 中的消息,只有当消息满足[条件]表达式时,才会被提取并进行后续的处理,支持的表达式见下表:
操作符
描述
举例
=
相等
color = 'red'
<>
不等于
color <> 'red'
AND
逻辑与
color = 'red' AND siren = 'on'
OR
逻辑或
color = 'red' OR siren = 'on'
( )
括号代表一个整体
color = 'red' AND (siren = 'on' OR siren ='isTest')
+
算术加法
age = 4 + 5
-
算术减
age = 5 - 4
/
age = 20 / 4
*
age = 5 * 4
%
取余数
age = 0 % 6
<
小于
5 < 6
<=
小于或等于
5 <= 6
>
大于
6 > 5
>=
大于或等于
6 >= 5

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈