🥬使用Flask在 Raspberry Pi 上设置REST Web API
Flask | Raspberry Pi | RESTful API
使用Flask在Raspberry Pi上设置REST Web API
在本文中,我们介绍了如何使用Flask在Pi上设置REST Web API,以及如何从任何远程网络使用REST Web API来控制与Pi上的GPIO相连的两个LED。
这个项目有很大的工作空间。相同的设置将适用于远程控制机器人,传感器和遥测应用。
条件
我们假设您的Pi已通电,已连接到互联网并已安装Dataplicity。
确保释放端口80如果您正在浏览其他有关虫洞的教程,则可能已在端口80上运行了应用程序或服务。在遵循本文中的说明之前,请确保端口80上没有任何运行。
将LED连接到Raspberry Pi GPIO
如下图所示,将LED组装在面包板上:
图略
请注意,在此示例中,我们选择将LED连接到Raspberry Pi的引脚16和18。
安装Flask
要设置我们的Web服务器,我们需要安装两个Flask软件包:
Flask:Flask框架的主要框架
Flask-API:Flask的扩展,支持REST API的开发
创建Flask应用程序
用您喜欢的编辑器(例如nano)创建一个名为fl-app.py的新文件。
sudo nano fl-app.py
将以下脚本复制到该文件中。
脚本如何工作
将GPIO引脚16和18配置为输出以匹配我们上面的接线
配置主要的Flask应用程序。
将“路由”(允许的HTTP方法)映射到其相应函数。
在此示例中,我们使用两个路由。第一个“根”(“ /”)路由通过提供使用API的指令来响应HTTP GET请求。第二条“ / led //”路由的行为有所不同,具体取决于它是“ GET”请求还是“ POST”请求:
On GET:返回LED的当前状态(即ON或OFF)
On Post:将LED的状态更改为“开”或“关”
运行Flask
要运行Flask应用程序,我们必须首先设置一个环境变量来告诉Flask运行哪个应用程序。
然后,我们使用下面的命令在端口80上运行flask。
上面的参数如下:
E 运行sudo时,请保留环境变量(包括FLASK_APP)。这是必需的,因此FLASK_APP在提升环境中可见。
flask run 运行Flask,这反过来又启动了我们在环境中设置的FLASK_APP。
-host = 0.0.0.0意味着fl-app.py将在每个可用的IPv4接口(通常在Pi上为“ eth0”和/或“ wlan0”)上运行。
您可能希望限制Flask在本地主机(127.0.0.1)上侦听为了便于测试,在此示例中,我们将Flask设置为仅在所有可用接口上运行。 但是,根据应用程序的性质,您可能希望确保仅通过Wormhole可以使用Web服务器。 如果您希望这样做,则只需将上述命令中的" 0.0.0.0"更改为" 127.0.0.1"即可。
服务器启动后,您应该看到以下内容:
与API交互
您可以使用终端或Web浏览器与正在运行的REST API进行交互。
如果尚未安装Dataplicity,现在是时候了。 此时,您需要启用Dataplicity Wormhole才能使此REST API在任何地方都可用。
使用网络浏览器
Flask-API框架提供了一个漂亮的自我文档化的API,以及一个用于测试查询的接口。
如果我们转到蠕虫网址,即https://<YOUR_ID>.dataplicity.io/,则应获得以下页面。
在这里,我们可以使用JSON格式的查询查看和设置LED状态。像这样:
使用终端
使用Linux终端(或Mac和Windows上的类似终端),我们能够通过简单的命令行Web请求来远程控制GPIO(LED)。
Last updated