Att inrätta en MQTT mäklare. Del 2: Sakernas Internet, Home Automation (2 / 8 steg)
Steg 2: MQTT ämnen
Detta är en bra tid att ha en snabb diskussion om MQTT frågor.
Vad är ett ämne?
Ett ämne är en sträng som består av UTF-8 (Unicode Transformation Format 8-bitars) tecken och är data som skickas av en förläggare till en mäklare som skall vidarebefordras till alla abonnenter. Kort är det en grundläggande textsträng.
Hur är de konstruerade?
Ämnen är uppdelade i en eller flera Ämnesnivå varje med ett minimum av minst 1 tecken. Dessa nivåer är åtskilda av ett snedstreck "/" och kan innehålla ' '(mellanslag). Till exempel (inte inklusive den citera märken).
"Detta/är/a/sex / / ämne exempel blanksteg"
Men förmodligen inte mycket användbart ämne, förhoppningsvis får punkten över. Ämnen är så känslig så;
"test/topic"
skiljer sig från;
"Test/Topic"
Detta är ett enda ämne
'x'
som är dessa;
' ' (space) and '/'
Det finns inga speciella åtgärder krävs för att skapa ett ämne, prenumeration eller publikation gör detta åt dig.
Och det är allt.
Finns det ett speciellt format eller bästa praxis för att bygga ämnen?
Det korta svaret är "nej" och det finns massor av åsikter kring hur du ska göra dem (och jag kommer att täcka ämnet i en senare Instructable). Men du skulle behöva tänka på följande när du skapar dina ämnen;
Hålla dem kort. De skickas över nätverket och måste tolkas (Läs) av någon enhet/mäklare/server, så att den längre och mer intrikata du göra dem desto svårare är att avkoda.
Om du kan använda meningsfulla namn. Det gör felsökning enklare. Som människa är det mycket enklare att skriva eller läsa 'sensor1' än 'Wcp10X! 3wdrka2".
Göra dem har betydelse för dig. De exempel jag sett tenderar att vara som en slags adress såsom;
"myhouse/första våningen/sovrum en / / taklampa"
Detta förutsätter en fast anslutningspunkt IoT enhet och för det mesta kommer detta vara sant, även om denna typ av nomenklaturen misslyckas när det gäller mobila eller åter sättas IoT enheter, t.ex. temperatur luftfuktighet sensor eller omkopplingsbar förlängning socket. Om du väljer att flytta en omkopplingsbar förlängning uttag från vardagsrummet till sovrummet för att ersätta en misslyckad enhet, kommer att du behöva programmera om Sakernas Internet enheten för att svara på den nya platsen att vara konsekvent.
För min serie om Sakernas Internet baserade hemautomation kommer jag att använda ämnen som hänvisar till enheten endast såsom;
"/ EthernetDevice/Led1Command"
eller
"/ WiFiDevice/Temp1Status"
Detta beror på att jag i slutändan vill använda en MySQL-databas för konfiguration och IoT enhetsinformation. Som jag förhoppningsvis kommer att omfatta senare.
Åh, och en sista sak, är det oftast inte att föregå det första ämnet med ett '/', men du kan se jag har ignorerat detta. :-)
Finns det några genvägar?
Ja, vet MQTT erbjuder vad är som ämne "wild cards". Detta är specialtecken som prenumerant kan placera i ett att prenumerera ämne att minska behovet av att prenumerera på många punkter. Det finns två typer av jokertecken; "+" kallas "samma nivå" och "#" för "Multi nivå". Bilden ovan ger exempel på båda.
En uttrycka av försiktigheten. Om du använder '#' multi level vilda kort och har en massa IoT enheter i ditt system, sedan var beredd på en hel del meddelanden!
Finns det några speciella ämnen?
Ja, ämnen som börjar med '$' är reserverade för interna statistik för den Broker som MQTT. I skrivande stund denna Instructable finns ingen tydlig officiella standardisering av ämnen som måste publiceras av en mäklare. Men det är vanligt att prefix med ' $SYS / " för denna typ av information. Mosquitto MQTT mäklare överensstämmer med det ' $SYS/mäklare / #'. (se Linux mosquitto man-sidan för fullständiga detaljer. dvs. man mosquitto)
Så om du vill se alla mosquitto MQTT mäklare statistik du skulle behöva MQTTSpy prenumerera på följande (se nästa steg för ytterligare detaljer).
"$SYS/mäklare / #"