TsgcWSPClient_MQTT | MQTT-topics

Onderwerpen

In MQTT verwijst het woord onderwerp naar een UTF-8-tekenreeks die de broker gebruikt om berichten te filteren voor elke verbonden client. Het onderwerp bestaat uit één of meer onderwerpniveaus. Elk onderwerpniveau wordt gescheiden door een schuine streep (onderwerpniveauscheider)

 

myHome / groundfloor / livingroom / temperature

 

In vergelijking met een berichtenwachtrij zijn MQTT-onderwerpen zeer lichtgewicht. De client hoeft het gewenste onderwerp niet aan te maken voordat hij het publiceert of erop abonneert. De broker accepteert elk geldig onderwerp zonder enige voorafgaande initialisatie. Merk op dat elk onderwerp minimaal 1 teken moet bevatten en dat de onderwerptekenreeks lege spaties toestaat. Onderwerpen zijn hoofdlettergevoelig.

 

 

Jokertekens

Wanneer een client zich op een topic abonneert, kan hij zich abonneren op de exacte topic van een gepubliceerd bericht of hij kan wildcards gebruiken om zich op meerdere topics tegelijk te abonneren. Een wildcard kan alleen worden gebruikt om je op topics te abonneren, niet om een bericht te publiceren. Er zijn twee verschillende soorten wildcards: _single-level en _multi-level.

 

Enkel niveau: +

Zoals de naam al doet vermoeden, vervangt een enkelniveaujokerteken één onderwerpniveau. Het plusteken vertegenwoordigt een enkelniveaujokerteken in een onderwerp.

 

myHome / groundfloor / + / temperature

 

Elk onderwerp komt overeen met een onderwerp met een enkelniveau-jokerteken als het een willekeurige tekenreeks bevat in plaats van het jokerteken. Een abonnement op _myhome/groundfloor/+/temperature kan bijvoorbeeld de volgende resultaten opleveren:

 

YES => myHome / groundfloor / livingroom / temperature

JA => myHome / groundfloor / kitchen / temperature

NO   => myHome / groundfloor / livingroom / brightness

NEE => mijnThuis / beganeGrond / woonkamer / temperatuur

NEE => mijntuis / beganeGrond / keuken / koelkast / temperatuur

 

Meerdere niveaus: #

Het jokerteken op meerdere niveaus dekt veel onderwerpniveaus. Het hekje vertegenwoordigt het jokerteken op meerdere niveaus in het onderwerp. Om te bepalen welke onderwerpen overeenkomen, moet het jokerteken op meerdere niveaus als het laatste teken in het onderwerp worden geplaatst, voorafgegaan door een schuine streep naar voren.

 

myHome / groundfloor / #

 

YES => myHome / groundfloor / livingroom / temperature

JA => myHome / groundfloor / kitchen / temperature

YES => myHome / groundfloor / kitchen / brightness

NO => myHome / firstfloor / kitchen / temperature

 

Wanneer een client zich abonneert op een topic met een wildcard op meerdere niveaus, ontvangt hij alle berichten van een topic dat begint met het patroon vóór het jokerteken, ongeacht hoe lang of diep het topic is. Als u alleen het jokerteken op meerdere niveaus als topic opgeeft (_#), ontvangt u alle berichten die naar de MQTT-broker worden verzonden.