Have you ever needed to get a quick lunch between lectures or seminars, but ended up in a never-ending queue in the school canteen? We had the idea to make something that could help alleviate this problem.
What it does
ChalujTU gathers various sensor data to measure the current activity in a school canteen and evaluate how full it is. Using this data, it shows the user how full the canteen is in a simple modern UI, where the user can also view canteen details for the history of the canteen's activity over time and the current temperature.
How we built it
The front-end was built using React to create the web and mobile version of ChalujTU, as well as the kiosk.
We opted to use state of the art Azure integrations. The sensor hardware is built using the popular Espressif chipset ESP32 development board, enclosed in a small neat enclosure with its sensors (Microphone, DHT11, MQ135) and runs MicroPython.
The whole communication is based on Azure IoT central stack, that provides a whole system to manage, deploy and maintain all the connected IoT endpoint nodes/sensors, as well as handling all the data processing, storing and visualizing. From there, the stored data, is accessed by data ingestion and processing worker built in .Net running in isolated container in private azure environment. The data is being transferred to Cosmos NoSQL DB. This data is being accessed by the container running our API hub with SignalR implementation that delivers the data for our website, built in React.
Challenges we ran into
Azure (yes, really).
We experienced all kinds of problems in different fields. We had some issues with obtaining a proper microphone sensor that contains a good-quality preamplifier to get the desired sound resolution for measuring slight changes in noise floor.
In process of writing MicroPython code, we had to find a way to make the code reliably measure telemetry values, pre-process them, send them and exchange configuration data at the same time, without any hiccups or corruption when synchronizing new device settings with the cloud. On the dev-ops side we had to overcome all kinds of problems while trying to get all the necessary docker images to run on Azure, partly because we had to use an external docker image repository since the TUKE GitLab one requires a VPN tunnel.
Accomplishments that we're proud of
We wanted to have a very secure practical application of security in our IoT project, we accomplished that by using the really secure Azure IoT-Central implementation.
We are very proud of such a complex architecture we managed to create. From the begining, we have decided that we will minimalize all mocking and faking in the project, moreover fully remove them.
Ultimately, we created a fully working, secure, production ready system from all its aspects. And the best of all is, that there is absolutelly no mocks involved.
What we learned
We learned to plan ahead, not to redo stuff we have already made the other way. Also we have gained experience with automatically building and deploying containers and using all kinds of advanced Azure services. On the front-end side we have improved our ability to use all kinds of libraries for React. Additionally, we managed to code services independently in different programming languages, which of course also gave us new knowledge.
What's next for ChalujTU
- If our idea and concept proves to be working, and someone would want us to take it one step forward, we would be ready to help. Sensor nodes would not be dissasembled, as a local high school in Bardejov, where the device was tested, has already shown interest in having such system deployed in production.
- Getting real daily canteen menu data from websites that provide them, as well as making the activity calculation in a school canteen more accurate.