MQTT是一種輕量級的、基于發布-訂閱模式的消息傳輸協議,它可以在物聯網中實現設備之間的通信。MQTT有許多應用場景,其中一個重要的應用場景就是轉存數據到MySQL數據庫中。
import paho.mqtt.client as mqtt import mysql.connector # 連接MySQL數據庫 mydb = mysql.connector.connect( host="localhost", user="username", password="password", database="databasename" ) # 定義回調函數 def on_message(client, userdata, message): print("接收到消息主題:", message.topic) print("接收到消息內容:", message.payload.decode()) # 將消息轉存到MySQL數據庫 mycursor = mydb.cursor() sql = "INSERT INTO messages (topic, payload) VALUES (%s, %s)" val = (message.topic, message.payload.decode()) mycursor.execute(sql, val) mydb.commit() print(mycursor.rowcount, "條記錄已插入到數據庫中。") # 連接MQTT代理 client = mqtt.Client() client.connect("mqtt.eclipse.org", 1883) # 訂閱主題 client.subscribe("topic") # 注冊回調函數 client.on_message = on_message # 循環監聽MQTT消息 client.loop_forever()
以上代碼是一個Python程序,它使用了Paho MQTT庫和MySQL Connector庫,將MQTT消息轉存到MySQL數據庫中。
程序首先連接到MySQL數據庫,然后定義了一個回調函數on_message,用于處理接收到的MQTT消息。在回調函數中,程序將接收到的消息轉存到MySQL數據庫中。具體地,程序插入了兩個字段:topic和payload,分別表示消息的主題和內容。最后,程序通過mydb.commit()將數據存儲到MySQL數據庫中。
接著,程序連接到MQTT代理,并訂閱了一個主題(topic)。當接收到這個主題的MQTT消息時,程序會調用回調函數on_message進行處理。最后,程序通過調用client.loop_forever()進入循環監聽MQTT消息的狀態。
綜上所述,通過使用MQTT和MySQL,可以實現將設備生成的數據轉存到MySQL數據庫中,并通過數據分析和處理實現更多有價值的功能。