Пример #1
0
    def __init__(self):
        self.scheduler = BackgroundScheduler()
        self.db = DatabaseManager(
            '/home/pi/sfc1/SimpleFurnaceController/Common/database.db')
        self.sensor = W1ThermSensor()
        self.heater = Heater()

        self.checkFrequency()
        self.checkMinMaxTemperature()

        self.scheduler.start()
        self.initSchedulers()
Пример #2
0
def boost():
	content = request.get_json()
	data = json.loads(content)
	
	for job in scheduler.get_jobs():
	    if job.id == 'boost_id':
	        scheduler.remove_job(job.id)
	
	boostEnd = data['boost_end']
	
	if int(boostEnd) > 0:
		now = datetime.now()
		boost_control(1)
		timeFrac = int(boostEnd) / 60
		hourFrac, minFrac = divmod(timeFrac, 1)
		min = int(minFrac * 60) + now.minute
		hour = int(hourFrac) + now.hour
		print hour, min
		scheduler.add_job(stop_boost, 'cron', id = 'boost_id', hour=hour, minute=min, args=[scheduler])
		
		heater = Heater( -1, now.weekday(), 1, 1, 0, 1, 'Boost',
			( str(now.hour)+':'+str(now.minute) ),
			( str(hour)+':'+str(min) ) )
		service.updateHeater(heater)
	else:
		boost_control(0)
	return "OK"
Пример #3
0
def heater_init():
    global pinList

    # create heater.
    heaterRelay = 3

    fMinAirTemp = float(raw_input('Minimum air temp: '))
    fMinWaterTemp = float(raw_input('Minimum water temp: '))

    gh_heater = Heater(heaterRelay, fMinAirTemp, fMinWaterTemp)

    return gh_heater
Пример #4
0
def onHeaterSend():
	content = request.get_json()
	data = json.loads(content)
	# id, day_no, record_enabled, boost_used, heating_used, water_used, heater_type, time_start, time_end):
	heater = Heater(
		int(data['id']),
		int(data['day_no']),
		int(data['record_enabled']),
		int(data['boost_used']),
		int(data['heating_used']),
		int(data['water_used']),
		data['heater_type'],
		data['time_start'],
		data['time_end'])
	service.updateHeater(heater)
	onUpdate()
	return jsonify({'status' : 'ok'}), 201 
Пример #5
0
    def __init__(self, timings=[10], temperatures=[60], timestep=60):
        # create connection to hardward
        self.heater = Heater()
        # define in what intervals the controller should update
        self.timesteps = timestep

        #PID parameters
        self.nTime = 100000000000000000
        self.t_d = 10
        self.k_pid = 1000

        # the malting scheme
        self.times = [t * 60 for t in timings]
        self.temps = temperatures
        self.cook_times = {}

        self.timer_prev_index = -1
        self.start_time = None
        # remove this
        self.oldtime = dt.datetime.now()
Пример #6
0
    def selectDB(self):
        self.connectDB()
        objectList = []
        try:
            print("DB Selecting...")
            cur = self.conn.cursor()
            cur.execute("SELECT *  from PI_HEATER ")
        except (AttributeError, sqlite3.OperationalError):
            print("DB Error Selecting...")
            self.connect()
            cur = self.conn.cursor()
            cur.execute("SELECT *  from PI_HEATER ")

        rows = cur.fetchall()
        desc = cur.description
        # id, day_no, record_enabled, boost_used, heating_used, water_used, heater_type, time_start, time_end):
        for row in rows:
            heater = Heater(row[0], row[1], row[8], row[7], row[4], row[3],
                            row[2], row[5], row[6])
            objectList.append(heater)
        self.closeDB()
        return objectList
Пример #7
0
def test():
    w1 = Window(2)
    w2 = Window(2)
    w3 = Window(2)
    w4 = Window(2)
    w5 = Window(2)
    w6 = Window(2)

    d1 = Door(1.5)
    d2 = Door(1.5)
    d3 = Door(1.5)
    d4 = Door(1.5)
    d5 = Door(1.5)
    d6 = Door(1.5)

    r1 = Room("Kitchen", 12, 10, 8, 10.7, True, d1, w1)
    r2 = Room("Kitchen", 12, 10, 8, 11.1, True, d2, w2)
    r3 = Room("Kitchen", 12, 10, 8, 10.3, True, d3, w3)
    r4 = Room("Kitchen", 12, 10, 8, 10.9, True, d4, w4)
    r5 = Room("Kitchen", 12, 10, 8, 11.3, True, d5, w5)
    r6 = Room("Kitchen", 12, 10, 8, 11.7, True, d6, w6)

    b = Heater([r1, r2, r3])

    h = House(True, [r1, r2, r3], b, -25.004, 30.032)
    h.insulate()
    h.is_insulated()
    print(h.get_rooms())
    h.set_rooms([r4, r5, r6])
    h.add_room("Living room")
    print(h.get_rooms())
    print(h.get_lat())
    h.set_lon(12.651)
    print(h.get_lon())
    print(h.get_average_temp())

    print(h)
