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

那里有一个系统,通过Web界面,我可以单击并执行一个python脚本,例如在树莓派上执行“ blink.py”。

#1 楼

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

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

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

评论


烧瓶似乎类似于web.py。还有Django,它似乎具有更多功能-可能对该项目有些过高。

– Frepa
2012年11月6日17:17

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

–mckenzm
19年6月26日在5:30

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

– XTL
19年7月16日在10:34

#2 楼

如果您刚刚开始进行Web开发,请查看Bottle。瓶子比烧瓶更简单,因为瓶子是单个文件中的完整Web框架。相比之下,Flask旨在重用来自不同库的声音代码,因此可能更可靠,也更复杂。

这是带有Bottle的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


要通过其他计算机访问您的网站,请使用host方法将0.0.0.0设置为run。然后,上面的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地址后,常规计算机上的以下URL无法建立连接:http://192.168.1.102:8080/hello/matthew。我可以访问我在192.168.1.102/home.php上创建的另一个网页。您对我如何进入酒瓶页面有任何想法吗?

–马修·莫森(Matthew Moisen)
2013年9月3日,下午3:21

可以通过端口80(http)隐式访问home.php,请尝试在该端口上运行bottle,如果成功,请确保您的桌面和pi阻止端口8080之间没有防火墙。


2013年9月4日15:09



原来我需要将IP更改为localhost或0.0.0.0

–马修·莫森(Matthew Moisen)
2013年9月4日20:44

确实,如文档所述,将应用程序的IP地址设置为0.0.0.0可使Bottle侦听包括Pi在内的任何地址。

– Bengt
2013年9月8日上午11:32

#3 楼

安装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/using-raspberry-pi-gpio-using-python/

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

非常重要:

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

q43120 78q

祝你好运!

评论


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

–Jacobm001♦
16-2-23在20:26

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

– Vitalie Ghelbert
16年2月25日在6:40

#4 楼

这是一个如何实现此目标的教程:https://roderickvella.wordpress.com/2017/01/04/control-a-separate-running-script-from-a-web-server-python-rpi/

评论


如果您的链接有一天会消失或发生变化,请在您的答案中总结本教程。

–tlhIngan
17年1月7日在23:49

我们正在尝试有关无信息的仅链接的答案的新政策。如果该帖子未经过编辑以包含可以作为答案的信息(尽管很少),则将在48小时内将其转换为Community Wiki,以简化由社区进行纠正的过程。

–史蒂夫·罗比拉德(Steve Robillard)
17年1月8日,0:21