This project was the final project for my Software Engineering class (CS 349) at Denison University. This was a group project, my group consisted of:
Developers: Colin Smith, Emma Steinman, Matthew Rinker
Here is the link to my github repository which contains the source code for the water meter project.
Here is the link to the github repository which contains the source code for the rest of the project.
For this project we were given project descriptions from several clients from outside the university and within its various departments. We then gave pitches to each client and were ultimately selected by the Office of Sustainability at Denison. We were tasked with creating a reporting framework for information from the office of sustainability about utility consumption on campus. We originally planned to access live data feeds from the smart electric meters installed in all campus buildings and connect this with a database hosted by the university's ITS department. We also planned to create a react frontend for our datafeeds and to supplement it with an Arduino powered water meter.
Unfortunately, due to the Covid-19 pandemic our group ended up losing 2 members and lost access to campus resources due to being off campus for the remainder of the semester. Due to this, we had to restructure our approach and abandon some elements. Due to the Office of Sustainability already making a financial investment into the Water Meter Prototype I was assigned this portion of the project. Additionally, we switched to a google Firebase database and eliminated the elements concerning live data feeds from the smart electric meters. We replaced this element with google form entry of monthly bills.
In total, I was in charge of development of the Water Meter Prototype, the database, and data stream integration. This was due to the fact that the data would ultimately have to go from the Arduinos somewhere so it only made sense for me to be the most knowledgeable of how this works. The water meter itself used an analog hal effect sensor to detect the movement of the magnetic measurement wheel inside the water company's meter (the university was denied access to resources from the company to read the data from the meters). This data was then collected and intermittently sent to a free online service which would automatically submit a google form. This would then populate a google sheets which would intermittently be scraped and inserted into the firebase database through the google scripting interface.
Ultimately, we were unable to connect our database to the react frontend due to quirks of the API we chose and the NOSQL database. However, I am confident that given more time or with different world circumstances we would have been able to rework the frontend to use that database or to setup a new database with the support of our university's ITS Department.