This report details the design and implementation of a system for storing data from various sensors on mobile devices. The goal is to collect as much information as possible to create a comprehensive dataset for training a Machine Learning model. The system was developed following REST principles to ensure efficient interaction between the software and the devices. To enhance system robustness, dedicated Unit Tests were implemented, improving the reliability and overall quality of the software.
Chapter 1 introduces the issue of traffic congestion and the challenges of finding parking in Italian cities, highlighting how these factors negatively impact urban life. The chapter presents GeneroCity, a mobile application that allows users to share real-time parking availability information through implicit interaction, leveraging sensors and technologies such as Bluetooth Low Energy (BLE) and Machine Learning.
Chapter 2 explores the project's architecture, dividing it into backend and frontend modules. It examines the data transfer protocols used, such as HTTP and HTTPS, and discusses the importance of REST APIs. Additionally, it describes the key technologies used in the GeneroCity stack, including GoLang and MariaDB.
Chapter 3 focuses on software testing, emphasizing the significance of unit testing in ensuring code quality and maintainability. The chapter examines tools such as GO-SQLMock and the creation of a MockFS system to facilitate testing.
Chapter 4 delves into the implementation of a data collection and management mechanism. It covers database design and the creation of endpoints for interacting with the collected data. Furthermore, it discusses the optimization of these endpoints to improve performance during data transmission.
Chapter 5 outlines minor contributions to the project, with particular attention to the GeneroCity BLE system and the collection of data related to Bluetooth devices in the user's vicinity.