使用Flask在Raspberry Pi上设置REST Web API

62 篇文章 7 订阅

使用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)。

详情参阅 - 亚图跨际

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值