2015-10-03 119 views
2

我想从使用Flask构建的网页发送MQTT消息。从用python编写的网页发送MQTT消息与Flask

我已经建立在主回路的连接,我能够开始瓶

当我打电话之前发送的消息:

client.publish('all/camera/'+path, 'all') 

没有任何反应。没有错误,但没有消息发送。我最好的猜测是这是一个范围问题。即。该对象的'客户'是不可见的功能。我曾试图启动客户端的主要功能之外,我也试图申报“客户”作为全球捕获()函数

的烧瓶应用程序里面的代码是下面:

#!/usr/bin/env python 
from flask import Flask, render_template, request 
import paho.mqtt.client as mqtt 
from datetime import datetime 

app = Flask(__name__) 

@app.route('/', methods = ['POST', 'GET']) 
def capture(): 
    timestring=datetime.now().strftime("%Y%m%d-%H%M%S") 
    if 'sessionName' in request.form: 
     sessionName = request.form['sessionName'] 
     path = sessionName + "_" + timestring 
     return render_template ('capture.html', path=path, timestring=timestring, sessionName=sessionName) 
     client.publish('all/camera/'+path, 'all') 
    else: 
     return render_template ('capture.html',timestring=timestring) 


# paho callbacks 

def on_connect(client, userdata, flags, rc): 

    #sub here will re subscribe on reconnection 
    client.subscribe("+/camera/#") 
    client.subscribe("+/led") 



# Main Code 


if __name__=='__main__': 

    client = mqtt.Client() 
    client.on_connect = on_connect 
    client.connect("scanserver.local",1883,60) 
    client.loop_start() 
    client.publish('debug', 'server running') 

    app.run(host = '0.0.0.0' , debug = True, port=5001) 
+0

你应该在返回之前调用client.publish –

回答

0

正如rmn所说。我把这个回报放在了错误的地方。现在完美工作。谢谢