Si sviuppi un'applicativo che permetta lo scambio di dati tra sensori (client) e un server.
Si richiede inoltre, che la comunicazione tra i dispositivi, avvenga tramite l'utilizzo di diversi protocolli, riusciendo ad adattare il codice nel migliore dei modi.
-
Creazione sensori virtuali
- Sensore di batteria
- Sensore di velocità
- Sensore di posizione
- Sensore di stato
-
Invio delle rilevazioni al server
- Ricezione ed invio di dati
- Gestione dati con salvataggio nel database
Formato JSON
Nome variabile | Tipo variabile |
---|---|
SensorId | int |
ScooterId | int |
SensorValue | string |
SensorType | string |
SensorDetectionDate | DateTime |
Formato JSON
Nome variabile | Tipo variabile |
---|---|
ScooterId | int |
Brand | string |
Company | string |
Formato JSON
Nome variabile | Tipo variabile |
---|---|
SensorId | int |
SensorType | string |
SensorMesurementUnit | string |
Formato JSON
Nome variabile | Tipo variabile |
---|---|
StatusCode | int |
Message | string |
- Il server utilizza il subscribe al topic scooter/#
- Il client utilizza il publish al topic scooter/ScooterId/SensorId/SensorType
BODY Messaggio
Nome variabile | Tipo variabile |
---|---|
SensorValue | string |
SensorDetectionDate | DateTime |
- Il server utilizza il publish al topic scooter/ScooterId/SensorId/SensorType
- Il client utilizza il subscribe al topic sensor/SensorId/status
BODY Messaggio
Nome variabile | Tipo variabile |
---|---|
Status | bool |
- Server → publish su topic sensor/1/status
- Client → subscribe su topic sensor/1/status
NOTE:
Tramite questa funzionalità è possibile andare ad attivare/disattivare un determinato sensore.
- Ogni sensore invia i dati ad una coda
Redis
accessibile a tutti i sensori presenti nel monopattino - Un ulteriore processo (producer) va a controllare se nella coda sono presenti messaggi
- Nel caso in cui ci siano dei messaggi nella coda viene stabilita una connessione al broker AMQP e vengono inviati i dati all'exchanger
- L'exchanger, impostato in modo da filtrare i messaggi attraverso la
routeKey
, inserisce il messaggio in una determinata coda - Il server (consumer) va a leggere i dati da una determinata coda, salvandoli successivamente nel DB
BODY Messaggio
Nome variabile | Tipo variabile |
---|---|
SensorId | int |
ScooterId | int |
SensorValue | string |
SensorType | string |
SensorDetectionDate | DateTime |
Sono state create 4 code:
- Battery_Sensor → coda che contiene tutte le rilevazioni del sensore della batteria
- Speed_Sensor → coda che contiene tutte le rilevazioni del sensore della velocità
- Movement_Sensor → coda che contiene tutte le rilevazioni del sensore del movimento
- Position_Sensor → coda che contiene tutte le rilevazioni del sensore di posizione
NB: Questa soluzione è stata implementata solo per testare le funzionalità dell'exchanger
- Marco Collarini → progettazione e sviluppo software lato server
- Alessandro Vendrame → progettazione e sviluppo software lato client