Install the `astral` Python package.
sudo pip install astral
Be sure to [set the timezone].
Python script to adjust the iso based on sunrise and sunset.
#get access to the camera from picamera import PiCamera #import so we can invoke another script import subprocess #get access to the clock import datetime #sleep so we can wait on the camera from time import sleep # get access to sunrise and sunset from astral import Location from fractions import Fraction # create a camera object camera = PiCamera() #set the image resolution camera.resolution = (1024, 768) #rotate the camera if upside-down #camera.rotation = 180 #flip the camera on the horizontal #camera.hflip = True i = 0; #record defaults framerate = camera.framerate shutter_speed = camera.shutter_speed exposure_mode = camera.exposure_mode iso = camera.iso while True: # Get sunrise and sunset for Monroe, WA l = Location() l.latitude = 47.887059 l.longitude = -121.8792998 l.timezone = 'US/Pacific' sunrise = l.sun()['dawn'] sunriseHour = int(sunrise.strftime('%H')) sunriseMinute = int(sunrise.strftime('%M')) sunset = l.sun()['sunset'] sunsetHour = int(sunset.strftime('%H')) sunsetMinute = int(sunset.strftime('%M')) hours = int(datetime.datetime.now().strftime('%H')) minutes = int(datetime.datetime.now().strftime('%M')) seconds = int(datetime.datetime.now().strftime('%S')) #print 'hours='+hours+' minutes='+minutes+' seconds='+seconds if (hours > sunriseHour and hours < sunsetHour): #print 'work in the light' camera.framerate = framerate camera.shutter_speed = shutter_speed camera.exposure_mode = exposure_mode camera.iso = iso else: #print 'work in the dark' camera.framerate = Fraction(1,6) camera.shutter_speed = 600000 camera.exposure_mode = 'off' camera.iso = 800 filename = 'image'+str(i)+'.jpg' #save image locally camera.capture(filename) #invoke the script to upload the image subprocess.call('python save_image.py '+filename, shell=True) sleep(3) i = (i + 1) % 12