2020-07-06 23:41:26 +02:00

101 lines
3.1 KiB
Python

import sys
import _thread
import datetime
import time
import schedule
import echo_controller.controller as Controller
import echo_db.database as EchoDB
class EchoScheduler:
@staticmethod
def init():
print('Starting Echo Scheduler Thread...')
_thread.start_new_thread(EchoScheduler.scheduler, ("Main Scheduler Thread", 2, ))
@staticmethod
def scheduler(threadname, delay):
print('Echo Scheduler Thread started!')
# Schedule Tasks
schedule.every(2).minutes.do(EchoScheduler.getClimateData)
schedule.every(2).minutes.do(EchoScheduler.getLightData)
schedule.every(1).minute.do(EchoScheduler.checkAutomaticShutdown)
schedule.every(1).minute.do(EchoScheduler.checkAutomaticBlinds)
# collection_delete = EchoDB.EchoDB.database['ClimateLogs']
# collection_delete.remove({})
while True:
schedule.run_pending()
time.sleep(1)
@staticmethod
def getClimateData():
# Get Device
collection = EchoDB.EchoDB.database['Devices']
device = collection.find_one({'uuid': 'aa50-48fd'})
# Call Action
Controller.Controller.handle_action(device, "gather_climate_data")
print('Scheduler Gathered Climate Data')
@staticmethod
def getLightData():
# Get Device
collection = EchoDB.EchoDB.database['Devices']
device = collection.find_one({'uuid': 'be0c-4bc7'})
# Call Action
Controller.Controller.handle_action(device, "gather_light_data")
print('Scheduler Gathered Light Data')
@staticmethod
def checkAutomaticShutdown():
# Get Device
collection = EchoDB.EchoDB.database['Devices']
device = collection.find_one({'uuid': '9472-4f60'})
# Check if light is on
if device['status'] == "off":
return;
# Check if automatic movement is enabled
if device['automatic_movement'] == False:
return;
# Check if date is current time is past device automatic shutdown time
automatic_shutdown_time = device['automatic_shutdown']
current_time = datetime.datetime.now()
if current_time > automatic_shutdown_time:
Controller.Controller.handle_action(device, "off")
print('Scheduler Turned off light')
@staticmethod
def checkAutomaticBlinds():
# Get current time
now_time = datetime.datetime.now()
now_hours = now_time.hour
now_minutes = now_time.minute
check_time = str(now_hours).zfill(2) + ":" + str(now_minutes).zfill(2)
# Get Device
collection = EchoDB.EchoDB.database['Devices']
device = collection.find_one({'uuid': 'b039-471a'})
# Check if automatic open is enabled
if device['automatic_open'] == False:
return;
automatic_open_time = device['automatic_open_time']
if automatic_open_time == check_time:
Controller.Controller.handle_action(device, "preset", "open")
print('Scheduler Opened Sunblinds')