initial push
This commit is contained in:
79
echo-master/echo_controller/switch.py
Normal file
79
echo-master/echo_controller/switch.py
Normal file
@@ -0,0 +1,79 @@
|
||||
import datetime
|
||||
import echo_serial.serial_controller as EchoSerial
|
||||
import echo_db.database as EchoDB
|
||||
|
||||
class Switch:
|
||||
|
||||
@staticmethod
|
||||
def handle_action(device, action, data):
|
||||
actionData = device['actions'][action]
|
||||
collection = EchoDB.EchoDB.database['Devices']
|
||||
|
||||
if action == "automatic_movement":
|
||||
|
||||
if data == "on":
|
||||
# Update Database
|
||||
now_time = datetime.datetime.now()
|
||||
auto_shutdown = now_time + datetime.timedelta(minutes= 2)
|
||||
collection.update_one({'uuid': device['uuid']}, {"$set": { 'last_used': datetime.datetime.now(), 'automatic_movement': True, 'automatic_shutdown': auto_shutdown }})
|
||||
return {'status': 'success', 'message': actionData['message']}, 200
|
||||
|
||||
if data == "off":
|
||||
# Update Database
|
||||
collection.update_one({'uuid': device['uuid']}, {"$set": { 'last_used': datetime.datetime.now(), 'automatic_movement': False }})
|
||||
return {'status': 'success', 'message': actionData['message']}, 200
|
||||
|
||||
return {'status': 'failed', 'message': 'Setting not found!'}, 200
|
||||
|
||||
#Check if status is already the action
|
||||
if device['status'] == action:
|
||||
message = "Device is already in the requested state!"
|
||||
return {'status': 'failed', 'message': message}, 200
|
||||
|
||||
# Send Serial Command
|
||||
EchoSerial.EchoSerial.send_commmand(device, action)
|
||||
|
||||
# Update Database
|
||||
collection.update_one({'uuid': device['uuid']}, {"$set": { 'last_used': datetime.datetime.now(), 'status': action }})
|
||||
|
||||
return {'status': 'success', 'message': actionData['message']}, 200
|
||||
|
||||
|
||||
@staticmethod
|
||||
def handle_movement_switch():
|
||||
mainLightUUID = '9472-4f60'
|
||||
collection = EchoDB.EchoDB.database['Devices']
|
||||
|
||||
# Get Device (Main Light)
|
||||
mainLightDevice = collection.find_one({'uuid': mainLightUUID})
|
||||
|
||||
# Check if automatic movement mode of main light is enabled, else do nothing
|
||||
if mainLightDevice['automatic_movement'] == False:
|
||||
return
|
||||
|
||||
# Check if light levels are low enough to turn on light
|
||||
collectionLight = EchoDB.EchoDB.database['LightLog']
|
||||
data = collectionLight.find().sort([('timestamp', -1)]).limit(1)
|
||||
if data[0]['light_amount'] > 250:
|
||||
return;
|
||||
|
||||
# Light is already on, update automatic shutdown.
|
||||
if mainLightDevice['status'] == "on":
|
||||
now_time = datetime.datetime.now()
|
||||
auto_shutdown = now_time + datetime.timedelta(minutes= 2)
|
||||
collection.update_one({'uuid': mainLightUUID}, {"$set": { 'automatic_shutdown': auto_shutdown }})
|
||||
return
|
||||
|
||||
# Light is off, turn it on
|
||||
|
||||
# Send Serial Command
|
||||
EchoSerial.EchoSerial.send_commmand(mainLightDevice, "on")
|
||||
|
||||
# Auto shutdown time
|
||||
now_time = datetime.datetime.now()
|
||||
auto_shutdown = now_time + datetime.timedelta(minutes= 2)
|
||||
|
||||
# Update Database
|
||||
collection.update_one({'uuid': mainLightUUID}, {"$set": { 'last_used': datetime.datetime.now(), 'status': "on", 'automatic_shutdown': auto_shutdown }})
|
||||
|
||||
|
Reference in New Issue
Block a user