Caution: This Project is mostly Software and not Hardware
Every Student knows the drill: New Semester, new Subjects, new Professors. Here we go again. Are you tired of having a WhatsApp group for every Semester/Lecture? But you still want to know if the lecture is cancelled? Or if someone has old exams? Fear no more! We have a intuitive easy-to-use solution!
At the moment every University uses different learning management system, like Ilias or Moodle. That's nice for downloading PDFs and other lecture documents, but when I wake up in the morning I just want to know 3 things:
- What lectures do I have today?
- When are these lectures?
- Where are these lectures?
I don't want to open the browser, log-in and go to my lesson plan. I want to see it with one click! That's what we provide a easy to use App.
We will make an App! The app shall handle several lectures, have at least space to up to 300 users, options for file sharing, and a nice GUI. And we need a centralized way to manage all the lectures. While were at it let's invite the students automatically via Bluetooth! Hm sounds complicated, let's do it!
To solve the requirements we had to solve several problems:
- How do we keep the management of these groups as simple as possible?
- How do we make the usage of this app intuitive?
- On what platform are the students going to communicate?
To tackle the first to problems we created a Server-Client-iBeacon Architecture.
Now to the app! Well making a sophisticated app is difficult, so we settled for Slack. Slack gives us a nice API to use, now we don't need to make our own app! Or do we? For receiving Slack invitations automatically, we need a way to know when the user is attending what lecture. We can do that by installing a iBeacon transmitter to a lecture room, the iBeacon signal(BLE) contains 3 Fields:
- MajorID - which University
- MinorID - which specific Room
- UUID - which our app uses to only detect our beacons
iBeacon beacon(1, 2, "9c1b8bdc-5548-4e32-8a78-b9f524131206", -55); // major,minor,UUID
BLE.advertise(beacon); // particle argon code
Now we do need an App to receive and parse these signals. We made a simple app to get the Major and Minor numbers. But what do we do with that information? We need a database to look up who is using that room for what lecture. Should we do that all in the app? Hell no we need a server... and a database! Let's start with the fun part shall we? The database modelling, well it's fun for some people... right?
So, now we can store when a lecture is, where is, who participates and what slack channel the lecture is using. "But we dont know what lectures there are and when they are hold!", you might say. And right you are, we need to get that data into our database. Naturally we made a script to fetch the lecture data, which is publically availlable.
We've talked about the app, database and the iBeacon. The last thing we need is the server to manage our system. Since our app is thin, our server needs to compensate the lack of work our app is doing. By being the almighty managing brain of our system.
For that purpose we used a nodejs server to:
- Fetch the lecture and room data
- Creating Slack channel
- Distribute the data
- Tell unwanted requests to bugger off ( authorization)
The API endpoints are listed in the ApiDefinition.xlsx sheet.
After the installation of the App, the user does not need to do anything else. If he visits a lecture he can enter the slack channel by accepting the invitation. When a lecture starts, the user will be automatically informed if he is not in the room. All the pesky little things are automated, and all important informations are only one click away!
This project was created in context of the lecture “Internet of Things Ecosystems” at the University of Applied Science Esslingen. It covers the invention of an own IoT Idea and Application from the scratch solving a real-world problem. In the design sprints the students learn about design, implementation (full-stack) and business aspects of Internet of Things applications. The aim of this project is to provide a Platform for Students and Professors to communicate.
Contact: David Le Duy / Gabriel Goldschmitt
Lecture and IoTPF:
University of applied Sciences Esslingen 2020