mirror of
https://github.com/supleed2/ELEC60013-ES-CW1.git
synced 2024-11-10 01:35:50 +00:00
Added endpoint for metric summary
This commit is contained in:
parent
78ac68cb2d
commit
9851513288
37
api/data.py
37
api/data.py
|
@ -18,7 +18,7 @@ def uploadReadings():
|
|||
if body is None:
|
||||
resp = {'error': 'Invalid request - please provide a body'}
|
||||
return Response(json.dumps(resp), status=400, mimetype='application/json')
|
||||
body['timestamp'] = time.time()
|
||||
body['timestamp'] = datetime.now().timestamp()
|
||||
|
||||
# Save all the measurements
|
||||
doc = firestore.client().collection(u'readings').document(deviceId).get()
|
||||
|
@ -119,3 +119,38 @@ def getStepsLastFiveDays():
|
|||
results = {'daily_steps': listOfDailySteps}
|
||||
return Response(json.dumps(results), status=200, mimetype='application/json')
|
||||
|
||||
@data.route('/readings/metrics-summary', methods=['GET'])
|
||||
def getMetricsSummary():
|
||||
deviceId = request.headers.get('deviceid')
|
||||
if deviceId is None:
|
||||
resp = {'error': 'Device not specified'}
|
||||
return Response(json.dumps(resp), status=400, mimetype='application/json')
|
||||
|
||||
upcomingMidnight = datetime.combine(datetime.today(), time.min) #+ timedelta(days=1)
|
||||
lastMidnight = datetime.combine(datetime.today(), time.min) - timedelta(days=1)
|
||||
doc = firestore.client().collection(u'readings').document(deviceId).get()
|
||||
|
||||
if doc.exists:
|
||||
allData = doc.to_dict()['data']
|
||||
currentDayData = [x for x in allData if x['timestamp'] <= upcomingMidnight.timestamp() and x['timestamp'] >= lastMidnight.timestamp()]
|
||||
if len(currentDayData) >= 1:
|
||||
maxAirTemp = max(currentDayData, key=lambda x: x['air_temp'])['air_temp']
|
||||
maxSkinTemp = max(currentDayData, key=lambda x: x['skin_temp'])['skin_temp']
|
||||
maxHumidity = max(currentDayData, key=lambda x: x['humidity'])['humidity']
|
||||
minAirTemp = min(currentDayData, key=lambda x: x['air_temp'])['air_temp']
|
||||
minSkinTemp = min(currentDayData, key=lambda x: x['skin_temp'])['skin_temp']
|
||||
minHumidity = min(currentDayData, key=lambda x: x['humidity'])['humidity']
|
||||
results = {
|
||||
'last_air_temp': currentDayData[-1]['air_temp'], 'min_air_temp': minAirTemp, 'max_air_temp': maxAirTemp,
|
||||
'last_skin_temp': currentDayData[-1]['skin_temp'], 'min_skin_temp': minSkinTemp, 'max_skin_temp': maxSkinTemp,
|
||||
'last_humidity': currentDayData[-1]['humidity'], 'min_humidity': minHumidity, 'max_humidity': maxHumidity
|
||||
}
|
||||
return Response(json.dumps(results), status=200, mimetype='application/json')
|
||||
else:
|
||||
return Response(json.dumps({'error': 'Could not get data from database'}), status=500, mimetype='application/json')
|
||||
else:
|
||||
return Response(json.dumps({'error': 'Could not get data from database'}), status=500, mimetype='application/json')
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue