Advertisement
kreket

piTempController Alarm

Dec 29th, 2019
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.92 KB | None | 0 0
  1. import time
  2. import datetime
  3. import socket
  4.  
  5.  
  6. current_temp = 15
  7. target_temp = 15
  8. server_address = "10.0.0.58"
  9. server_port = 1234
  10. temp_pull = 5  # Seconds between each tempera
  11.  
  12.  
  13. alarm_triggered = False
  14. alarm_sleep = 420 # Default time of sleep (420 = 7 hours)
  15. alarm_off = 90 # Time(minutes) oven shuts down before 7 hour sleep
  16. alarm_on = 30 # Amount of time before alarm oven should turn on.
  17. alarm = None
  18. loke_alarm = None
  19. kajsa_alarm = None
  20. now = datetime.datetime.now()
  21.  
  22.  
  23. def checkalarm():
  24.     global alarm
  25.     global alarm_off
  26.     global alarm_on
  27.     global alarm_triggered
  28.     if alarm:
  29.         # Convert alarm time to datetime format
  30.         alarm2 = alarm.split(":")
  31.         alarm2 = now.replace(hour=int(alarm2[0]), minute=int(alarm2[1]), second=0, microsecond=0)
  32.         # Subtract sleeping time and off timer
  33.         alarm2 = alarm2 - datetime.timedelta(minutes=(alarm_sleep + alarm_off))
  34.         print(f"Time oven should go off: {alarm2}")
  35.         if alarm2 < now:  # Check if oven should be turned off
  36.             if alarm_triggered == False:
  37.                 print("Turn oven off.")
  38.                 alarm_triggered = True
  39.         print(alarm)
  40.  
  41.         # Reset
  42.         alarm2 = alarm.split(":")
  43.         alarm2 = now.replace(hour=int(alarm2[0]), minute=int(alarm2[1]), second=0, microsecond=0)
  44.  
  45.         # Subtract time before
  46.         alarm2 = alarm2 - datetime.timedelta(minutes=(alarm_on))
  47.         print(f"Time oven should turn on: {alarm2}")
  48.         if alarm2 < now:  # Check if oven should be turned on
  49.             if alarm_triggered == True:
  50.                 print("Turn oven on.")
  51.                 alarm_triggered = False
  52.                 alarm = None
  53.         print(f"Updated alarm {alarm}")
  54.  
  55.  
  56. def updatealarm():
  57.     global alarm
  58.     global loke_alarm
  59.     global kajsa_alarm
  60.     if loke_alarm:
  61.         data = loke_alarm.split(":") #Divide lokes alarm HH:mm
  62.         if kajsa_alarm: #Check if kajsa also has an alarm set
  63.             data2 = kajsa_alarm.split(":") #Divide Kajas alarm
  64.             if data[0] <= data2[0] and data[1] < data2[1]: # Check if that alarm is set earlier
  65.                 alarm = loke_alarm # If not, set the actual alarm
  66.         else:
  67.             alarm = loke_alarm #If no other alarm is set, set the actual alarm time.
  68.  
  69.     if kajsa_alarm:
  70.         data = kajsa_alarm.split(":")
  71.         if loke_alarm:
  72.             data2 = loke_alarm.split(":")
  73.             if data[0] <= data2[0] and data[1] < data2[1]:
  74.                 alarm = kajsa_alarm
  75.         else:
  76.             alarm = kajsa_alarm
  77.     checkalarm()
  78.  
  79. #Connection
  80. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  81. s.bind((server_address, server_port))
  82. s.listen(5)
  83. while True:
  84.     clientsocket, address = s.accept()
  85.     print(f"Connection from {address}.")
  86.  
  87.     # Send current temperature and target temperature!
  88.     clientsocket.send(bytes("Temp: " + str(current_temp), "utf-8"))
  89.     clientsocket.send(bytes("Target: " + str(target_temp), "utf-8"))
  90.  
  91.     # Receive new target temperature!
  92.     receive = clientsocket.recv(1024).decode("utf-8")
  93.     if receive:
  94.         target = receive.split(" ")
  95.         target_temp = int(target[1])
  96.         print(target_temp)
  97.  
  98.  
  99.     receive = clientsocket.recv(1024).decode("utf-8")
  100.  
  101.     if receive: #Checks if any alarm data has been received
  102.         data = receive.split(" ")
  103.         if data[0] == "Loke": # Checks if its from Loke
  104.             if data[1] != "%hour:%minute": #Checks if alarm is set
  105.                 loke_alarm = data[1] #Sets alarm time if set.
  106.             else:
  107.                 loke_alarm = None # Clears variable if no alarm is set, and alarm data is sent.
  108.         elif data[0] == "Kajsa":
  109.             if data[1] != "%hour:%minute":
  110.                 kajsa_alarm = data[1]
  111.             else:
  112.                 kajsa_alarm = None
  113.  
  114.         print(f"Loke's alarm {loke_alarm} Kajsa's alarm {kajsa_alarm}")
  115.  
  116.     clientsocket.close()
  117.     updatealarm()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement