Recently I've been playing with the raspberry pi and given it's Ramadan, I thought I'd see if I could turn it into an Azaan (Islamic call to prayer) clock. Given the RPI is low powered I can leave it on and it doesn't need a monitor, keyboard, mouse, etc plugged in.
This is what I did:
1. Plug in a speaker into the 3.5mm audio output on the raspberry pi
2. Download python code from prayTimes.org to calculate prayer times
3. Download azaan mp3 from prayTimes.org again.
4. Write a python script to set jobs in crontab to play the azaan mp3 at the appropriate time (see code below or download here). The python code from prayTimes.org has to be in the same folder for this to work.
My script utilizes the python crontab library. More info on setting this up available on the links below
Python crontab: http://pypi.python.org/pypi/python-crontab/
Installing modules: http://docs.python.org/2/install/index.html
The bits you may need to configure yourself are:
a) Longitude and Latitude (currently set to London UK)
lat = 51.5171
long = 0.1062
b) Timezone (currently set to 0+GMT and daylight savings =1 )
times = PT.getTimes((now.year,now.month,now.day), (lat, long), 0,1)
c) Location of azaan mp3:
strPlayAzaanMP3Command = 'omxplayer -o local /home/pi/Downloads/Abdul-Basit.mp3 > /dev/null 2>&1'
5. Add a job in crontab to run this script on a daily basis to update the azaan times:
# m h dom mon dow command
0 1 * * * python /home/pi/Documents/updateAzaanTimers.py > /dev/null 2>&1
6. You're done. For each prayer , the raspberry pi will play the azaan mp3 via the speaker.
For All code and audio files I've used/written are available on the link below:
https://www.dropbox.com/sh/r0e787digng1rgv/OmCXiu9Vx_/RPi%20Azaan%20Clock
#!/usr/bin/env python
import datetime
from praytimes import PrayTimes
#Get Prayer Times
#--------------------
lat = 51.5171
long = 0.1062
now = datetime.datetime.now()
PT = PrayTimes('ISNA')
times = PT.getTimes((now.year,now.month,now.day), (lat, long), 0,1)
print times['fajr']
print times['dhuhr']
print times['asr']
print times['maghrib']
print times['isha']
#Update Crontab with Prayer Times
#---------------------------------
from crontab import CronTab
#Function to add azaan time to cron
def addAzaanTime (strPrayerName, strPrayerTime, objCronTab, strCommand):
job = objCronTab.new(command=strCommand,comment=strPrayerName)
timeArr = strPrayerTime.split(':')
hour = timeArr[0]
min = timeArr[1]
job.minute.on(int(min))
job.hour.on(int(hour))
print job
return
system_cron = CronTab()
strPlayAzaanMP3Command = 'omxplayer -o local /home/pi/Downloads/Abdul-Basit.mp3 > /dev/null 2>&1'
jobs = system_cron.find_command(strPlayAzaanMP3Command)
print jobs
for j in jobs:
system_cron.remove(j)
addAzaanTime('fajr',times['fajr'],system_cron,strPlayAzaanMP3Command)
addAzaanTime('dhuhr',times['dhuhr'],system_cron,strPlayAzaanMP3Command)
addAzaanTime('asr',times['asr'],system_cron,strPlayAzaanMP3Command)
addAzaanTime('maghrib',times['maghrib'],system_cron,strPlayAzaanMP3Command)
addAzaanTime('isha',times['isha'],system_cron,strPlayAzaanMP3Command)
system_cron.write()