top of page

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()

 

bottom of page