import datetime import time import sys import echo_serial.serial_controller as EchoSerial import echo_db.database as EchoDB import _thread class LEDStrip: @staticmethod def handle_action(device, action, data): actionData = device['actions'][action] collection = EchoDB.EchoDB.database['Devices'] # Check if we send action too fast after last issued action actionNow = datetime.datetime.now() actionLast = device['last_used'] lastIssued = (actionNow - actionLast).total_seconds() # if lastIssued < 2.0: # return {'status': 'failed', 'message': 'Issued action too fast after last issued action!'}, 200 # Check if a thread is using the blinds, if so return. if device['status'] == "busy": return {'status': 'failed', 'message': 'LED Strip is being controlled by Echo, Please wait till finished.'}, 200 # Stop blinds if we are moving if action == "off": EchoSerial.EchoSerial.send_commmand(device, 'clear_color') # Update Database collection.update_one({'uuid': device['uuid']}, { "$set": { 'last_used': datetime.datetime.now(), "status": action }}) return {'status': 'success', 'message': actionData['message']}, 200 if action == "on": EchoSerial.EchoSerial.send_commmand(device, 'set_color', device['current_color']) # Update Database collection.update_one({'uuid': device['uuid']}, { "$set": { 'last_used': datetime.datetime.now(), "status": action }}) return {'status': 'success', 'message': actionData['message']}, 200 if action == "set_color": EchoSerial.EchoSerial.send_commmand(device, 'set_color', data) # Update Database collection.update_one({'uuid': device['uuid']}, { "$set": { 'last_used': datetime.datetime.now(), "current_color": data, "status": "on" }}) return {'status': 'success', 'message': actionData['message']}, 200 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 @staticmethod def handle_data(device, action, data): pass