上篇开门神器,我最终用的是树莓派做控制器,因为它本身就一直开着,不让它多干些事岂不浪费(是不是有种黑心老板的节奏)。我通过连接树莓派和L298N来实现控制电机,程序上使用的Python操作端口(需要安装Python GPIO库),写了个脚本,然后再通过php调用这个脚本实现开门。
问题:
在树莓派上单独执行这个Python脚本是能开门的,但通过php调用就不行。
但用Python写个简单的建目录脚本,php调用时可以执行的。
综上分析Python GPIO 库是需要root权限的。
解决:
直接赋予Apache或nginx ROOT权限(感觉不安全 下下策)
按网上所说方法用C程序更换用户UID…编译好执行(失败,还是单独执行可以调用不可以)
变通,让这个脚本主动轮询某个文件内值,php控制这个文件(至少能用起来,但总感觉这个方法不怎么好)
修改/etc/sudoers文件,赋予特定用户特定权限(上上策)
#vi /etc/sudoers 插入下列一行 www-data ALL=(ALL) NOPASSWD: /usr/bin/python opendoor.py
#php里调用 system("sudo /usr/bin/python opendoor.py")
附:
树莓派控制电机代码 opendoor.py :
import RPi.GPIO as gpio import time gpio.setmode(gpio.BOARD) gpio.setup(29, gpio.OUT) gpio.setup(31, gpio.OUT) gpio.output(29, True) gpio.output(31, False) time.sleep(2.5) gpio.output(31, False) gpio.output(29, False) time.sleep(1) gpio.output(31, True) gpio.output(29, False) time.sleep(0.7) gpio.cleanup()
评论列表:
速卖通教程
评论于2016-02-10 14:10:54
[给力] - 回复该评论
夏日博客
评论于2016-02-20 16:03:48
Python 这个语言一直没搞明白。 - 回复该评论
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
相关文章
PHP 5.3 利用suhosin禁用eval函数2019-03-01
记一次PHP7.2+pthreads多线程环境搭建2018-11-02
根据PayPal通知要求,让CentOS下的Nginx支持TLS 1.22018-05-08
树莓派系列(十三):根据 CPU 温度之控制散热风扇2017-04-28
树莓派系列(十二):树莓派VPN代理之搭建IKEv2服务器2016-11-29
树莓派系列(十一):树莓派内存之修改swap交换分区大小2016-11-16
树莓派系列(十):个人网盘之搭建私有云2016-11-01
树莓派系列(九):系统时间同步之htpdate2016-02-26
妈妈再也不用担心我出门忘带钥匙了2016-01-16
phpExcelReader读取Excel报错解决方法2015-11-18