【调试工具】订阅MQTT数据并保持至数据库(sqllite)

背景

在IoT领域,MQTT作为举足轻重的协议广泛应用在设备与云端的交互、通讯中。在开发过程中,难免会遇到设备异常状况。这时,监听并保存设备与服务器交互的MQTT数据,有助于定位排查系统异常。本文给出一个简单的示例,定义MQTT数据,并讲topic和数据保存至sqlite数据以供后续分析用。

使用到的第三方库

  • gorm 用于操作数据库

代码

下列代码订阅给定MQTT的#(全部topic),并将topic和payload保持到log.db文件中

package main

import (
	"log"

	MQTT "github.com/eclipse/paho.mqtt.golang"
	"gorm.io/driver/sqlite"
	"gorm.io/gorm"
)

type Log struct {
	gorm.Model
	Topic   string
	Payload []byte
}

const (
	HOST   = "修改为你的MQTT服务器地址 123.123.123.123:1883"
	USER   = "修改为你的用户名"
	PASSWD = "修改为你的密码"
)

func main() {

	db, err := gorm.Open(sqlite.Open("log.db"), &gorm.Config{})
	if err != nil {
		log.Fatalln("InitDB error:\t", err)
		return
	}
	db.AutoMigrate(&Log{})

	opts := MQTT.NewClientOptions()
	opts.AddBroker(HOST)
	opts.SetClientID("mqtt2log.demo")
	opts.SetUsername(USER)
	opts.SetPassword(PASSWD)
	opts.SetCleanSession(true)

	cli := MQTT.NewClient(opts)
	if token := cli.Connect(); token.Wait() && token.Error() != nil {
		log.Fatalf("mqtt connect err: %x\r\n", token.Error())
	}

	cli.Subscribe("#", 0, func(cli MQTT.Client, message MQTT.Message) {
		log.Printf("topic:%s\tmsg:%s\r\n", message.Topic(), message.Payload())
		db.Create(&Log{
			Topic:   message.Topic(),
			Payload: message.Payload(),
		})
	})

	select {}
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MQTT是一种轻量级的消息传输协议,可以用于在网络间传输数据。将MQTT数据传入MySQL数据库的过程可以通过以下几个步骤实现: 1. 配置MQTT Broker:首先需要设置一个MQTT Broker,用于接收MQTT传来的数据。可以选择使用开源的MQTT Broker,如Mosquitto或者Eclipse Paho。配置Broker的端口号、用户名和密码等信息,使其能够接收来自设备的MQTT数据。 2. 编写MQTT客户端:使用任何支持MQTT协议的编程语言,如Python或Java,编写一个MQTT客户端,用于连接MQTT Broker并接收数据。在代码中,设置订阅的主题(topic),当Broker接收到相应主题的消息时,客户端会收到通知并执行相应的逻辑。 3. 解析数据:根据接收到的MQTT消息的格式和数据结构,将数据进行解析和提取。可以使用JSON或其他序列化格式将数据进行编码和解码,并提取出需要存储的数据。 4. 连接MySQL数据库:使用数据库连接库,如MySQL Connector/Python或JDBC等,建立与MySQL数据库的连接。配置数据库的IP地址、端口号、用户名和密码等信息。 5. 存储数据:通过执行SQL语句,将解析后的数据存储到MySQL数据库中。可以使用INSERT语句将数据插入到指定的表格中,或者更复杂的逻辑,如更新现有数据或创建新的表格等。 6. 关闭连接:在数据存储完毕后,关闭MySQL数据库连接和MQTT客户端连接,释放资源。 通过以上步骤,即可实现将MQTT数据传入MySQL数据库的功能。需要注意的是,保证MQTT Broker和MySQL数据库服务器的稳定运行以及数据传输的安全性是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值