cacControl.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #!/usr/bin/python
  2. import bluetooth
  3. import sys
  4. import time as tm
  5. import datetime as dt
  6. from datetime import datetime, date, time
  7. class Programma:
  8. def __init__(self, inizio, fine, temperatura):
  9. self.inizio = inizio
  10. self.fine = fine
  11. self.temperatura = temperatura
  12. def inOrario(self):
  13. if (type(self.inizio) is datetime and type(self.fine) is datetime):
  14. if (self.ripeti == False):
  15. return self.inizio < datetime.now() < self.fine
  16. if (self.ripeti == True):
  17. return self.inizio.time() < datetime.now().time() < self.inizio.time()
  18. else:
  19. if(type(self.inizio) is time and type(self.fine) is time):
  20. return self.inizio < datetime.now().time() < self.fine
  21. else:
  22. return False
  23. def inTemperaturaDesiderata(self, temperaturaAmbiente):
  24. return self.temperatura >= temperaturaAmbiente
  25. def accediCaldaia(self, temperaturaAmbiente):
  26. return self.inOrario() and self.inTemperaturaDesiderata(temperaturaAmbiente)
  27. bt_add = "98:D3:31:B2:35:33" #termostato
  28. br_add = "30:14:06:26:04:18" #rele
  29. print datetime.now().time()
  30. t1 = dt.time(7, 0, 0)
  31. t2 = dt.time(9, 0, 0)
  32. mattina = Programma(t1, t2,2000)
  33. t3 = dt.time(18, 0, 0)
  34. t4 = dt.time(20, 0, 0)
  35. sera = Programma(t2, t3,2000)
  36. t5 = dt.time(00, 0, 0)
  37. t6 = dt.time(23, 0, 0)
  38. sempre = Programma(t5, t6,1800)
  39. programmazioni = [mattina, sera, sempre]
  40. print mattina.accediCaldaia(2015)
  41. print sera.accediCaldaia(2015)
  42. print sempre.accediCaldaia(1500)
  43. for ndx, member in enumerate(programmazioni):
  44. print member.accediCaldaia(2015)
  45. #print datetime.now()
  46. #print t1
  47. #print t2
  48. #p1Inizio = datetime(2015, 11, 21, 16, 30)
  49. #p1Fine = datetime(2015, 11, 22, 16, 30)
  50. #long_rectangle = Programma(p1Inizio, p1Fine,2014)
  51. #connessione ai dispositivi
  52. portRele = 1
  53. portTerm = 1
  54. sockTerm=bluetooth.BluetoothSocket( bluetooth.RFCOMM )
  55. sockTerm.connect((bt_add, portTerm))
  56. print 'Connesso al termostato'
  57. sockRele=bluetooth.BluetoothSocket( bluetooth.RFCOMM )
  58. sockRele.connect((br_add, portRele))
  59. print 'Connesso al rele'
  60. sockTerm.settimeout(1.0)
  61. sockRele.settimeout(1.0)
  62. print 'parametro: ' + sys.argv[1]
  63. releValue = "s"
  64. #orario attuale
  65. now = datetime.datetime.now()
  66. while 1:
  67. try:
  68. data = ""
  69. sockTerm.send(sys.argv[1])
  70. sockRele.send(releValue)
  71. print 'Sent data: ' + releValue
  72. time.sleep(5) # delays for 5 seconds
  73. data = sockTerm.recv(1024)
  74. if(len(data)==5):
  75. temp = data.replace("t","")
  76. temp = int(temp)
  77. if (temp < 1570):
  78. releValue = "f"
  79. else:
  80. releValue = "n"
  81. print 'received t [%s]' % data
  82. data = ""
  83. time.sleep(5) # delays for 5 seconds
  84. data += sockRele.recv(1024)
  85. print 'received r: [%s]' % data
  86. # data_end = data.find('\n')
  87. # if data_end != -1:
  88. # rec = data[:data_end]
  89. # print data
  90. # data = data[data_end+1:]
  91. # break
  92. except KeyboardInterrupt:
  93. break
  94. except bluetooth.btcommon.BluetoothError as error:
  95. continue
  96. print 'socket chiuso'
  97. sockRele.close()
  98. sockTerm.close()