108 lines
3.4 KiB
Python
108 lines
3.4 KiB
Python
import datetime
|
|
import echo_serial.serial_controller as EchoSerial
|
|
import echo_db.database as EchoDB
|
|
from bson import json_util, ObjectId
|
|
import json
|
|
|
|
import echo_controller.switch as Switch
|
|
import echo_controller.led_strip as LedStrip
|
|
|
|
class Sensor:
|
|
|
|
@staticmethod
|
|
def handle_action(device, action, data):
|
|
actionData = device['actions'][action]
|
|
|
|
#
|
|
# Climate Sensors
|
|
#
|
|
|
|
if action == "gather_climate_data":
|
|
EchoSerial.EchoSerial.send_commmand(device, action)
|
|
return {'status': 'success', 'message': actionData['message']}, 200
|
|
|
|
if action == "get_climate_data":
|
|
collection = EchoDB.EchoDB.database['ClimateLogss']
|
|
data = collection.find().sort([('timestamp', -1)]).limit(1)
|
|
data_json = json.loads(json_util.dumps(data))
|
|
return {'status': 'success', 'message': actionData['message'], 'data': data_json}, 200
|
|
|
|
#
|
|
# Light Sensors
|
|
#
|
|
|
|
if action == "gather_light_data":
|
|
EchoSerial.EchoSerial.send_commmand(device, action)
|
|
return {'status': 'success', 'message': actionData['message']}, 200
|
|
|
|
if action == "get_light_data":
|
|
collection = EchoDB.EchoDB.database['LightLogs']
|
|
data = collection.find().sort([('timestamp', -1)]).limit(1)
|
|
data_json = json.loads(json_util.dumps(data))
|
|
return {'status': 'success', 'message': actionData['message'], 'data': data_json}, 200
|
|
|
|
#
|
|
# Movement Sensors
|
|
#
|
|
|
|
if action == "get_movment_data":
|
|
collection = EchoDB.EchoDB.database['MovementLog']
|
|
data = collection.find().sort([('timestamp', -1)]).limit(20)
|
|
data_json = json.loads(json_util.dumps(data))
|
|
return {'status': 'success', 'message': actionData['message'], 'data': data_json}, 200
|
|
|
|
@staticmethod
|
|
def handle_data(device, action, data):
|
|
#
|
|
# Climate Sensors
|
|
#
|
|
|
|
if action == 'climate_data':
|
|
collection = EchoDB.EchoDB.database['ClimateLogss']
|
|
climate_data = data[2].split(',')
|
|
|
|
logData = {
|
|
'uuid': device['uuid'],
|
|
'temperature': float(climate_data[0]),
|
|
'humidity': float(climate_data[1]),
|
|
'timestamp': datetime.datetime.now()
|
|
}
|
|
|
|
collection.insert(logData)
|
|
|
|
#
|
|
# Light Sensors
|
|
#
|
|
|
|
if action == 'light_data':
|
|
collection = EchoDB.EchoDB.database['LightLogs']
|
|
lightAmount = data[2]
|
|
|
|
logData = {
|
|
'uuid': device['uuid'],
|
|
'light_amount': int(lightAmount),
|
|
'timestamp': datetime.datetime.now()
|
|
}
|
|
|
|
collection.insert(logData)
|
|
|
|
#
|
|
# Movement Sensors
|
|
#
|
|
|
|
if action == 'movement_data':
|
|
collection = EchoDB.EchoDB.database['MovementLog']
|
|
typeMovement = data[2]
|
|
|
|
logData = {
|
|
'uuid': device['uuid'],
|
|
'type_movement': typeMovement,
|
|
'timestamp': datetime.datetime.now()
|
|
}
|
|
|
|
collection.insert(logData)
|
|
|
|
# Handle Automatic Lights
|
|
Switch.Switch.handle_movement_switch()
|
|
LedStrip.LEDStrip.handle_movement_led()
|