Skip to content

alessandrovendrame/IIoT-Scooters_Valle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Indice

  1. Il Progetto
  2. Protocollo HTTP
  3. Protocollo MQTT
  4. Protocollo AMQP
  5. Il team

Il progetto

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.

Client

  • Creazione sensori virtuali

    • Sensore di batteria
    • Sensore di velocità
    • Sensore di posizione
    • Sensore di stato
  • Invio delle rilevazioni al server

Server

  • Ricezione ed invio di dati
  • Gestione dati con salvataggio nel database

Protocollo HTTP

Rilevazione (POST /api/detection)

Formato JSON

Nome variabile Tipo variabile
SensorId int
ScooterId int
SensorValue string
SensorType string
SensorDetectionDate DateTime

Monopattino (POST /api/scooter)

Formato JSON

Nome variabile Tipo variabile
ScooterId int
Brand string
Company string

Sensore (POST /api/sensor)

Formato JSON

Nome variabile Tipo variabile
SensorId int
SensorType string
SensorMesurementUnit string

Response

Formato JSON

Nome variabile Tipo variabile
StatusCode int
Message string

Protocollo MQTT

Gestione messaggi da client a server

  • 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

Gestione messaggi da server a client

  • 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

TEST

  • 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.

Protocollo AMQP

Gestione messaggi da client a server

  • 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

Il team

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages