通过Web界面执行Python脚本


15

我见过很多声称可以控制GPIO引脚的项目,但是我想要一些不同的东西,例如,能够使LED闪烁。

是否有可用的系统,可以通过Web界面单击并执行python脚本,例如在树莓派上执行“ blink.py”。

Answers:


12

您可以使用CGI或其他服务器端脚本以多种方式实现此目的。一个问题将是访问GPIO引脚的权限。似乎没有一个干净的解决方案。目前,最简单的方法是将gpio文件授予运行Web服务器的用户,调用一个(suid)程序,该程序可以访问这些引脚,或者拥有一个单独的守护程序来访问可以向其发送消息的引脚(信号,管道/ socket,其他ipc ...)。

对于“通过Web界面执行python脚本”,你可能会想看看web.py。这是一个非常简洁的小模块,可让您编写一个可以执行任何操作的独立文件“ Web服务”。对于此类IME非常方便。实际上不需要任何配置或特殊软件(除了常见的python安装和web.py本身)。只需在python中为URL编写处理程序,可以选择使用html模板并运行。将客户端(浏览器,其他脚本,wget ..)指向正确的端口即可使用。:)

编辑:发现一个新项目,serpint似乎允许从套接字或可能是伪造的char设备接口摆动gpio。


4
烧瓶似乎类似于web.py。还有Django,它似乎具有更多功能-可能对该项目有些过高。
弗雷帕(Frepa)2012年

erm,对于GPIO访问,只需将用户添加到gpio组即可。或以根用户身份启动服务器,无论如何,大多数人还是要为端口80做的。Flask示例可以调用脚本或使用时间在切换之间增加睡眠。主要功能是模板中的{{}},我怀疑OP不需要这些模板。
mckenzm

感谢更新。对于“ erm”,这个答案是从2012年开始的,当时众所周知,GPIO仅是root用户。我看到现在有一​​个gpio组,这是一个了不起的进步,并且是一种访问硬件的更正确方法。
XTL

2

如果您刚开始进行Web开发,请查看Bottle。从一个单一文件内的完整Web框架的角度而言,Bottle比flask更简单。相反,Flask旨在重用来自不同库的声音代码,因此可能更可靠,但也更复杂。

这是带有瓶子的Hello World:

from bottle import route, run, template

@route('/hello/:name')
def index(name='World'):
    return template('<b>Hello {{name}}</b>!', name=name)

run(host='localhost', port=8080)

使用以下命令运行它:

python HelloBottle.py

并在浏览器中打开: http://localhost:8080/hello/world


要使您的网站可从其他计算机访问,host0.0.0.0run方法中设置为。上述Hello World的最后一行应为:

run(host='0.0.0.0', port=8080)

您现在应该可以通过Pi的IP地址访问您的网站,如下所示: http://192.168.0.123:8080/hello/world

有关更多详细信息,请参阅有关部署的瓶子文档


在我的Raspberry Pi上,如果执行,curl http://localhost:8080/hello/world我会收到预期的结果。但是,我希望能够通过局域网在我的常规计算机上访问它。使用后,ifconfig我的IP地址,我的普通电脑上的以下网址无法建立连接:http://192.168.1.102:8080/hello/matthew。我可以访问我在192.168.1.102/home.php上创建的另一个网页。您对我如何进入酒瓶页面有任何想法吗?
Matthew Moisen

你home.php通过80端口(HTTP)尝试运行瓶在该端口上隐含访问,如果它succedes,确保有你的桌面和PI阻塞端口8080之间,或者在没有防火墙
本特

原来,我需要将IP更改为localhost或0.0.0.0
Matthew Moisen 2013年


1

安装iPython Notebook。

rpi#> sudo apt-get install ipython-notebook ipython3-notebook

然后运行它:

rpi#> ipython notebook

注意:您也可以从PC上访问它:
rpi#> ipython笔记本--ip = 10.0.0.7
#这里10.0.0.7是我的RPi IP。
#从浏览器中的另一台计算机输入:http : //10.0.0.7 :
8888

在此处输入图片说明

您会看到以下内容:

在此处输入图片说明

然后创建一个新的笔记本并在其中运行您的代码:

在此处输入图片说明

方法测试:

在此处输入图片说明

参考书目:

http://ipython.org/
http://jupyter.org/
https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/
http://maxembedded.com/2014/07/使用raspberry-pi-gpio使用python /

YouTube:https//www.youtube.com/watch?v = cJuF4IDMuLY

很重要:

音乐通过mps-youtube在Linux屏幕程序中的RPi背景下运行。

rpi#> sudo apt-get install python3-pip
rpi#> sudo pip3 install --upgrade mps-youtube  
rpi#> sudo pip3 install --upgrade https://github.com/mps-youtube/pafy/archive/develop.zip
rpi#> mpsyt # to start it
    # configure mpsyt to show video, player.
    mpsyt#> set show_video True
    mpsyt#> set player omxplayer
    mpsyt#> set search_music False
    mpsyt#> . lindsey stirling
    mpsyt#> 2 # to play song from a list.

祝好运!


您的问题可能会得到改善...为什么要安装Python笔记本?它到底是做什么的?它当然应该对潜在的安全问题(例如,使其对互联网开放)发表评论。
Jacobm001

@ Jacobm001,不是今天,不是现在。如果需要,请按照底部的参考书目进行操作。
Vitalie Ghelbert '16

0

1
请在您的答案中总结该教程,以防链接有一天消失或其他更改。
tlhIngan

我们正在尝试针对无信息的仅链接答案的新政策。如果该帖子未经过编辑以包含可以作为答案的信息(无论是最少的信息),则将在48小时内将其转换为Community Wiki,以简化由社区更正的信息。
史蒂夫·罗比拉德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.