Broker Supportati¶
Il Push agent con il protocollo MQTT supporta i seguenti Broker:
Broker |
SSL |
NO SSL |
Mosquitto |
✓ |
✓ |
Azure IoT Hub |
✓ |
X |
Eclipse Mosquitto
Il Push agent supporta le seguenti modalità di comunicazione con un broker Mosquitto:
Anonima: invio e ricezione messaggi senza autenticarsi al broker;
Autenticata: invio e ricezione messaggi una volta che si è autenticati tramite username e password;
Sicura: invio e ricezione messaggi criptati tramite SSL.
Una volta configurato il broker per la modalità scelta è possibile inviare ricevere messaggi. La porta 1883 solitamente viene usata per la comunicazione anonima/autenticata invece la porta 8883 viene usata per la comunicazione sicura. In generale, la configurazione del broker può essere adattata alle proprie esigenze. Nella configurazione è possibile scegliere la modalità di comunicazione e la porta sulla quale comunicare.
IoT Hub
Il Push agent per IoT Hub supporta solo la modalità di comunicazione sicura. Questa prevede l’autenticazione di un client tramite un SAS Token che viene generato per ogni device che vuole inviare/ricevere messaggi da IoT hub. Il client si autentica tramite username e password, dove:
username: es.
contoso.azure-devices.net/MyDevice01/?api-version=2018-06-30
password: es.
SharedAccessSignature sig={signature-string}&se={expiry}&sr={URL-encoded-resourceURI}
Per poter generare il SAS Token bisogna accedere al portale Azure e ricavare «IoT Hub connection string» come indicato in https://devblogs.microsoft.com/iotdev/understand-different-connection-strings-in-azure-iot-hub/. Una volta ottenuta la «connection string» è possibile generare il token tramite 2 applicazioni:
Device Explorer:
Scaricare Device explorer da https://github.com/Azure/azure-iot-sdk-csharp/releases
Installarlo, avviarlo ed inserire «IoT Hub connection string» nel relativo field e premere il pulsante «Update» e andare su tab Management
Se non è stato creato il device allora creare un device con il pulsante «Create»
Premere il pulsante «SAS Token…»
Selezionare il device desiderato (se non già selezionato)
Impostare TTL (Days) al numero di giorni di valità del token
Premere il pulsante «Generate»
Azure IoT Explorer:
Scaricare Azure IoT Explorer da https://github.com/Azure/azure-iot-explorer/releases
Installarlo, avviarlo ed inserire «IoT Hub connection string» nel relativo nel campo proposto e fare «Connect»
Se non è stato creato il device allora creare un device con il pulsante «New»
Selezionare il device desiderato
Espandere il tab «Connection string with SAS token»
Selezionare «Primary Key» come Symmetric key
Impostare Expiration (minutes) al numero di minuti di validità del token
Premere il pulsante «Generate»
Utilizzare il token generato come illustrato sopra per comunicare con il broker.
Per ogni client, che vuole inviare/ricevere messaggi, deve essere creato un device su IoT Hub. Non è possibile utilizzare uno stesso device da più client per ricevere/inviare dati. A differenza di Mosquitto, IoT Hub non è un broker generico e quindi non prevede la possibilità di inviare e ricevere informazioni su topic customizzati. Infatti, un device può inviare/ricevere informazioni solo su topic specificio del device, questi sono:
invio:
devices/{deviceid}/messages/event/
ricezione:
devices/{deviceid}/messages/devicebound/#
Per verificare invio e ricezione dei messaggi è possibile utilizzare Device Explorer e Azure IoT Explorer che offrono la possibilità di monitorare i messaggi ricevuti e di inviare messaggi al device.