Shell 运行CRON作业时无法读取GPIO值

Shell 运行CRON作业时无法读取GPIO值,shell,cron,gpio,pigpio,Shell,Cron,Gpio,Pigpio,我有一个基本的脚本用于检测运动,因为它是由一个挂在Rasberry PI上的PIR传感器记录的。当从终端以用户“pi”和root用户身份手动运行时,脚本工作正常。但是,当我尝试在启动时运行它时,可能是传感器不工作,或者我的脚本无法从/sys/读取相应的值 剧本: crontab中的条目: 备注: 正如您在脚本中看到的,我在文本文件中有一些粗略的日志记录。”不会更新movement.txt,这意味着脚本肯定正在运行 未创建“movement.txt”,这意味着脚本无法读取相应的GPIO值(或者传感

我有一个基本的脚本用于检测运动,因为它是由一个挂在Rasberry PI上的PIR传感器记录的。当从终端以用户“pi”和root用户身份手动运行时,脚本工作正常。但是,当我尝试在启动时运行它时,可能是传感器不工作,或者我的脚本无法从/sys/读取相应的值

  • 剧本:
  • crontab中的条目:
  • 备注:

  • 正如您在脚本中看到的,我在文本文件中有一些粗略的日志记录。”不会更新movement.txt,这意味着脚本肯定正在运行
  • 未创建“movement.txt”,这意味着脚本无法读取相应的GPIO值(或者传感器出现问题,但只有在启动时,传感器才能正常工作)

  • 我会在脚本的最顶端添加一个
    sleep 120
    (当然是在`#!/bin/bash之后),让事情先开始(只是一个猜测)。祝你好运不要使用sysfs接口。它已弃用,将在新内核中默认禁用。使用
    libgpiod
    及其工具。@Sheller谢谢,但这并没有奏效@0安德烈用
    ligpiod
    成功了。如果你想得到被接受的答案,你可以发布一个带有文档的答案,我会把它标记为正确的答案。谢谢你们两位抽出时间。
    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
    
    
    @reboot /home/pi/Desktop/motion_music_player.sh