1
0
Fork 0
A REST-API built with Flask and Python. Its main purpose is to receive the readings from the light meters welding booths in the Ritherdon factory and make them available for consumption by the relay-controllers in the gallery.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 
 

214 lines
6.9 KiB

from flask import make_response, abort
from config import db
from models.meters import (Meter1, Meter1Schema, Meter2, Meter2Schema,
Meter3, Meter3Schema)
from models.devices import (Device1, Device1Schema, Device2, Device2Schema,
Device3, Device3Schema, Device4, Device4Schema,
Device5, Device5Schema, Device6, Device6Schema)
'''
Get Services Note
======================================================================
The functions in this file are for retrieving data stored at the (this)
server. If you want to store any readings taken with the light meters
at Ritherdon, you will need to head to the /post_services.py/ file.
It should be in the same directory at this: /services/.
'''
bad_meter_id_message = "Meter Id. not recognised. Must be between 1 and 3."
bad_device_id_message = "Device Id. not recognised. Must be between 1 and 6."
def get_latest_reading(meter):
if meter == 1:
return get_m1_latest()
elif meter == 2:
return get_m2_latest()
elif meter == 3:
return get_m3_latest()
return make_response(bad_meter_id_message, 400)
def get_all_readings_from_table(name):
if name == 1:
return get_all_readings_for_meter1()
elif name == 2:
return get_all_readings_for_meter2()
elif name == 3:
return get_all_readings_for_meter3()
return make_response(bad_meter_id_message, 400)
def get_all_readings_from_database():
return get_all_readings()
def get_latest_status(device):
if device == 1:
return get_d1_latest()
elif device == 2:
return get_d2_latest()
elif device == 3:
return get_d3_latest()
elif device == 4:
return get_d4_latest()
elif device == 5:
return get_d5_latest()
elif device == 6:
return get_d6_latest()
return make_response(bad_device_id_message, 400)
def get_all_status_logs_from_table(device):
if device == 1:
return get_all_status_logs_for_d1()
elif device == 2:
return get_all_status_logs_for_d2()
elif device == 3:
return get_all_status_logs_for_d3()
elif device == 4:
return get_all_status_logs_for_d4()
elif device == 5:
return get_all_status_logs_for_d5()
elif device == 6:
return get_all_status_logs_for_d6()
return make_response(bad_device_id_message, 400)
def get_all_status_changes_from_database():
return get_all_status_logs()
def get_latest_status_for_all_devices():
return get_all_latest_logs()
'''
The Nitty-Gritty Functions
======================================================================
The functions below are the main functions within this file. The files
above act as "header functions" to be called by the functions in /api.py/.
I find it easier to see what the method names are when this file and
/api.py/ are open side-by-side. At the very least it reduces the amount
I need to scroll up and down the file to find what I am after.
'''
def get_m1_latest():
reading = Meter1.query.order_by(Meter1.id.desc()).first()
meter_schema = Meter1Schema()
return meter_schema.dump(reading)
def get_m2_latest():
reading = Meter2.query.order_by(Meter2.id.desc()).first()
meter_schema = Meter2Schema()
return meter_schema.dump(reading)
def get_m3_latest():
reading = Meter3.query.order_by(Meter3.id.desc()).first()
meter_schema = Meter3Schema()
return meter_schema.dump(reading)
def get_all_readings_for_meter1():
readings = Meter1.query.order_by(Meter1.id.desc()).all()
schema = Meter1Schema(many=True)
data = schema.dump(readings)
return data
def get_all_readings_for_meter2():
readings = Meter2.query.order_by(Meter2.id.desc()).all()
schema = Meter2Schema(many=True)
data = schema.dump(readings)
return data
def get_all_readings_for_meter3():
readings = Meter3.query.order_by(Meter3.id.desc()).all()
schema = Meter3Schema(many=True)
data = schema.dump(readings)
return data
def get_all_readings():
m1 = get_all_readings_for_meter1()
m2 = get_all_readings_for_meter2()
m3 = get_all_readings_for_meter3()
readings = {"meter1": m1, "meter2": m2, "meter3": m3}
return readings
def get_d1_latest():
status = Device1.query.order_by(Device1.id.desc()).first()
device_schema = Device1Schema()
return device_schema.dump(status)
def get_d2_latest():
status = Device2.query.order_by(Device2.id.desc()).first()
device_schema = Device2Schema()
return device_schema.dump(status)
def get_d3_latest():
status = Device3.query.order_by(Device3.id.desc()).first()
device_schema = Device3Schema()
return device_schema.dump(status)
def get_d4_latest():
status = Device4.query.order_by(Device4.id.desc()).first()
device_schema = Device4Schema()
return device_schema.dump(status)
def get_d5_latest():
status = Device5.query.order_by(Device5.id.desc()).first()
device_schema = Device5Schema()
return device_schema.dump(status)
def get_d6_latest():
status = Device6.query.order_by(Device6.id.desc()).first()
device_schema = Device6Schema()
return device_schema.dump(status)
def get_all_status_logs_for_d1():
status_logs = Device1.query.order_by(Device1.id.desc()).all()
schema = Device1Schema(many=True)
data = schema.dump(status_logs)
return data
def get_all_status_logs_for_d2():
status_logs = Device2.query.order_by(Device2.id.desc()).all()
schema = Device2Schema(many=True)
data = schema.dump(status_logs)
return data
def get_all_status_logs_for_d3():
status_logs = Device3.query.order_by(Device3.id.desc()).all()
schema = Device3Schema(many=True)
data = schema.dump(status_logs)
return data
def get_all_status_logs_for_d4():
status_logs = Device4.query.order_by(Device4.id.desc()).all()
schema = Device4Schema(many=True)
data = schema.dump(status_logs)
return data
def get_all_status_logs_for_d5():
status_logs = Device5.query.order_by(Device5.id.desc()).all()
schema = Device5Schema(many=True)
data = schema.dump(status_logs)
return data
def get_all_status_logs_for_d6():
status_logs = Device6.query.order_by(Device6.id.desc()).all()
schema = Device6Schema(many=True)
data = schema.dump(status_logs)
return data
def get_all_status_changes_from_database():
d1 = get_all_status_logs_for_d1()
d2 = get_all_status_logs_for_d2()
d3 = get_all_status_logs_for_d3()
d4 = get_all_status_logs_for_d4()
d5 = get_all_status_logs_for_d5()
d6 = get_all_status_logs_for_d6()
logs = {"device 1": d1, "device 2": d2, "device 3": d3,
"device 4": d4, "device 5": d5, "device 6": d6}
return logs
def get_all_latest_logs():
d1 = get_d1_latest()
d2 = get_d2_latest()
d3 = get_d3_latest()
d4 = get_d4_latest()
d5 = get_d5_latest()
d6 = get_d6_latest()
logs = {"device 1": d1, "device 2": d2, "device 3": d3,
"device 4": d4, "device 5": d5, "device 6": d6}
return logs