Quando e perché utilizzare il protocollo MQTT?


34

Sto sviluppando un dispositivo che misura temperatura, umidità e massa. Attualmente utilizza HTTPS per caricare dati su un server remoto. Ora so che esiste un protocollo chiamato MQTT che si afferma sia il "protocollo di Internet of Things".

In quale caso e perché dovrei passare da HTTPS a MQTT?

Risposte:


32

MQTT è un "messenger" tra dispositivi:

  • il dispositivo misura al momento T una temperatura di X gradi
  • si collega (stesso o tramite l'hub zwave) al broker MQTT
  • crea un messaggio con l'argomento /domotics/myplace/mydevice/temperature
  • all'interno del messaggio che inserisce X(come "payload")

Altrove in casa tua:

  • il tuo Raspberry Pi è collegato al broker MQTT (può essere l'istanza MQTT stessa)
  • si iscrive all'argomento /domotics/+/+/temperatureper ricevere TUTTE le informazioni sulla temperatura da tutti i dispositivi che utilizzano questo formato argomento. Vedere le specifiche MQTT per ulteriori informazioni sui caratteri jolly dell'argomento MQTT ( +e #).
  • riceverà un messaggio con il payload Xe farà quello che vuole!

Altrove in casa tua:

  • il tuo computer è collegato al broker MQTT e si iscrive all'argomento /domotics/myplace/mydevice/#per ottenere TUTTE le informazioni dal tuo dispositivo e registrarle
  • riceverà un messaggio con il payload Xe farà quello che vuole!

MQTT è molto utile per evitare di collocare servizi Web e socket nei server. Node-RED utilizza MQTT e Domoticz può essere configurato per ottenere ine impostare outsegnali.

Personalmente uso MQTT a casa mia per spegnere i computer: /house/computers/mycomputerpayload:0


Bene, non devo preoccuparmi di socket e altri servizi web.
Bence Kaulics il

Puoi commentare gli aspetti di sicurezza? Il traffico è in chiaro?
Mawg,

1
Un'altra risposta afferma che MQTT supporta TLS; iot.stackexchange.com/a/69/39
Goufalite,

20

Il protocollo di trasporto di telemetria MQ noto come MQTT è progettato per dispositivi che funzionano a bassa potenza e bassa larghezza di banda. È un protocollo di messaggistica di pubblicazione / sottoscrizione leggero che significa che qualsiasi altro dispositivo può iscriversi a un argomento specifico.

HTTP / HTTPS è progettato come protocollo di richiesta-risposta per l'elaborazione client-server che non si preoccupa mai del consumo di energia e ha un sacco di sovraccarico di dati.

Utilizzare MQTT se:

  • Il dispositivo che stai utilizzando funziona con la batteria e non vuoi sostituirlo ogni x numero giorni (MQTT è ottimizzato per l'utilizzo della batteria mentre HTTP / S non lo è)
  • Hai bisogno di una risposta più rapida
  • È necessario disporre di un meccanismo pub / sub (se si desidera inviare messaggi a molti client)
  • È necessario inviare i dati in modo affidabile con diversi livelli di QoS

MQTT offre la stessa sicurezza di HTTPS?

MQTT si basa su TCP come protocollo di trasporto, il che significa che per impostazione predefinita la connessione non utilizza una comunicazione crittografata. Per crittografare l'intera comunicazione MQTT, la maggior parte dei broker MQTT - come HiveMQ - consente di utilizzare TLS anziché il semplice TCP.

Rif: HiveMQ


1
MQTT offre la stessa sicurezza di HTTPS?
Bence Kaulics il

2
Potrebbe utilizzare SSL / TLS, quindi dovrebbe essere sicuro come HTTPS.
Ghanima,

1
Esattamente come ha detto @Ghanima, ho aggiornato la risposta con l'articolo di riferimento per verificare quali sono le informazioni sulla sicurezza di MQTT.
bravokeyl,

11

MQTT (trasporto telemetria coda messaggi) sembra essere adatto all'applicazione proposta.

È leggero sia rispetto alla larghezza di banda (dimensione del pacchetto più piccola con un'intestazione di soli 2 byte) sia al footprint del codice client (consentendogli di funzionare su thin client come ESP8266, tipico client IoT). La riduzione dei dati trasmessi è vantaggiosa per una maggiore durata della batteria per i clienti alimentati a batteria off-grid come i sensori.

MQTT offre anche semplici metodi ( verbi ) adatti alle attività IoT, come abbonamenti duraturi che ripristinano le connessioni dopo disconnessioni client impreviste. Rispetto a HTTP / HTTPS è anche più semplice estrarre i dati dal pacchetto (non è necessario alcun parser).


5

Qui ho scritto un articolo che mostra ed evoluzione nel sistema di comunicazione che abbiamo avuto nel nostro progetto. Si tratta di micro-servizi, ma puoi considerare qualsiasi sensore come micro-servizio con il suo compito di raccogliere e pubblicare qualsiasi tipo di dati di telemetria.

Quindi la conclusione più importante è che è meglio usare MQTT quando devi solo inviare un evento da qualche parte e non sai nulla del destinatario. Ed è molto meglio usare HTTP (di solito REST) ​​quando sai qualcosa sul destinatario e hai bisogno di una risposta, ad esempio in caso di comandi di qualunque cosa.

Dal punto di vista del traffico, della CPU, della memoria e del consumo di energia, MQTT e HTTP sono sostanzialmente gli stessi.


2

Per quanto riguarda la tua citazione, MQTT è il "protocollo di Internet of Things":

Sì, esiste un gran numero di sviluppatori che utilizzano questo protocollo (vedi IoT Developer Survey 2018) ma CoAP (è HTTP adattato per IoT, basato su UDP) offre un'alternativa per HTTP nel caso in cui desideri utilizzare una leggera funzionalità di richiesta / risposta all'interno la tua applicazione.

MQTT offre invece una logica di pubblicazione / sottoscrizione integrata, che lo rende ideale per il ridimensionamento (è possibile utilizzare più gateway per un maggior numero di dispositivi). Esiste anche un'alternativa UDP (come CoAP a HTTP) che si chiama MQTT-SN (MQTT per reti di sensori). Ciò fornisce un overhead ancora più piccolo di CoAP, ma non utilizza R / R.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.