2017-02-27 84 views
2

我想讓我的Raspberry Pi,它當前連接到藍牙揚聲器每天播放音頻文件的時間表的基礎上,我的cron工作正在更新@daily得到新的正時(這基本上是祈禱的調用)音頻不與Raspberry Pi上的crontab播放

crontab -l

@daily /home/pi/athan/update_prayers.sh 
39 05 27 2 * /home/pi/athan/call_prayer.sh >/dev/null 2>&1 #fajr 
31 12 27 2 * /home/pi/athan/call_prayer.sh >/dev/null 2>&1 #dhuhr 
34 15 27 2 * /home/pi/athan/call_prayer.sh >/dev/null 2>&1 #asr 
05 18 27 2 * /home/pi/athan/call_prayer.sh >/dev/null 2>&1 #maghrib 
24 19 27 2 * /home/pi/athan/call_prayer.sh >/dev/null 2>&1 #isha 

所以,上面的是我現在所擁有的,這是/home/pi/athan/update_prayers.sh

#!/bin/bash 
/home/pi/.nvm/versions/node/v7.5.0/bin/node /home/pi/athan/set_prayer.js 
內容

基本上我的set_prayer.js只是使用這個https://www.npmjs.com/package/crontab模塊來設置crontab,我可以在這裏每天都得到它的更新。現在,我使用Mplayer播放音頻,這是命令我使用:

/home/pi/athan/call_prayer.sh

#!/bin/bash 
/usr/bin/mplayer /home/pi/athan/athan.mp3 

我在這裏的問題是,當它的時間cron作業運行沒有聲音或I甚至不知道工作是否正在運行,但是當我手動執行時,我可以聽到正在播放的音頻沒有問題。我也試着直接在這裏使用/usr/bin/omxplayer -o alsa /home/pi/athan/athan.mp3來運行它,而不是運行bash腳本,它似乎不能用於cron,但是當我直接運行命令時工作正常。

+0

嗯,,你使用的完整路徑一切(或我錯過了一個?),這樣省去一個共同的問題。爲什麼不使用'MM HH * * * */path/to/prog',而不是編寫'MM HH DD MM */path/to/prog'。祝你好運。 – shellter

+0

問題是,每個祈禱的時間基於日出/日落等,所以這只是爲了消除文件中的任何時間表,以便不會再次運行,儘管我有一個腳本可以在午夜刪除它們,並隨時更新新的日程表。 – Ali

+0

看看有沒有靜態的crontab會有什麼不同。如果它開始工作,那麼我們有東西要調試。此外,雖然它不應該問題,但刪除'>/dev/null 2> 1's fo測試?祝你好運。 – shellter

回答

7

如果命令是從運行crontab我類似的問題(藍牙揚聲器沒有音頻掙扎。

問題是混合的PulseAudio/crontab中的環境設置。

以下解決方案工作對我來說: https://wiki.archlinux.org/index.php/PulseAudio#Play_sound_from_a_non-interactive_shell_.28systemd_service.2C_cron.29

所以基本上只是crontab -e並添加以下內容:

XDG_RUNTIME_DIR=/run/user/user_id 

用戶ID可以通過以下命令可以看出:

id [user_name] 
+0

終於我有機會嘗試你的方法! OMG非常感謝你的回答:D – Ali

+0

這絕對解決了這個問題!謝謝! – Jay

+0

謝謝!整夜搜索解決方案!爲了記錄我用VLC和ALSA錯誤是: 「xcb_connection_has_error()返回真」 在樹莓派3使用與Python的定製服務,在服務我說: [服務] 環境=」 XDG_RUNTIME_DIR = /運行/用戶/ USER_ID」 –