繁体   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