原文地址:https://blog.csdn.net/qq_31867231/article/details/109364561
使用场景
需要将 tb 从网关接收到的设备信息保存到自己的项目中。
配置步骤
tb 系统属性
这里需要使用到规则链中属性集的 originator fields
发送者字段添加消息发送者字段值到消息元数据中将获取在映射中指定的字段值。如果指定的字段不是发起者字段的一部分,它将被忽略。
可以添加的系统属性值为 device 表中的字段,
CREATE TABLE "public"."device" (
"id" uuid NOT NULL,
"created_time" int8 NOT NULL,
"additional_info" varchar COLLATE "pg_catalog"."default",
"customer_id" uuid,
"type" varchar(255) COLLATE "pg_catalog"."default",
"name" varchar(255) COLLATE "pg_catalog"."default",
"label" varchar(255) COLLATE "pg_catalog"."default",
"search_text" varchar(255) COLLATE "pg_catalog"."default",
"tenant_id" uuid,
CONSTRAINT "device_pkey" PRIMARY KEY ("id"),
CONSTRAINT "device_name_unq_key" UNIQUE ("tenant_id", "name")
)
;
这里我们添加设备 id,设备区域
然后从Message Type Switch 连接到系统属性
Post attributes 为设备属性数据
Post telemetry 为设备遥测数据
转换器
转换器的作用是将 tb 的 json 信息转换我们想要的格式
return {
msg: {
ts: metadata['ts'],
deviceId: metadata['id'],
msgType: msgType,
deviceType: metadata['deviceType'],
deviceName: metadata['deviceName'],
label: metadata['label'],
msg: msg
},
metadata: metadata,
msgType: msgType
};
发送 mqtt
添加 mqtt 模块,填写自己的 mqtt 地址以及订阅主题,这里我使用的 emqx
最终的规则链:
我这边使用了较多的连线类型
我这边配置了emqx的用户名密码认证,需要改成basic类型,还有无认证以及证书认证等。
使用 mqttbox 测试
可以看到 mqtt 已经可以订阅到设备信息,那么这些信息怎么使用,能干什么,就可以为所欲为了
没有收到订阅消息?可以通过调试模式查看问题出现在哪个节点。
关于调试模式:
可以看到图中的五个节点,每个节点都可以开启调试模式,然后可以在事件里调试看到一些打印数据。如:我们在第三个节点开启调试模式:
提交之后在规则链里也要提交一次,否则不生效。最终:
当然事件里还有其他类型,如mqtt我们填写错误的信息:
依次事件类型看过去:
查看错误信息:
调试还有很多妙用,自行摸索啦,告辞!