MQTT op de Raspberry

Uit RobotMC.be
Ga naar: navigatie, zoeken


MQTT op de Raspberry

MQTT is een soort van berichten "makelaar", dat gebruik maakt van het TCP/IP protocol. Het is speciaal ontworpen om via de standaard netwerkverbindingen (Wifi, Ethernet) data te delen en te versturen met weinig overhead en beperkte bandbreedte. Er bestaan uitstekende librarys voor Arduino (ESP8266) en andere populaire programmeertalen (Python). De MQTT "Broker" is belast met het ontvangen en verdelen van de berichten. Je kan met verschillende "clients" data naar de broker sturen, en er kunnen ook verschillende clients data ontvangen. Data naar MQTT sturen noemt men "Publish", als je data wil ontvangen moet je "Subscriben". De data kan bijvoorbeeld van een temperatuur sensor zijn, deze sensor moet één unieke naam krijgen : dat noemt dan "topic". Je stuurt dan de gemeten temperatuur door als "payload". Als iemand deze gemeten temperatuur wil opvolgen, moet hij "subscriben" op dit welbepaalde "topic".

MQTT Mosquitto

Op de Pi wordt meestal Mosquitto gebruikt als MQTT broker. Dit moet eerst nog geinstalleerd worden op de Pi via het welbekende "apt get" :

sudo wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
sudo apt-get update
sudo apt-get install mosquitto

Na de installatie wordt Mosquitto direct gestart.

Node-red

Met Node-red kan je op een eenvoudige manier MQTT programmeren en debuggen vanuit een webbrowser. Als je Rasbian "Stretch" gebruikt op de Pi, is "Node-red" reeds standaard geinstalleerd op de Pi. Je kan node-red starten vanuit de desktop (onder het menu "programming"), maar ook via de terminal :

node-red start

Als node-red eenmaal gestart is kan je met je browser (hoeft niet lokaal op de pi te zijn) node-red bereiken via het ip-adres van de pi en het poort nummer "1880".

Een voorbeeld : Mosquitto + Node-red lopen op de pi, deze heeft het lokaal IP adres 192.168.0.60 Ik heb hier 4 nodes gebruikt : "Inject Message", "MQTT Publish", "MQTT Subscribe" en "Debug". Je kiest dus links de gewenste nodes, slepen naar de gewenste plaats, de nodes configureren en verbinden. Daarna "Deploy" en dat is alles !! De functie van dit voorbeeld is erg eenvoudig : als je klikt op "Inject", wordt er een "Timestamp" naar de eerste "MQTT" Node gestuurd (dit wordt dan de payload). Ik heb deze node een naam gegeven, dit is dan het "Topic". Dit "Topic" gaat deze Timestamp "Publishen" naar de Mosquitto broker. De 2de MQTT node is een "subscriber", deze gaat alle boodschappen met de ingestelde "topic" naam ontvangen. Deze boodschap wordt dan verder geleid naar de "debug" node. Elke keer als de debug node een boodschap ontvangt, wordt deze rechts in het "debug" tabblad van node-red getoond. Op deze manier kan je eenvoudig testen of je configuratie in orde is. De volledige flow en settings worden opgeslagen door node-red en blijven behouden. Als je graag een back-up wil, kan dit via "export" : eerst selecteer je al de nodes die je wil exporteren, daarna "export". Op dezelfde manier kan je nodes en settings "importeren".

Node redA.png

Node-red Dashboard

Hiermee kan je een mooie interface bouwen met grafieken, metertjes, switchen en toetsen. Het dashboard is ook te bereiken via de poort 1880/ui (user interface).

Node redB.png

Dashboard installeren :

Mogelijk moet je eerst nog deze dashboard nodes installeren, dit kan via een keuze menu rechtsboven (Manage Palette):

Hier kan je een zoekterm ingeven, alle mogelijke nodes met deze zoekterm worden dan gekozen( hier : Node-red-dashboard) :

Node redC.png

Nog enkele links :

UItstekende nederlandstalige site : https://nl.oneguyoneblog.com/2017/06/22/iot-mosquitto-node-red-raspberry-pi/

Node-red website : https://nodered.org/

MQTT Mosquitto website : https://mosquitto.org/

Wemos D1 upload naar MQTT :Wemos D1 naar MQTT