This is a quick one which pulls in two off previous tutorials the photocell one comes from Adafruit and the Temp is mine..
I combined the code so both the light values and temp readings were both being uploaded to the spread sheet. In order for the upload to google doc`s to work please follow the instructions on the DS18B20 tutorial.
If you want to code to run unattended just put a & at the end and it will create and give you a process ID. One note – you must have the spreadsheet open on a machine , it will not log the data otherwise.
#!/usr/bin/python3 import os, glob, time, gspread, sys, datetime , RPi.GPIO as GPIO DEBUG = 1 GPIO.setmode(GPIO.BCM) #Google account details email = 'your gmail address' password = 'your gmail password' spreadsheet = 'the name of your spread sheet' #the name of the spreadsheet already created #attempt to log in to your google account try: gc = gspread.login(email,password) except: print('fail') sys.exit() #open the spreadsheet worksheet = gc.open(spreadsheet).sheet1 #initiate the temperature sensor os.system('modprobe w1-gpio') os.system('modprobe w1-therm') #set up the location of the sensor in the system base_dir = '/sys/bus/w1/devices/' device_folder = glob.glob(base_dir + '28*') device_file = device_folder + '/w1_slave' print ("Code is running") def read_temp_raw(): f = open(device_file, 'r') lines = f.readlines() f.close() return lines def read_temp(): lines = read_temp_raw() while lines.strip()[-3:] != 'YES': time.sleep(0.2) lines = read_temp_raw() equals_pos = lines.find('t=') if equals_pos != -1: temp_string = lines[equals_pos+2:] temp_c = float(temp_string) / 1000.0 temp_f = temp_c * 9.0 / 5.0 + 32.0 return temp_c def RCtime (RCpin): reading = 0 GPIO.setup(RCpin, GPIO.OUT) GPIO.output(RCpin, GPIO.LOW) time.sleep(0.1) GPIO.setup(RCpin, GPIO.IN) # This takes about 1 millisecond per loop cycle while (GPIO.input(RCpin) == GPIO.LOW): reading += 1 return reading # Return CPU temperature as a character string def getCPUtemperature(): res = os.popen('vcgencmd measure_temp').readline() return res while True: #infinite loop print ("loop is running") tempin = read_temp() #get the temp sensor temppi = getCPUtemperature() #get the pi temp light = RCtime(18) #get light value values = [datetime.datetime.now(), tempin , temppi , light] worksheet.append_row(values) #write to the spreadsheet #print(values) time.sleep(300) #wait 5 minutes