我正在尝试将Pi连接到蓝牙扬声器,以便在一天中的某些时间通过cron作业播放音乐。 如果我在SSH中手动运行以下脚本,那么它们会起作用,但是当我将它们作为cron作业放入时,它将失败。
BTConnect.sh
#!/bin/bash
#/usr/bin/pulseaudio -D --system
/usr/bin/sudo service bluetooth restart
/bin/sleep 10
#/usr/bin/pactl load-module module-bluetooth-discover
/usr/bin/pactl list sinks short
/bin/sleep 5
/usr/bin/bluetoothctl << EOF
connect 96:13:5A:00:5D:E6
EOF
/bin/sleep 15
/usr/bin/pactl set-source-volume 0 65535
/usr/bin/pactl list sinks short
/usr/bin/pactl load-module module-loopback source=0 sink=1 rate=44100 adjust_time=0
/usr/bin/mplayer --volume 35 -shuffle -ao pulse Music
BTKill.sh
#!/bin/bash
/usr/bin/pkill mplayer
/usr/bin/bluetoothctl << EOF
disconnect 96:13:5A:00:5D:E6
EOF
/usr/bin/pulseaudio -k
我以“ Pi”身份登录 我手动运行BTConnect.sh以播放“音乐”文件夹中的音乐,然后运行BTKill.sh停止播放。 这些都在我的/ home / pi文件夹中。 当执行上面的'/ usr / bin / pactl load-module module-loopback source = 0 sink = 1 rate = 44100 Adjust_time = 0'时,我得到:
0 alsa_output.platform-soc_audio.analog-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDED
1 bluez_sink.96_13_5A_00_5D_E6.a2dp_sink module-bluez5-device.c s16le 2ch 44100Hz SUSPENDED
但是从cron作业运行时,不会显示“ 1 bluez_sink ...”。因此,mplayer可以运行并播放音乐,但不会将其发送到蓝牙设备。 这是我的Cron工作(创建为“ Pi”用户,而不是Root):
0,10,20,30,40,50 * * * * /home/pi/BTConnect.sh >>/home/pi/BTConnect.log&
5,15,25,35,45,55 * * * * /home/pi/BTKill.sh >>/home/pi/BTKill.log&
如果我登录并手动运行BTConnect.sh,则只要我以“ Pi”身份登录,作业就可以正常运行。但是,如果Raspberry Pi重新启动后,我需要始终保持工作状态而不必登录。
我在这里想念什么?
答案 0 :(得分:0)
尝试将XDG_RUNTIME_DIR环境变量设置为可以执行pactl list并查看连接设备的用户的值。