Inspiration
The Covid-19 pandemic has hit the world by storm. To date, the virus has killed over 1.25M people. Governments around the world have implemented contact tracing measures such as Alberta’s ABTraceTogether app. However, for institutions such as universities, there are no apps/programs to keep track of contact tracing. That’s why we created a program to keep track of contact tracing, specifically for university campuses.
What it does
Contact Tracing aims to keep track of close contact encounters with individuals and notify individuals if they have been in contact with someone who has tested positive. It relies on wifi and Bluetooth which students always have on university campuses.
How we built it
We divided the program into four sections: GUI, geolocation API, BLE scanner and the database. The database contains two tables. The first table contains users and a boolean to see if they have covid or not. The second table contains every instance where two people were less than six feet from each other, including the location and time. Therefore, every time the BLE scanner encounters another Bluetooth device within six feet (about -70 dBm RSSI), the scanner calls the geolocation api and sends all of the data to the database. The GUI allows users to update their covid status and see if anybody they’ve been in contact with has been tested positive.
Challenges we ran into
We all had little to no experience with python GUIs. So we were forced to crunch and learn how to create a clean GUI that could interact with the database. Learning how to use git was also a challenge for some of us. Learning git introduced new challenges such as merge conflicts nearly deleted important pieces of code. Learning how to host an SQL server and learning how to use the libraries associated with interacting with the database was time-consuming. Bluetooth was kind of a pain. The existing Python libraries for Bluetooth aren’t able to poll RSSI values from devices that aren’t paired with the host device. As such, we used the “bluetoothctl” Linux utility which does exactly that. The Bluetooth scanner works by opening an asynchronous subprocess that calls the bluetoothctl scanner, reading from the standard output of that subprocess in another thread, and transferring the RSSI data to an output buffer queue. All of this is pretty dumb and probably should not have been as hard as it was.
Accomplishments that we're proud of
Despite the challenges of interacting with databases and Bluetooth signals, we still managed to complete the project within 24 hours. We worked out of our comfort zones and used libraries we’ve never dealt with before. We faced new challenges, learnt new things, met new people as we worked together through a sleepless night to complete this project.
What we learned
How to use git and work on projects in groups. How to use tkinter and get it to interact with databases. Hosting SQL servers and communicating with the database. Interacting with Bluetooth signals and running its data into a database.
What's next for Contact Tracing
Mass adoption, Make it convenient to use, Plug and play type of thing, Don’t have to look at it, automatically alerts, More localized applications, Mass adoption in smaller communities (like a university for example) is far easier than mass adoption for an entire country or province, are all possibilities for the future of Contact Tracing
Log in or sign up for Devpost to join the conversation.