# 场景联动 SQL 参考
FogCloud 场景联动支持一种类似 SQL 的语法来定义场景触发规则。SQL 语句由SELECT
,FROM
,WHERE
三种子句构成。
子句 | 是否必须 | 说明 |
SELECT | 必填 | 从传入的 MQTT 消息中提取信息并执行转换。使用的消息来自 FROM 子句中指定的 MQTT 主题。 |
FROM | 必填 | MQTT 消息主题筛选条件,支持 MQTT 主题通配符。 |
WHERE | 可选 | 用于确定是否执行规则指定操作的条件逻辑。 |
SQL 语句示例如下:
SELECT params.brightness as brightness FROM 'fogcloud/+/+/thing/up/property/post' WHERE params.switch = 1
MQTT 消息示例如下:
{
"id": 1,
"method": "property.post",
"params": {
"brightness": 100,
"switch": 1
}
}
如果此消息在主题fogcloud/<span class="ne-text" style="color: rgb(34, 51, 69); font-size: 14px">0e37a28c/00000001/thing/up/property/post</span>
上发布,则会触发该 SQL,如果 switch 属性等于 1,SQL 语句将输出如下结果:
{
"brightness": 100
}
此 SQL 输出会在执行动作中,序列化后发送给指定的 webhook 地址。发送内容如下:
{
"scene_name": "string",
"scene_id": "string",
"timestamp": "int",
"trigger_uri": "trigger/sql",
"payload": "{"brightness":100}"
}
字段 | 类型 | 说明 |
scene_name | string | 场景联动名称 |
scene_id | string | 场景联动唯一标识 |
timestamp | int | 时间戳,单位秒 |
trigger_uri | string | 当触发类型为 SQL 时,固定为 |
payload | string | 序列化后的 SQL 输出 |