Пример #8
0
while True:  #all this shit gets user inputs for setpoints undert overt and output pin
    try:
        setpoint = int(
            raw_input("What shoudl the setpoint be? "))  # setpoint is setpoint
        overt = int(
            raw_input("What would you like the overshoot to be? ")
        )  # overt is the overshoot value so how far it goes over before shutting off
        undert = int(raw_input("What would you like the undershoot to be? ")
                     )  # undert is the opposite of over t
        pin = int(raw_input(
            "What pin would you like to use? "))  # pin is which pin is it
    except ValueError, SyntaxError:
        print "You have entered and invalid character. Only enter numbers."
        continue
    break
t = read_fint()
heater = Heater(pin, t, setpoint, undert, overt)
try:
    while True:
        t = read_fint()
        heater.update(t)
        time.sleep(5)
except KeyboardInterrupt:  #what to do if I hit ctrl c
    print "You have ended control"
    heater.heateroff()
    GPIO.cleanup()
#except: #everhting else
#heater.heateroff()
#GPIO.cleanup()
#EmailTest.error()
Пример #9
0
Файл: Main.py Проект: EuanOR/FYP
bedroom1Rad = Rad(2500)
bedroom1Light = Light(98)
bedroom1Door = Door(1.5)
electricBlanket = ElectricBlanket(5)
bedroom1 = Bedroom("Bedroom 1", 12, 12, 8, 12.0, bedroom1Rad, bedroom1Door,
                   bedroom1Light, bedroom1Window, electricBlanket)

utilityRoomWindow = Window(3)
utilityRoomRad = Rad(1200)
utiilityRoomLight = Light(100)
utilityRoomDoor = Door(2)
dryer = Dryer(300)
utiilityRoom = UtilityRoom("Utility Room", 8,  8, 8, 12.0, \
    utilityRoomRad, utilityRoomDoor, utiilityRoomLight, utilityRoomWindow, dryer)

houseRooms = [livingRoom, kitchen, bedroom1, utiilityRoom]
houseRads = [livingRoomRad, kitchenRad, bedroom1Rad, utilityRoomRad]
houseLights = [livingRoomLight, kitchenLight, bedroom1Light, utiilityRoomLight]
Boiler = Heater(houseRads)
Light_Controller = LightController(houseLights)
Kitchen_Controller = KitchenController(kitchen)
Bedroom_Controller = BedroomController(bedroom1)
Utility_Room_Controller = UtilityRoomController(utiilityRoom)
Home = House(True, houseRooms, Boiler, "-37.8136", "144.9631")

Mon = Monitor(0, 30, Boiler, Light_Controller, Kitchen_Controller,
              Bedroom_Controller, Utility_Room_Controller)

c = Controller(Home, Mon)

c.run()
Пример #10
0
class Driver:
    def __init__(self):
        self.scheduler = BackgroundScheduler()
        self.db = DatabaseManager(
            '/home/pi/sfc1/SimpleFurnaceController/Common/database.db')
        self.sensor = W1ThermSensor()
        self.heater = Heater()

        self.checkFrequency()
        self.checkMinMaxTemperature()

        self.scheduler.start()
        self.initSchedulers()

    def initSchedulers(self):
        self.lt = self.scheduler.add_job(self.logTemperature,
                                         'interval',
                                         seconds=self.frequency)
        self.uc = self.scheduler.add_job(self.updateConditional,
                                         'interval',
                                         seconds=self.frequency)
        self.ch = self.scheduler.add_job(self.controlHeater,
                                         'interval',
                                         seconds=self.frequency)

    def run(self):
        print('*** Press CTRL-C to exit. ***')

        try:
            while True:
                time.sleep(3)

        except (KeyboardInterrupt, SystemExit):
            print('*** Bye, bye. ***')
            self.scheduler.shutdown()

    def logTemperature(self):
        self.db.insertTemperature(self.sensor.get_temperature())

    def checkFrequency(self):
        self.frequency = self.db.selectFrequencyFromConf()

    def checkMinMaxTemperature(self):
        [self.minTemperature,
         self.maxTemperature] = self.db.selectMinAndMaxTempFromConf()

    def updateConditional(self):
        self.checkMinMaxTemperature()

        f = self.db.selectFrequencyFromConf()

        if (self.frequency != f):
            self.frequency = f

            self.lt.remove()
            self.lt = self.scheduler.add_job(self.logTemperature,
                                             'interval',
                                             seconds=self.frequency)

            self.uc.remove()
            self.uc = self.scheduler.add_job(self.updateConditional,
                                             'interval',
                                             seconds=self.frequency)

            self.ch.remove()
            self.ch = self.scheduler.add_job(self.controlHeater,
                                             'interval',
                                             seconds=self.frequency)

    def controlHeater(self):
        avg = self.db.selectAverageLastFive()

        if avg < self.minTemperature:
            self.heater.on()
        elif avg > self.maxTemperature:
            self.heater.off()
