I'd suggest using cron to schedule the fan's on/off tasks.
Scheduling tasks can be managed by the crontab
command.
shell ~> crontab -e
Add each on/off task. They would look something like:
0 9 * * * /path/to/your/python/script.py on
0 21 * * * /path/to/your/python/script.py off
The actual python script would be straight forward. Import sys
to evaluate the on/off argument, and the GPIO library to work with pin 5 (refer to GPIO reference to map correct pin number).
#!/usr/bin/env python
import sys
import RPi.GPIO as GPIO
# Identify which pin controls transistor
FAN_PIN = 4
# Set pin 4 as output
GPIO.setmode(GPIO.BCM)
GPIO.setup(FAN_PIN, GPIO.OUT)
# Get what action to take
action = sys.argv.pop()
if action == "on" :
print "Turning fan on"
GPIO.output(FAN_PIN, GPIO.HIGH)
elif action == "off" :
print "Turning fan off"
GPIO.output(FAN_PIN, GPIO.LOW)
else :
print "Don't know what to do"