#!/usr/bin/python import bluetooth import sys import time as tm import datetime as dt from datetime import datetime, date, time class Programma: def __init__(self, inizio, fine, temperatura): self.inizio = inizio self.fine = fine self.temperatura = temperatura def inOrario(self): if (type(self.inizio) is datetime and type(self.fine) is datetime): if (self.ripeti == False): return self.inizio < datetime.now() < self.fine if (self.ripeti == True): return self.inizio.time() < datetime.now().time() < self.inizio.time() else: if(type(self.inizio) is time and type(self.fine) is time): return self.inizio < datetime.now().time() < self.fine else: return False def inTemperaturaDesiderata(self, temperaturaAmbiente): return self.temperatura >= temperaturaAmbiente def accediCaldaia(self, temperaturaAmbiente): return self.inOrario() and self.inTemperaturaDesiderata(temperaturaAmbiente) bt_add = "98:D3:31:B2:35:33" #termostato br_add = "30:14:06:26:04:18" #rele print datetime.now().time() t1 = dt.time(7, 0, 0) t2 = dt.time(9, 0, 0) mattina = Programma(t1, t2,2000) t3 = dt.time(18, 0, 0) t4 = dt.time(20, 0, 0) sera = Programma(t2, t3,2000) t5 = dt.time(00, 0, 0) t6 = dt.time(23, 0, 0) sempre = Programma(t5, t6,1800) programmazioni = [mattina, sera, sempre] print mattina.accediCaldaia(2015) print sera.accediCaldaia(2015) print sempre.accediCaldaia(1500) for ndx, member in enumerate(programmazioni): print member.accediCaldaia(2015) #print datetime.now() #print t1 #print t2 #p1Inizio = datetime(2015, 11, 21, 16, 30) #p1Fine = datetime(2015, 11, 22, 16, 30) #long_rectangle = Programma(p1Inizio, p1Fine,2014) #connessione ai dispositivi portRele = 1 portTerm = 1 sockTerm=bluetooth.BluetoothSocket( bluetooth.RFCOMM ) sockTerm.connect((bt_add, portTerm)) print 'Connesso al termostato' sockRele=bluetooth.BluetoothSocket( bluetooth.RFCOMM ) sockRele.connect((br_add, portRele)) print 'Connesso al rele' sockTerm.settimeout(1.0) sockRele.settimeout(1.0) print 'parametro: ' + sys.argv[1] releValue = "s" #orario attuale now = datetime.datetime.now() while 1: try: data = "" sockTerm.send(sys.argv[1]) sockRele.send(releValue) print 'Sent data: ' + releValue time.sleep(5) # delays for 5 seconds data = sockTerm.recv(1024) if(len(data)==5): temp = data.replace("t","") temp = int(temp) if (temp < 1570): releValue = "f" else: releValue = "n" print 'received t [%s]' % data data = "" time.sleep(5) # delays for 5 seconds data += sockRele.recv(1024) print 'received r: [%s]' % data # data_end = data.find('\n') # if data_end != -1: # rec = data[:data_end] # print data # data = data[data_end+1:] # break except KeyboardInterrupt: break except bluetooth.btcommon.BluetoothError as error: continue print 'socket chiuso' sockRele.close() sockTerm.close()