转换步骤
大约 1 分钟protocolstep
步骤说明
- 给对方开 mqtt 账号,最好是开设备产品密钥签名的账号,单然也可以开 mqtt 账号管理菜单里的账号。
- 对方按自己的协议格式上报数据,
- 在平台添加一个协议转换,例如:添加
blink
,添加对方协议的topic
前缀blink/#
- 新建产品时选择
blink
协议。 - 添加协议转换的具体规则。
一、协议转换语法
转换规则 topic 可以使用 ${xxx}
来提取 topic
中的变量。
示例(将阿里云协议转换到 BladeX-Links)
Topic示例:
/sys/a1jzyZ3hPpo/6PE21ZLBWDtLMLjOSBXg/thing/event/property/post
Topic规则:
/sys/${productKey}/${deviceName}/thing/event/property/post
输出Topic模板:
/blade/sys/${topic.productKey}/${topic.deviceName}/thing/event/property/post
由于 BladeX-Links 和阿里云 ALink 消息结构体完全一致,输出 json 模板可以直接使用 ${body}
二、Beetl 变量和函数
1. 内置变量
对于下行(转发送到设备)的消息,内置了 ${ext.product.xxx}
(产品)和 ${ext.device.xxx}
(设备)扩展变量,如果设备有上级网关设备还可以使用 ${ext.gateway.xxx}
获取到网关设备相关信息。
2. 内置函数
函数名 | 示例 | 作用 |
---|---|---|
timestamp | ${timestamp()} | 获取当前时间戳(服务器时间) |
uuid | ${uuid()} | 生成一个 uuid |
iosDateFmt | ${iosDateFmt(body)} | 时间格式化,将 ios 时间 2023-08-04T14:53:11+08:00 格式化成 yyyy-MM-dd HH:mm:ss |
3. 自定义 beetl 函数
对于某些场景自定义 beetl 函数能更大程度简化协议转换的规则。详见:blade-broker 服务中的 BeetlConfiguration 类。
beetl模板文档地址:点击查看