那里有一个系统,通过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。
#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
评论
烧瓶似乎类似于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