首页 > 解决方案 > 在 MQTT paho python 中收到期望消息时如何发布数据?

问题描述

为物联网测试设置 MQTT 代理和数据库 MySQL。

我想实现客户端订阅 MQTT 主题,如果它从 MQTT 代理接收到确切的消息(例如“读取”),它将读取数据库并将数据发布到代理。

现在,我的 python 客户端可以接收消息并检查消息。它还连接 MySQL 数据库以读取数据。但我不知道如何将这些数据发布到 MQTT 代理。

这是我的代码:

import paho.mqtt.client as mqttClient
import time
import MySQLdb

#connect database
db_local = MySQLdb.connect("localhost","root","root123","mqtt")

def read_action():
  with db_local:
    cur = db_local.cursor(MySQLdb.cursors.DictCursor)
    cur.execute("SELECT * FROM `hengio_action` WHERE username ='lam'")
    rows = cur.fetchall()
    for row in rows:
      command = row['command']
    return command

def on_connect(client, userdata, flags, rc):
 if rc == 0:
   print("Connected to broker")
   global Connected                #Use global variable
   Connected = True                #Signal connection 
 else:
   print("Connection failed")

def on_message(client, userdata, message):
 print "Message received: "  + message.payload
 if(message.payload=="read"):
    command = read_action()
    print command

Connected = False   #global variable for the state of the connection
broker_address= "MQTT broker IP"  #Broker address
port = 1883                         #Broker port
keepalive = 0                       #always listen
user = "lam"                    #Connection username
password = "lam"            #Connection password
client = mqttClient.Client("Python")               #create new instance
client.username_pw_set(user, password=password)    #set username and password
client.on_connect= on_connect                      #attach function to callback
client.on_message= on_message                      #attach function to callback
client.connect(broker_address, port=port,keepalive=keepalive)             #connect to broker 
client.loop_start()        #start the loop
while Connected != True:    #Wait for connection
    time.sleep(0.1)
client.subscribe("LAM_TEST_ANDROID")
try:
  while True:
    time.sleep(0.5)
except KeyboardInterrupt:
    print "exiting"
    client.disconnect()
    client.loop_stop()

标签: pythonpython-2.7mqttpaho

解决方案


推荐阅读