# Return to Ritherdon: Midpoint Midpoint is one of three smaller projects which make-up 'Personal Flash in Real-Time' -- which is one artwork within the main 'Return to Ritherdon' project. You should view the three smaller projects as one project. And, for the purpose of this documentation, I will refer to 'Personal Flash in Real-Time' as a system instead of an artwork. For more information on the 'Return to Ritherdon' project, use the following link: - [Return to Ritherdon Overview](https://git.abbether.net/return-to-ritherdon/rtr-docs) ## 'Personal Flash in Real-Time': Project Overview The overall system ('Personal Flash in Real-Time') consists of three separate/smaller projects. You should not view them as individual pieces within the overall project. From an artwork point-of-view, 'Personal Flash in Real-Time' is one piece. The name of the software projects are 'Light Meter' (which is this one), 'Midpoint' and 'Relay'. All three projects reside in their own git repositories. You can find the repositories at the following links: - [Light Meter](https://git.abbether.net/return-to-ritherdon/light-meter) - [Mid-Point](https://git.abbether.net/return-to-ritherdon/midpoint) - [Relay](https://git.abbether.net/return-to-ritherdon/relay) The (technical) aim of the project is to turn a set of lights on at the gallery when the welding machines are active in the welding booths at Ritherdon. The solution we arrived at was a three-stage process. The stages are as follows: 1. Monitor the light levels in the welding booths at Ritherdon and send that information to a sever (Light Meter). 2. Receive the light readings and store them in a database and make them available for others to access (Midpoint). 3. Have the lights installed at the gallery connected to wi-fi enabled relays which request the latest light readings from the server. If the readings are above a certain threshold, have the light in the gallery turn on (otherwise, turn off). The relays are responsible for turning the lights on and off (Relay). Each step should require no human intervention. For more information on how each project accomplishes its task, please use the (repo.) links above. Otherwise, here is an diagram to help explain the three stages mentioned above. ![Main Project Architecture](attachments/main-proj-architecture.png) ## Hardware Specifications There are no specific hardware requirements. If you can get an machine to run a server (E.G. Nginx or Apache), you should be good to go. Unfortunately, the scope of the project meant the amount of support for hardware and software is limited to an x86 Linux based machine running Nginx. I decided to run a virtual machine on Amazon Web Services. - [Amazon Web Services](https://aws.amazon.com/) ## Software Requirements I have set-up the server to run on Linux (I.E. Ubuntu) with an Nginx server -- on an x86 machine. Any other variation on that (I.E. Windows), you will be on your own. The reason why is because I have not tested it. How you acquire the hardware is up to you. For the intents of the project, I used a virtual machine on Amazon Web Services. Links for various parts of the set-up are below: - [https://ubuntu.com/](https://ubuntu.com/) - [Nginx](https://www.nginx.com/) - [Python Flask](https://flask.palletsprojects.com/en/2.0.x/) - [SQLite Database](https://sqlite.org/index.html) - [Swagger REST API](https://swagger.io/)