MQTT (Message Queue Telemetry Transport) is het protocol dat steeds belangrijker wordt in de wereld van het Internet of Things.
Hiermee kunnen zeer eenvoudig verschillende gegevens tussen verschillende sensoren en actuatoren worden uitgewisseld. Alle clients die zijn aangesloten op de MQTT-server verzenden en ontvangen hun gegevens van en naar een centrale server.
In het MQTT-protocol spreken de individueel aangesloten clients niet rechtstreeks met elkaar.
Bij het aanmelden op de MQTT-server kan elke client aangeven welke gegevens hij wil ontvangen zodra er nieuwe gegevens beschikbaar zijn. Tegelijkertijd kan elke client gegevens naar de server sturen. Deze gegevens die naar de server worden gestuurd, worden vervolgens automatisch gedistribueerd naar de clients die zich eerder hebben geregistreerd om de gegevens te ontvangen.
Een MQTT-bericht bestaat altijd uit een naam en de gegevens. Met de naam (topic genoemd) kunnen clients zich bij de server registreren als "geïnteresseerde partij" voor de gegevens die onder deze naam worden verzonden.
Zodra de server gegevens ontvangt onder deze naam, worden deze doorgestuurd naar alle klanten die zich eerder hebben geregistreerd als "geïnteresseerden" voor deze gegevens.
Tot zover de ruwe functie van het MQTT-protocol.
Om het MQTT protocol in je netwerk te kunnen gebruiken, heb je een MQTT server nodig. In dit artikel leg ik uit hoe je deze op de RaspberryPi installeert.
Naast je eigen MQTT-server is er ook de optie om externe MQTT-servers te gebruiken die beschikbaar zijn op het internet. Sommige hiervan zijn gratis beschikbaar.
Dit heeft volgens mij een aantal nadelen:
- Je gegevens verlaten het thuisnetwerk. De kans dat er onheil mee wordt aangericht of dat het überhaupt kan, is niet groot. Toch voel ik me op de een of andere manier meer op mijn gemak als mijn gegevens mijn "eigen vier muren" niet verlaten.
- Je bent afhankelijk van de externe MQTT-server. Als deze server niet bereikbaar is, bijvoorbeeld omdat hij is uitgevallen of omdat je internetverbinding niet tot stand kan worden gebracht, zal je volledige netwerkinterne (MQTT) communicatie ook uitvallen.
Aangezien het installeren van je eigen MQTT-server snel en gratis is, denk ik dat dit het betere alternatief is.
Veiligheidsinstructies
Ik weet dat de volgende opmerkingen altijd een beetje vervelend zijn en onnodig lijken. Helaas hebben veel mensen die "beter" wisten door onvoorzichtigheid ogen, vingers of andere dingen verloren of zichzelf verwond. Gegevensverlies is in vergelijking bijna te verwaarlozen, maar zelfs dit kan erg vervelend zijn. Neem daarom vijf minuten de tijd om de veiligheidsinstructies te lezen. Omdat zelfs het coolste project geen blessure of andere problemen waard is.
https://www.nerdiy.de/sicherheitshinweise/
Affiliate links / reclame links
De hier vermelde links naar online winkels zijn zogenaamde affiliate-links. Als u op zo'n affiliate-link klikt en via deze link een aankoop doet, ontvangt Nerdiy.de een commissie van de betreffende onlineshop of aanbieder. De prijs verandert voor jou niet. Als u via deze links uw aankopen doet, steunt u Nerdiy.de om in de toekomst andere nuttige projecten aan te kunnen bieden. 🙂
Overzicht
Voordat je kunt beginnen met de installatie van de MQTT-server, moet je de RaspberryPi hebben voorbereid zodat deze bereikbaar is via Putty.
In de volgende drie artikelen wordt beschreven wat er moet gebeuren om de RaspberryPi voor te bereiden:
RaspberryPi – setup voor nerds!
RaspberryPI - De eerste configuratie!
RaspberryPi – Bedien de RaspberryPi via SSH
Benodigd materiaal:
-Nee-
Benodigd materiaal:
In de volgende lijst vindt u alle onderdelen die u nodig heeft om dit artikel te implementeren.
Log in op de RaspberryPi via SSH
Om te beginnen moet je eerst inloggen op de Rasp Pi met Putty via SSH. Hoe je dit doet staat in het artikel RaspberryPi - Bedien de RaspberryPi via SSH beschreven.
Pakketbeheer updaten
Het pakketbeheer in Linux is een "centrale plek" van waaruit verschillende softwarepakketten kunnen worden geïnstalleerd. Om dit betrouwbaar te laten werken, moeten de lijsten en bronnen van het pakketbeheer worden bijgewerkt voor elke installatie van nieuwe pakketten.
sudo apt-get update && sudo apt-get upgrade
Mosquito installeren
U kunt de gratis open source-software “Mosquitto” gebruiken als MQTT-server. Dit kan eenvoudig worden geïnstalleerd via de pakketbeheerder met het volgende commando:
sudo apt-get install mosquitto mosquitto-clients
Autostart instellen voor de MQTT-server
Om de MQTT-server automatisch te laten starten na een herstart van je RaspberryPi, moet je nu de autostart ervoor activeren. Dit kan met het volgende commando.
sudo systemctl schakel mosquitto.service in
Controleer de status van de MQTT-server
Na installatie zal “Mosquitto” automatisch starten. Of dit werkt kun je controleren met het volgende commando:
sudo service muggenstatus
De MQTT-server kan gestopt worden met het volgende commando:
sudo-service muggenstop
De MQTT-server kan worden gestart met het volgende commando:
sudo dienst mug start
Functie controleren
Om een eerste test uit te voeren, willen we proberen om tegelijkertijd een bericht naar de sevrer te sturen en het van de sevrer te ontvangen. Om dit te doen, moeten we ons abonneren op een topic van de MQTT server en tegelijkertijd vanuit een ander venster een bericht sturen naar dit geabonneerde topic.
Om te beginnen moet je eerst het volgende commando invoeren in Putty:
mosquitto_sub -h localhost -v -t testTopic
Voer in dit nieuwe putty-venster de volgende opdracht in:
mosquitto_pub -h localhost -t testTopic -m "Een mug vliegt, een mug prikt."
U zou nu het bericht moeten zien dat u zojuist hebt verzonden, weergegeven in het eerste putty-venster.
Als dit werkt, heeft je MQTT-server de eerste test doorstaan 🙂 .
Beveiligingsnotitie: Er is nog geen encryptie of gebruikersidentificatie actief. Dit betekent dat iedereen die toegang heeft tot je netwerk kan inloggen op de MQTT server en er gegevens van kan verzenden of ontvangen. Ik zal in een later artikel uitleggen hoe je deze twee beveiligingslekken kunt dichten.
Veel plezier met het project
Ik hoop dat alles werkte zoals beschreven. Zo niet, of als je vragen of suggesties hebt, laat het me weten in de commentaren. Ik zal dit dan zo nodig aan het artikel toevoegen.
Ideeën voor nieuwe projecten zijn altijd welkom. 🙂
PS Veel van deze projecten - vooral de hardwareprojecten - kosten veel tijd en geld. Natuurlijk doe ik dit omdat ik het leuk vind, maar als je het cool vindt dat ik de informatie met je deel, dan zou ik blij zijn met een kleine donatie aan het koffiefonds. 🙂