504 字
3 分钟
通过Ubuntu服务器部署Mqtt服务的记录
通过Ubuntu服务器部署Mqtt服务的记录
1.设备信息
- 物联网设备:ML307R,度云DTU固件
- 服务器:阿里云轻应用服务器
- linux版本:Ubuntu 24.02
2.物联网设备部署
1.部署方式
使用物联网设备提供的网站进行设置修改
2.参数记录
网络通道参数
通道类型使用MQTT,域名使用服务器公网ip,端口号选择1883
订阅自定义为:test/topic/down,发布消息自定义为:test/topic/up
QOS等级为1,publish参数retain为0
基本参数
心跳包开启,自定义字符串为hello,心跳间隔为600000ms
3.服务器端部署(代码问AI)
1.EMQX
防火墙
设置阿里云服务器防火墙白名单,放行端口请求
图形化界面
访问 公网ip:18083 进入图形化界面配置
调试
通过WebSocket 客户端,调试订阅和发送
2.数据库部署
数据库使用MySQL,读取逻辑为截取所有向服务器发送的MQTT数据,进行存储
数据处理脚本名:mqtt_to_mysql.py
自动运行脚本名:mqtt-saver.service
虚拟环境开启指令:source ~/mqtt_venv/bin/activate
数据查看:
##查看指令mysql -u emqx_user -p123456 -D emqx_data -e "SELECT '--- 当前总记录数 ---' AS '';SELECT count(*) AS total_rows FROM mqtt_msg;SELECT '--- 最近20条数据 (精简模式) ---' AS '';SELECT id, device_id, tds, cod, ph, temp, hum, created_at FROM mqtt_msg ORDER BY id DESC LIMIT 20;"
##监控器指令# 每 1 秒刷新一次watch -n 1 'mysql -u emqx_user -p123456 -D emqx_data -e "SELECT count(*) AS Total FROM mqtt_msg; SELECT id, device_id, tds, cod, ph, temp, hum, created_at FROM mqtt_msg ORDER BY id DESC LIMIT 40;"'
##重启指令# 1. 重新加载系统服务配置sudo systemctl daemon-reload# 2. 重启你的脚本服务sudo systemctl restart mqtt-saver.service# 3. 再次查看日志sudo journalctl -u mqtt-saver -f数据库结构:
CREATE TABLE IF NOT EXISTS mqtt_msg ( id INT AUTO_INCREMENT PRIMARY KEY, device_id VARCHAR(50), -- 对应 JSON 中的 id tds FLOAT, cod FLOAT, toc FLOAT, uv254 FLOAT, ph FLOAT, temp FLOAT, hum FLOAT, zhexian1 FLOAT, zhexian2 FLOAT, raw_data TEXT, -- 保留一份原始数据备份 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP); 通过Ubuntu服务器部署Mqtt服务的记录
https://fuwari.vercel.app/posts/通过ubuntu服务器部署mqtt服务的记录/