Пример #11
0
    tempSensor2 = '/var/tmp/Px_temp.source'

try:
    tempGetter = TempGetter.TempGetter(tempSensor1)  # unten
    tempGetter2 = TempGetter.TempGetter(tempSensor1)
except Exception as ex:
    print("TempGetter init failed! cannot run! Exit", ex)
if tempGetter == 0 or tempGetter2 == 0:
    sys.exit(4)

#####################
# Heater Init
#####################
heater = 0
try:
    heater = Heater.Heater()
except Exception as ex:
    print("Heater init failed! cannot run! Exit", ex)
if heater == 0:
    sys.exit(3)

#####################
# Display Init
#####################
lcdGraphic = 0
try:
    if options.virtual:
        lcdGraphic = LCDGraphic("virtual")
    else:
        lcdGraphic = LCDGraphic("real")
except Exception as ex:
Пример #12
0
import RPi.GPIO as GPIO
from Utilities import get_logger, log_message
from Schedule import Schedule
from Heater import Heater
from TempSensor import TempSensor
from datetime import datetime, timedelta

logger = get_logger()

ser = serial.Serial("/dev/ttyUSB0",
                    9600)  # change ACM number as found from ls /dev/tty/ACM*

GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)

HEATER = Heater(ser)
TEMP_SENSOR = TempSensor(ser)
schedule = Schedule('schedule')


def main_logic():
    try:
        log_message("The script is started")
        # wait for setup phase
        while True:
            read_ser = ser.readline().decode().strip()
            if 'Send alive signal' in read_ser:
                time.sleep(5)
                break
        log_message("Heater status is: {}\n".format(HEATER.get_status()))
        while True:
Пример #13
0
def test():
    H = Heater(20)

    r1 = Rad(H.get_heat())
    r2 = Rad(H.get_heat())
    r3 = Rad(H.get_heat())
    r4 = Rad(H.get_heat())
    r5 = Rad(H.get_heat())
    r6 = Rad(H.get_heat())

    H.add_rad(r1)
    H.add_rad(r2)
    H.add_rad(r3)
    H.add_rad(r4)
    H.add_rad(r5)
    H.add_rad(r6)
Пример #14
0
"""
Created on Wed Jan  8 21:42:07 2020

@author: pi
"""
from queue import Queue
from Timer import Timer
from Display import Display
from Heater import Heater
from Encoder import Encoder
from Application import Application

if __name__ == "__main__":
    A_PIN = 21
    B_PIN = 23
    SW_PIN = 22

    A_PIN_2 = 0
    B_PIN_2 = 2
    SW_PIN_2 = 3

    display = Display()
    display.init()
    timer = Timer()
    encoder_1 = Encoder(A_PIN, B_PIN, SW_PIN, "encoder_1")
    encoder_2 = Encoder(A_PIN_2, B_PIN_2, SW_PIN_2, "encoder_2")
    heater = Heater()
    application = Application(display, timer, encoder_1, encoder_2, heater)

    application.init()
Пример #15
0
@author:     Effi

@copyright:  2017 organization_name. All rights reserved.

@license:    license

@contact:    user_email
@deffield    updated: Updated
'''
from LED import LED
from Socket import Socket
from datetime import datetime, time
from Controller import Controller
from Belueftung import Belueftung
from Heater import Heater
from SensorTemp import SensorTemp

lichtData = {time(07, 00): time(19, 00)}

#Create objects
temp = SensorTemp(274151, '3AU6RMVSYJ0UXQHY', 'VBO2U7I3LHBZNX05')
led = LED("LED Saga", lichtData)
belueftung = Belueftung("Luefter", '23:59:59', '00:00:20')
heater = Heater("Handy Heater", belueftung, temp)
belueftung.setHeater(heater)
controller = Controller(led, belueftung, heater, temp)
controller.BELUEFTUNG.turnOff()
controller.HEATER.turnOff()
controller.LED.turnOff()
controller.start()