Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time
- import datetime
- import socket
- current_temp = 15
- target_temp = 15
- server_address = "10.0.0.58"
- server_port = 1234
- temp_pull = 5 # Seconds between each tempera
- alarm_triggered = False
- alarm_sleep = 420 # Default time of sleep (420 = 7 hours)
- alarm_off = 90 # Time(minutes) oven shuts down before 7 hour sleep
- alarm_on = 30 # Amount of time before alarm oven should turn on.
- alarm = None
- loke_alarm = None
- kajsa_alarm = None
- now = datetime.datetime.now()
- def checkalarm():
- global alarm
- global alarm_off
- global alarm_on
- global alarm_triggered
- if alarm:
- # Convert alarm time to datetime format
- alarm2 = alarm.split(":")
- alarm2 = now.replace(hour=int(alarm2[0]), minute=int(alarm2[1]), second=0, microsecond=0)
- # Subtract sleeping time and off timer
- alarm2 = alarm2 - datetime.timedelta(minutes=(alarm_sleep + alarm_off))
- print(f"Time oven should go off: {alarm2}")
- if alarm2 < now: # Check if oven should be turned off
- if alarm_triggered == False:
- print("Turn oven off.")
- alarm_triggered = True
- print(alarm)
- # Reset
- alarm2 = alarm.split(":")
- alarm2 = now.replace(hour=int(alarm2[0]), minute=int(alarm2[1]), second=0, microsecond=0)
- # Subtract time before
- alarm2 = alarm2 - datetime.timedelta(minutes=(alarm_on))
- print(f"Time oven should turn on: {alarm2}")
- if alarm2 < now: # Check if oven should be turned on
- if alarm_triggered == True:
- print("Turn oven on.")
- alarm_triggered = False
- alarm = None
- print(f"Updated alarm {alarm}")
- def updatealarm():
- global alarm
- global loke_alarm
- global kajsa_alarm
- if loke_alarm:
- data = loke_alarm.split(":") #Divide lokes alarm HH:mm
- if kajsa_alarm: #Check if kajsa also has an alarm set
- data2 = kajsa_alarm.split(":") #Divide Kajas alarm
- if data[0] <= data2[0] and data[1] < data2[1]: # Check if that alarm is set earlier
- alarm = loke_alarm # If not, set the actual alarm
- else:
- alarm = loke_alarm #If no other alarm is set, set the actual alarm time.
- if kajsa_alarm:
- data = kajsa_alarm.split(":")
- if loke_alarm:
- data2 = loke_alarm.split(":")
- if data[0] <= data2[0] and data[1] < data2[1]:
- alarm = kajsa_alarm
- else:
- alarm = kajsa_alarm
- checkalarm()
- #Connection
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.bind((server_address, server_port))
- s.listen(5)
- while True:
- clientsocket, address = s.accept()
- print(f"Connection from {address}.")
- # Send current temperature and target temperature!
- clientsocket.send(bytes("Temp: " + str(current_temp), "utf-8"))
- clientsocket.send(bytes("Target: " + str(target_temp), "utf-8"))
- # Receive new target temperature!
- receive = clientsocket.recv(1024).decode("utf-8")
- if receive:
- target = receive.split(" ")
- target_temp = int(target[1])
- print(target_temp)
- receive = clientsocket.recv(1024).decode("utf-8")
- if receive: #Checks if any alarm data has been received
- data = receive.split(" ")
- if data[0] == "Loke": # Checks if its from Loke
- if data[1] != "%hour:%minute": #Checks if alarm is set
- loke_alarm = data[1] #Sets alarm time if set.
- else:
- loke_alarm = None # Clears variable if no alarm is set, and alarm data is sent.
- elif data[0] == "Kajsa":
- if data[1] != "%hour:%minute":
- kajsa_alarm = data[1]
- else:
- kajsa_alarm = None
- print(f"Loke's alarm {loke_alarm} Kajsa's alarm {kajsa_alarm}")
- clientsocket.close()
- updatealarm()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement