运行 Pi headless 带启动脚本
Running Pi headless with boot-up script
我正在尝试 运行 无头 Raspberry Pi,作为声控伺服电机移动器工作。我有一个 Python 脚本可以完成我需要的一切(语音和 GPIO 控制)。我所需要的只是在启动时将其设置为 运行 我的 .py
。我有一个Raspberry Pi3,运行宁Raspbian杰西。
到目前为止我尝试过的事情:
编辑/etc/rc.local
如下:
/usr/bin/python /home/pi/myscript.py
在 exit 0
行之前。
我编辑 crontab
有:
@reboot /usr/bin/python3 /home/pi/myscript.py &
我也试过了
@reboot sh /home/launcher.sh
其中 launcher.sh
只是启动 Python 脚本。
还有什么我可以做的吗?
编辑
我将 crontab
行换成了现在这样:
@reboot sh /home/pi/launcher.sh > /home/pi/logs/cronlog 2>&1
我的 cron 日志出现了我以前从未见过的错误,这些错误似乎以我的麦克风硬件为中心。
Expression 'paInvalidSampleRate' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2048
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->capture, inParams, self->primeBuffers, hwParamsCapture, &realSr )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2719
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2843
Traceback (most recent call last):
File "/home/pi/voice_pantilt.py", line 30, in <module>
stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=1024)
File "/usr/lib/python2.7/dist-packages/pyaudio.py", line 747, in open
stream = Stream(self, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/pyaudio.py", line 442, in __init__
self._stream = pa.open(**arguments)
IOError: [Errno Invalid sample rate] -9997`
请注意,当我这样做时,这些不是错误:
python myscript.py
我最近遇到了一个非常相似的问题,经过多次调试,最终似乎是 PyAudio 在通过 crontab 运行 时被拒绝访问 PulseAudio 的问题。
我修复它的方法是在命令前加上 export DISPLAY=:0 &&
export DISPLAY=:0 && /usr/bin/python /home/pi/myscript.py
我正在尝试 运行 无头 Raspberry Pi,作为声控伺服电机移动器工作。我有一个 Python 脚本可以完成我需要的一切(语音和 GPIO 控制)。我所需要的只是在启动时将其设置为 运行 我的 .py
。我有一个Raspberry Pi3,运行宁Raspbian杰西。
到目前为止我尝试过的事情:
编辑/etc/rc.local
如下:
/usr/bin/python /home/pi/myscript.py
在 exit 0
行之前。
我编辑 crontab
有:
@reboot /usr/bin/python3 /home/pi/myscript.py &
我也试过了
@reboot sh /home/launcher.sh
其中 launcher.sh
只是启动 Python 脚本。
还有什么我可以做的吗?
编辑
我将 crontab
行换成了现在这样:
@reboot sh /home/pi/launcher.sh > /home/pi/logs/cronlog 2>&1
我的 cron 日志出现了我以前从未见过的错误,这些错误似乎以我的麦克风硬件为中心。
Expression 'paInvalidSampleRate' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2048
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->capture, inParams, self->primeBuffers, hwParamsCapture, &realSr )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2719
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2843
Traceback (most recent call last):
File "/home/pi/voice_pantilt.py", line 30, in <module>
stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=1024)
File "/usr/lib/python2.7/dist-packages/pyaudio.py", line 747, in open
stream = Stream(self, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/pyaudio.py", line 442, in __init__
self._stream = pa.open(**arguments)
IOError: [Errno Invalid sample rate] -9997`
请注意,当我这样做时,这些不是错误:
python myscript.py
我最近遇到了一个非常相似的问题,经过多次调试,最终似乎是 PyAudio 在通过 crontab 运行 时被拒绝访问 PulseAudio 的问题。
我修复它的方法是在命令前加上 export DISPLAY=:0 &&
export DISPLAY=:0 && /usr/bin/python /home/pi/myscript.py