簡體   English   中英

arduino yun uhttpd flask setup

[英]arduino yun uhttpd flask setup

我正試圖在arduino yun上設置python和flask。 我已經設法通過/ etc / config / uhttpd配置文件運行python文件:

...
list interpreter    ".py=/usr/bin/python"
...

網站根目錄的默認路徑是:/ www我在其中放置了一個軟鏈接(apps)到SD卡。 所以現在我可以運行python程序:http:// [ip arduino] /apps/helloworld.py

當我制作我的第一個helloflask.py程序並通過python helloflask.py運行時,我可以看到結果:http:// [ip arduino]:5000

但現在我想配置uhttpd迷你網絡服務器(能夠通過CGI交換信息)來使用燒瓶設置。 URI: http//flask.pocoo.org/docs/deploying/cgi/#server-setup顯示了一些說明......但我還是沒有得到它。 我已經創建了一個目錄../apps/uno,其中我放置了一個帶有以下內容的__i​​nit__.py文件:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "He Flask!"   

在應用程序目錄中,我放了一個文件:cgi.py,內容如下:

from wsgiref.handlers import CGIHandler
from uno import app

CGIHandler().run(app)

現在我瀏覽時:http:// [ip arduino] /cgi.py發生服務器錯誤,請聯系管理員(我認為這是來自uhttpd的CGI接口)。

我只是沒有掌握Flask / uhttpd的CGI配置

我也調查了這一點並且進一步了解,我能夠設置一個簡單的hello世界但是一旦我嘗試做一些非平凡的事情,我遇到了一個大問題,即uhttpd不支持URL重寫/別名。 這意味着您的燒瓶應用程序只能在其.py文件的URL上提供,而不能在http://(arduino IP)/ flaskapp /等根目錄下提供。 應用程序內部的任何路徑都不可見,並使整個事物無法使用。

然而,我沒有試圖強迫燒瓶進入uhttpd,而是運行燒瓶提供的內置服務器。 看一下我寫的這個指南,它使用flask來提供來自Yun的數據: https//learn.adafruit.com/smart-measuring-cup/overview

要做的是在腳本運行時添加對app.run的調用,例如讓你的燒瓶應用看起來像:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello Flask!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=True, threaded=True)

然后登錄Yun並使用python運行腳本。 Flask的內置服務器應該開始在http://(arduino IP):5000 /上提供應用程序。 確保包含host ='0.0.0.0',因為它需要監聽Yun的外部網絡接口。 您可能還需要debug = True,因此有更好的錯誤消息(以及代碼更改時服務器的實時重新加載),並且我發現threads = True有幫助,因為默認服務器一次只處理一個連接。 Yun是一個相對較慢的處理器,所以不要期望為很多並發請求提供服務,但它能夠為少數用戶提供簡單的REST API或Web應用程序。

如果希望此服務器始終在啟動時運行,請編輯/etc/rc.local文件以包含對python和腳本的調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM