EMQX设备在线状态以及存储到MySQL

本文介绍了如何使用EMQX的规则引擎来标记并记录MQTT设备的在线状态到MySQL数据库中。通过创建规则,当设备连接时更新`devices`表的状态和连接时间,并在`device_connect_log`表中插入上线记录。同样,可以设置规则处理设备下线事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

如何标记接入EMQX的设备在线状态,并在MySQL中记录设备上下线日志。

准备数据库表

-- 设备表
CREATE TABLE devices (
id INT NOT NULL,
client_id VARCHAR(255) NOT NULL AUTO_INCREMENT COMMENT '客户端 ID',
status TINYINT(3) NOT NULL DEFAULT 0 COMMENT '状态 0 离线 1 在线',
connected_at VARCHAR(45) NULL COMMENT '连接时间,毫秒级时间戳',
PRIMARY KEY (id));

-- 初始化数据
INSERT INTO devices (client_id) VALUES ('emqx_c');

-- 连接记录表
CREATE TABLE device_connect_log (
id INT NOT NULL AUTO_INCREMENT COMMENT ,
client_id VARCHAR(255) NOT NULL '客户端 ID',
action TINYINT(3) NOT NULL DEFAULT 0 COMMENT '动作 0 其他 1 上线 2 下线 3 订阅 4 取消订阅',
target VARCHAR(255) NULL COMMENT '操作目标',
create_at VARCHAR(45) NULL COMMENT '记录时间',
PRIMARY KEY (id));

在资源中创建 MySQL 连接

在EMQX的Dashboard -->规则引擎–>资源页面点击‘创建’按钮,选择MySQL资源类,将相应的参数填入,测试连接,无问题后保存。
在这里插入图片描述

创建规则

规则引擎 --> 规则 页面中点击 新建 按钮进入规则创建页面
在这里插入图片描述
点击添加动作
在这里插入图片描述

UPDATE devices
SET satus=1, connected_at= ${connected_at} 
WHERE client_id= ${client_id}
LIMIT 1

在这里插入图片描述
再添加一个动作,在设备连接表 中插入一条记录,记录设备上线历史:

INSERT INTO device_connect_log 
(client_id, action, create_at) 
VALUES (${client_id}, '1', ${connected_at});

点击 '创建 '完成规则的创建,该条规则包含两个动作。

相似的可以创建下线状态规则。

参考

https://docs.emqx.com/zh/enterprise/v5.0/

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值