2016-07-18 147 views
0

我正在试图让我的Python(Flask)webserver显示我的MQTT脚本正在做什么。 MQTT脚本,实质上,它订阅了一个主题,我真的想对它获取的信息进行分类并实时显示/更新它。像一个简单的列表,显示各种定期更新的设置。Python(烧瓶)和MQTT监听

Setting1 = 9 
Setting2 = 2 
Setting3 = 5 

首先,我有一个连接到网页,这样就可以填写在IP到了Python(瓶)应连接到:

@app.route("/") 
def my_form(): 
     return render_template("connect.html") 

@app.route("/", methods=["POST"]) 
def my_form_post(): 
     text = request.form["text"] 
     processed_text = text.upper() 

到的连接。 HTML如下:

<!DOCTYPE html> 
<html lang="en"> 
<body> 
    <h2>Fill in the IP in below:</h2> 
    <form action="." method="POST"> 
     <input type="text" name="text"> 
     <input type="submit" name="my-form" value="Connect"> 
    </form> 
</body> 
</html> 

连接到MQTT部分是在棘手部分,我需要一些帮助。我正在考虑只在下面添加连接,但这只是不能正常工作,它只会返回一个内部服务器错误。

任何帮助真的很感谢!

谢谢!

+0

假设你管理连接到代理你是如何计划更新与发布的消息值的任何页面?你可以做更好的做所有页面使用MQTT over Websockets – hardillb

回答

2

我会为MQTT消息处理做一个单独的服务。该服务可以处理收到的消息并将其存储(数据库,redis,简单的程序存储器)以供访问。

当烧瓶应用程序中的页面被击中时,您将连接到服务(或其存储)并处理/显示自上次请求以来的信息。

这可以在相反的位置完成,也可以将您的发布应用发布到后端服务的发布信息发送到MQTT消息。

+0

我该如何去做这个单独的服务? – user5740843

+0

一个单独的服务只是在接受某种通信的后台运行的另一个python应用程序。该通信可以是基于IP的(tcp或udp),也可以是基于某种其他类型的进程间通信方法的事件。因为在这种情况下你需要一个MQTT服务,所以我会根据该协议和IMO将事件暂时存储在一个redis应用程序中。这样,烧瓶应用程序就会为其当前的信息/消息提供redis,而后端服务将启动您的mqtt后端以将其存储在redis中。 – g19fanatic