shell - 运行 CRON 作业时无法读取 GPIO 值
问题描述
我有一个用于检测运动的基本脚本,因为它是由挂在 Rasberry PI 上的 PIR 传感器注册的。该脚本在以用户 'pi' 和 root 身份从终端手动运行时运行良好。但是,当我尝试在启动时运行它时,似乎传感器不起作用或我的脚本无法从 /sys/ 读取相应的值。
- 剧本:
echo "4" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio4/direction
while true; do
trap 'echo "4" > /sys/class/gpio/unexport' 0
stat=`cat /sys/class/gpio/gpio4/value`
echo $stat > /home/pi/Desktop/no-movement.txt
if [ $stat == 1 ]
then
echo $stat > /home/pi/Desktop/movement.txt
/usr/bin/omxplayer /home/pi/Desktop/sample.mp3
fi
done
exit 0
- crontab 中的条目:
@reboot /home/pi/Desktop/motion_music_player.sh
评论:
- 正如您在脚本中看到的,我在文本文件中有一些粗略的日志记录。'no-movement.txt' 确实得到了更新,这意味着脚本肯定正在运行。
- 未创建“movement.txt”,这意味着脚本无法读取相应的 GPIO 值(或者传感器出现问题,但只有在启动时,传感器才能正常工作)。
解决方案
推荐阅读
- c# - 如何在 SharePoint 事件接收器中将文本文件从模块复制到未创建的文档库?
- ios - 播放 360 度实时视频流
- python - 如何根据来自不同列的多个值过滤熊猫表?
- python - Exif 无法获取序列号
- algorithm - 谁能告诉我这个问题的更好解决方案?我只能想到O(n ^ 2)的蛮力方式
- postgresql - 我正在迁移数据。如何删除列名上的错误?
- wordpress - 在 Woocommerce 中保存并显示自定义支付网关附加文本输入字段
- javascript - EJS- 更改页面内容和 URL
- c# - C# MySql.Data.MySqlClient 创建数据库失败
- visual-c++ - 使用 CAPL Dll 的静态链接库的问题,