# 场景联动 SQL 参考

FogCloud 场景联动支持一种类似 SQL 的语法来定义场景触发规则。SQL 语句由SELECTFROMWHERE三种子句构成。

子句

是否必须

说明

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 时,固定为trigger/sql

payload

string

序列化后的 SQL 输出

更新时间: 2023/8/10 10:35:46