# -*- coding: utf-8 -*- # (c) Sebastian Schneckener # License: GPL - have fun # import os import time import datetime import sys # http://sourceforge.net/p/raspberry-gpio-python/wiki/BasicUsage/ if (os.uname()[1]=="raspberrypi"): import readTemperature import RPi.GPIO as GPIO ## Import GPIO library GPIO.setmode(GPIO.BCM) GPIO.setup(2, GPIO.OUT) ## Setup GPIO Pin 2 to OUT -> this goes to the SSR GPIO.setup(3, GPIO.OUT) ## Setup GPIO Pin 3 to OUT GPIO.setup(7, GPIO.OUT) ## Setup GPIO Pin 7 to OUT def pollTemperature(): if (os.uname()[1]=="raspberrypi"): temp = readTemperature.read_temp()[1] else: import random temp = random.randint(35, 40) return (temp) def heat_on(): if (os.uname()[1]=="raspberrypi"): GPIO.output(2,1) ## Turn on GPIO 2 GPIO.output(3,0) ## green LED off GPIO.output(7,0) ## yellow LED off def heat_off(): if (os.uname()[1]=="raspberrypi"): GPIO.output(2,0) ## Turn on GPIO 2 GPIO.output(3,1) ## green LED on GPIO.output(7,0) ## yellow LED off def run(lower, upper): f = open("./thermostat.txt", "w") while (1): time.sleep(10) t = pollTemperature() if (t< lower): # heating needed heat_on() a = "heat on" elif (t> upper): # too hot? a = heat_off() a = "heat off" else: # ok heat_off() a = "ok" # sys.stdout.write("\t".join( [str(datetime.date.today()), str(t), a])+"\n") f.write("\t".join( [str(time.asctime( time.localtime(time.time()) )), str(t), a])+"\n") f.flush() if __name__ == '__main__': if (len (sys.argv)==2): lower = float(sys.argv[1]) -0.01 upper = float(sys.argv[1]) +0.01 elif (len (sys.argv)==3): lower = float(sys.argv[1]) upper = float(sys.argv[2]) else: upper = 38.01 lower = 37.99 assert (lower < upper) run(lower, upper )