La SmartLocAI DataService API è un servizio backend sviluppato con Flask che gestisce la raccolta, l'archiviazione e la gestione dei dati RSSI (Received Signal Strength Indicator) utilizzati per la localizzazione indoor. I dati raccolti vengono memorizzati in MongoDB, e il servizio fornisce funzionalità per il caricamento, la modifica, la cancellazione e la visualizzazione dei dati. Questo API è anche responsabile del versionamento dei dati raccolti e gestisce informazioni di storicizzazione per garantire la tracciabilità dei punti di riferimento utilizzati per l'addestramento dei modelli di machine learning.
Il DataService API fa parte dell'architettura modulare di SmartLocAI ed è uno dei componenti centrali per la gestione e il preprocessing dei dati RSSI utilizzati per addestrare i modelli K-Means e KNN.
- Raccolta dei dati: L'app mobile raccoglie i dati RSSI e li invia al DataService API.
- Archiviazione: Il DataService verifica i dati ricevuti e li memorizza nel database MongoDB. Se i dati esistono già, vengono aggiornati e aggregati.
- Preprocessing: I dati raccolti possono essere visualizzati, aggiornati o eliminati tramite richieste POST, GET, PUT e DELETE.
- Utilizzo per addestramento: I dati vengono successivamente utilizzati dalla Preprocessing Dashboard per addestrare i modelli di machine learning.
- Preprocessing Dashboard: Link al repository
- LocalizationService API: Link al repository
- SmartLocAI App: Link al repository
-
POST /data: Aggiunge nuovi dati RSSI o aggiorna i dati esistenti.
- Esempio di request:
{ "x": 10, "y": 20, "data": [{"rssiA": -70, "rssiB": -65}], "date": "2024-01-01" } - Risposta:
201 Createdse il documento è stato creato,200 OKse è stato aggiornato.
- Esempio di request:
-
GET /data: Restituisce tutti i dati RSSI archiviati.
- Risposta:
200 OKcon tutti i dati, o404 Not Foundse non sono presenti dati.
- Risposta:
-
DELETE /data: Elimina un documento specifico in base all'ID.
- Esempio di request:
{ "id": "60b9e7b2f1e1463d7b3d492b" } - Risposta:
200 OKse il documento è stato rimosso,404 Not Foundse non esiste.
- Esempio di request:
-
PUT /data: Aggiorna un documento specifico in base all'ID.
- Esempio di request:
{ "id": "60b9e7b2f1e1463d7b3d492b", "x": 15, "y": 25, "data": [{"rssiA": -68, "rssiB": -60}], "date": "2024-01-02" } - Risposta:
200 OKse il documento è stato aggiornato.
- Esempio di request:
-
POST /data/test: Aggiunge dati di test utilizzati per verificare il modello.
- Esempio di request:
{ "RP": "Reference Point 1", "data": [{"rssiA": -72, "rssiB": -66}] } - Risposta:
201 Created.
- Esempio di request:
-
GET /data/test: Restituisce tutti i dati di test.
- GET /data/space/coordinates: Restituisce la cronologia di tutte le coppie di coordinate (x, y).
-
POST /data/ssid: Aggiunge o aggiorna informazioni SSID.
- Esempio di request:
{ "ssid": "SSID123", "type": "A" } - Risposta:
201 Created.
- Esempio di request:
-
DELETE /data/ssid: Elimina un SSID specifico.
- Esempio di request:
{ "ssid": "SSID123" } - Risposta:
200 OKse l'SSID è stato eliminato.
- Esempio di request:
-
GET /data/ssid: Restituisce tutti gli SSID memorizzati.
- Clona il repository:
git clone https://github.com/link-dataservice-api.git
- Variabili d'ambiente:
- DATABASE_URL=mongodb://db:27017/database - DATABASE=database - JWT_SECRET=****** - USERNAME=******* - PASSWORD=*******
- Docker compose
docker compose up -d
Tutti gli endpoint che gestiscono dati (POST, PUT, DELETE) richiedono l'autenticazione tramite JWT (JSON Web Token). Per ottenere un token JWT, è necessario autenticarsi tramite l'API di login, e includere il token nelle intestazioni di tutte le richieste protette.