[英]Apache PHP command wont control Raspberry pi GPIO
好吧,这里是Raspberry Pi和Python / PHP / Apache的新手。 我试图让我的PHP脚本运行我创建的python文件,以通过家庭网络激活5v继电器。 在通过SSH的终端中,我可以激活Python脚本,它可以控制我的中继。 当我尝试通过Web服务器上的PHP脚本激活中继时,我什么也没得到。 我的PHP脚本和Python脚本如下。 任何帮助是极大的赞赏!
我的Python代码位于/ home / pi中,为“ garagedoorleft.py”,而我的PHP代码位于/ var / www / html中,为“ index.php”
<html>
<head>
<meta charset="UTF-8" />
<title>Example document</title>
</head>
<?php
if (isset($_POST['LeftOPEN']))
{
exec("sudo python /home/pi/garagedoorleft.py");
}
?>
<form method="post">
<button name="LeftOPEN">Left Door</button>
</form>
</html>
#!/usr/bin/python
# Import required Python libraries
import RPi.GPIO as GPIO
import time
# Use BCM GPIO references instead of physical pin numbers
GPIO.setmode(GPIO.BCM)
# init list with pin numbers
pinList = [2]
# loop through pins and set mode and state to 'low'
for i in pinList:
GPIO.setup(i, GPIO.OUT)
GPIO.output(i, GPIO.HIGH)
def trigger() :
for i in pinList:
GPIO.output(i, GPIO.LOW)
time.sleep(0.5)
GPIO.output(i, GPIO.HIGH)
GPIO.cleanup()
try:
trigger()
except KeyboardInterrupt:
print " Quit"
# Reset GPIO settings
GPIO.cleanup()
我不确定exec
如何与管道一起工作,什么不可以,但我认为您可以做到
exec("echo SUDO_PASSWORD_FOR_MACHINE | sudo -S -p '' python my_gpio.py")
这将通过stdin将sudo密码传递给sudo命令...我不确定执行这样的操作有多安全...
或者您可以尝试提升特权
如果Python脚本添加到顶部
import sys,os
if os.getuid() != 0: # not sudo so spawn as sudo
exit(os.system("echo SUDO_PASSWORD_FOR_MACHINE | sudo -S -p '' python %s"%sys.argv))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.