The code running Tempura
import os
import glob
import time
import csv
import subprocess
import json
import gps
from RPLCD import CharLCD
import RPi.GPIO as GPIO
​
lcd = CharLCD(cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33, 31, 29, 23], numbering_mode=GPIO.BOARD)
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'
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[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos + 2:]
temp_c = float(temp_string) / 1000.0
return temp_c
def get_gps():
raw_output = subprocess.check_output(['gpspipe', '-w', '-n', '10'])
output_str = raw_output.decode('utf-8')
try:
output = next(line for line in output_str.splitlines() if 'lon' in line)
result = json.loads(output)
lat = result['lat']
lon = result['lon']
timestamp = result['time']
except:
lat = 'NaN'
lon = 'NaN'
timestamp = 'NaN'
return lat, lon, timestamp
​
while True:
f = open('/home/pi/temp.csv', 'a')
writer = csv.writer(f)
temp = read_temp()
lcd.cursor_pos = (0, 0)
lcd.write_string('Tempura')
lcd.cursor_pos = (1, 0)
lcd.write_string('Temp: ' + str(round(temp, 2)) + 'C')
time.sleep(15)
f.close()