使用Flask

时间:2015-10-03 07:50:49

标签: python flask mqtt iot paho

我正在尝试从使用Flask构建的网页发送MQTT消息。

我在主循环中建立了连接,我可以在启动Flask之前发送消息

当我打电话时:

client.publish('all/camera/'+path, 'all') 
没有任何反应。没有错误,但没有发送消息。我最好的猜测是这是一个范围问题。即。对象'client'对函数不可见。我试图在main函数之外启动客户端,我也尝试在capture()函数中声明'client'为全局

烧瓶应用程序的代码如下:

#!/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)

1 个答案:

答案 0 :(得分:0)

正如rmn所说。我把回程放在了错误的地方。现在工作得很好。感谢