Many people face difficulty in managing their tasks properly. Even with multiple reminders, they tend to miss out on important deadlines. Lack of attention due to various factors is one major cause of this. Another issue is that people lose focus while working due to small attention spans. All this leads to stress, confusion and other problems that stem from mismanagement. Bearing this in mind, the idea of a smart assistant was initiated to help people stay focused, manage their tasks, and finish work on time.
Ingredients used in the ideaSmart home devices have been flooding the market since the advent of IoT and enhanced connectivity standards. Various market players have developed ecosystems that have gained significant popularity and traction. But the catch? These ecosystems don't work with each other!
Recent advancements with the efforts of companies such as Nordic Semiconductor, Google, Amazon, etc., along with the connectivity standards alliance, have brought in the era of seamless interoperability through a protocol called matter.
Using matter, one can bridge ecosystems, devices, existing network topologies, and pretty much every supported communication device. To build for matter, we use Nordic Semiconductor's nRF7002 DK.
Apart from this hardware, a PC running Linux would be required with VS Code, nRF Connect SDK and Python installed. Python also requires installing pandas and flet library. Instructions are mentioned below.
Installation of the softwareThis link contains instructions on installing and setting up the nRF Connect SDK and Visual Studio Code. Perform the above task with all the default options ONLY. To install Python, follow the instructions mentioned here. Ensure that Python and pip are available on the path.
Once the above setup is done, run the following command on the command line to install pandas and flet.
pip install flet pandas
Basic structure of the ideaThe idea consists of a GUI, a scheduling algorithm, and a Matter topology (network of devices).
The GUI serves as the interface between the user and the assistant. The user feeds in details of the tasks in a prescribed format, which becomes the user's schedule for the day. The scheduling algorithm works whenever tasks need to be interchanged on the fly (mostly when tasks get delayed or completed early). The matter topology helps the user stay updated about the schedule and current status. An overview of the idea is shown in the schematic section.
The further expansion also includes reminding the user to stay focused whenever the user randomly sways away from the task. The assistant also keeps track of the user's work hours and rest to ensure that the user maintains a positive work-life balance while meeting deadlines.
ImplementationThe implementation got quite complicated as many new technologies were involved. I had to revisit GUI development, learn how to interface the hardware and understand a lot of code. A bare minimum implementation has been submitted for the Make it matter! competition but this project will evolve further.
Initially, I started working on a Flutter-based codebase as I saw that it was capable of interacting with matter topologies. But later on, I switched to Python and Flet for GUI as I was more accustomed to Python. Flet is a Python binding for Flutter that lets you develop a GUI quickly. The GUI is largely based on the ToDO tutorial on the flet website.
The GUI:
The GUI was built using flet. It displays today's tasks to the user. Initially, the code was written such that the GUI fetches the schedule from an Excel sheet due to technical constraints. Adding more interactivity was causing the code to crash without errors. An Excel sheet named template.xlsx
is present in the Schedules
folder. The user has to make a copy of this template and fill in details about the tasks as shown below. The schedule for a particular date must be named in "MM-DD-YY" format, as shown below.
The code assumes one-hour intervals starting from 09:00 and ending at 18:00 for a day's schedule.
To run the GUI, navigate to submission/GUI in the GitHub repository and run the following command. (Ensure that the above setup is done correctly).
flet run simple_todo_gui.py
Note: Make sure that the directory and template structures remain as they are.
The short video below shows how the GUI works.
Conclusion and future scopeThe above is my submission to make it matter! I hope I made it matter. Future scope is:
- Better GUI
- Implementation with a smart home device such as Amazon Echo
- Voice commands and Talkback
Comments