2016-07-18 119 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