QoS banner .

MQTT - Deel 2 (QoS)

 

Table of Contents

Protocol met 3 QoS-klassen

Het MQTT protocol heeft 3 QoS-klassen, QoS staat voor Quality of Service. Deze klassen zijn te onderscheiden aan het nummer dat meegegeven is met het bericht. De nummers gaan van 0 tot 2. 

QoS 0

Dit bericht bepaalt dat een bericht zonder bevestiging eenmalig verstuurd wordt. Dat gaat snel en bespaart bronnen. Voor eenvoudige sensorwaarden is dat voldoende, maar het is niet aan te bevelen als het functioneren van een complete  installatie afhankelijk is van die informatie en de netwerkverbinding slecht is.

QoS 1

Een bericht met de QoS-waarde 1 komt minstens een keer aan bij de ontvanger. Als antwoord op een Publish geeft de ontvanger een Puback Als deze reactie uitblijft, probeert de zender het opnieuw tot de ontvangst bevestigd wordt. Bij die procedure kan het voorkomen dat een bericht vaker aankomt als de bevestiging verloren gaat. Hierdoor kan het gebeuren dat een temperatuur status meerdere malen binnenkomt wat niet tot problemen zal leiden, echter als het een opdracht zoals het bewegen van een automatische robot bevat kan het zijn dat de opdracht meerdere malen uitgevoerd zal worden wat gevaarlijk kan zijn voor de omgeving

QoS 2

Een bericht met de QoS-waarde 2 zit wat complexer in elkaar maar is het meest betrouwbaar. Daarbij dragen beide gesprekspartners zorg dat een bericht precies één keer bij de partner aankomt. De zender verzendt een bericht via Publish met een bericht-ID. De ontvanger zal dit bericht bevestigen met een Pubrec en opslaan tot de zender deze bevestiging ontvangt, en een Pubrel terugzend. De zender weet bij deze dat de ontvanger het bericht ontvangen heeft en geeft aan dat het niet meer opnieuw verzonden moet worden. De ontvanger bevestigd dit weer door een Pubcomp terug te sturen. Aangezien in de meeste installaties de ontvanger een Broker is zal deze het bericht pas weer doorsturen na het Pubcomp bericht naar de zender verstuurd is. mocht de zender of de ontvanger een ontvangstbevestiging missen binnen de gestelde tijd gaat het process een stap terug tot het volledig uitgevoerd is. Het oorspronkelijke bericht zal nooit een tweede keer verzonden worden.

Info

Een laatste puntje in deze keten is dat er tussen een sensor en een broker een verschil kan en mag zitten als tussen de broker en de ontvangers. De verbinding tussen de zender en broker kan slecht zijn waardoor het wenselijk kan zijn een QoS 2 te gebruiken. Terwijl de verbinding tussen de ontvangers en de broker goed is en een QoS 0 voldoende is.