MQTT

Uit MakerSpace Leiden
Ga naar: navigatie, zoeken

MQTT

MQTT is a messagebus based on the IBM MQ bus. It allows you to pass messages from one system to another without worrying about delivery or other send/receive errors and queues.

A nice primer on MQTT can be found on https://www.hivemq.com/blog/mqtt-essentials-part-1-introducing-mqtt/

A simple mqtt server is mosquitto. (mosquitto_sub is the command line client)

With the client you can read messages on the bus and post messages to the bus. With the server you can setup your own mqtt bus. To read e.g. the temperature in the makerspace, you only need a client.

There are also MQTT clients that run on a smartphone/tablet

De rest van deze pagina geeft commandoregels uitgaande van mosquito_sub, maar met de juiste hostname en topic kun je eender welke andere cliënt gebruiken. Als je luistert op topic “#” zie je alles en kun je daarna zelf kiezen wel topic je filtert.

MQTT bij MakerSpace Leiden

Luisteren naar alles:

mosquitto_sub -h space.makerspaceleiden.nl -t '#' -v

(Ben je ingelogd op de deur db machine dan is mosquitto_sub -v -t "#" genoeg)

Onder andere de status van de space (open/dicht), de deuren (realtime en wie het laatst langskwam), en de huidige temperatuur. Echter zonder enige garantie voor correctheid of aanwezigheid van genoemde gegevens.

Posten:

mosquitto_pub -h space.makerspaceleiden.nl -t user/Marten -m “ wat een leuk plan.."

2) Je zult elke 15 minuten elk van de nodes zich zien melden met:

   log [spacedeur-asis-2017] connected, Wired Ethernet: 30:AE:A4:0C:2D:CF, IPv4: 192.168.4.137, full-duplex, 100 Mbps, Build: Mar  8 2018 14:54:53
   log [voordeur-asis-2017] connected, Wired Ethernet: 30:AE:A4:09:05:87, IPv4: 192.168.4.136, full-duplex, 100 Mbps, Build: Mar 20 2018 20:30:04
   log [tussendeur-asis-2017] connected, Wired Ethernet: 30:AE:A4:13:E9:3F, IPv4: 192.168.4.141, full-duplex, 100 Mbps, Build: Mar  8 2018 14:52:35
   etc..

Als het niet werkt

Check of MQTT up is.

Powercycle dan de nodes via de PoE of via het kabeltje. De poort nummers en mac-addressen staan hierboven.

Of stuur er via de bus het commando 'reset' heen met

   mosquitto_pub -t deur/tussendeur/open -m reboot

En check dat dat je in het log ziet:

  log [tussendeur-asis-2017] connected, Wired Ethernet: 30:AE:A4:13:E9:3F, IPv4: 192.168.4.141, full-duplex, 100 Mbps, Build: Mar  8 2018 14:52:35

Tip

Luisteren met de wildcard # geeft je alle informatie en dat is veel en onoverzichtelijk.
Je ziet alleen de logs van de nodes met

   mosquitto_sub -t ac/log/#

voeg eventueel de hostname toe. Deze worden op zowel de interne als externe bus gepost. De interne bus post het door naar de externe. Dus als de interne down is werkt de externe ook niet.

Alle nodes laten zich elke 10-15 minuten zien. Ook als er verder geen activiteit is. De nodes zijn slecht in het bijhouden van de tijd - dus lees niet te veel in de `uptime' - die is gauw 10-30% verlopen.


Er zijn een paar speciale topics die tekst voorlezen of lampen aansturen, maar de werking hiervan is niet gegarandeerd.

connecten naar MQTT

MQTT - GUIs

Deze kunnen gevonden worden op https://www.hivemq.com/blog/seven-best-mqtt-client-tools of in je app-store.

Een voorbeeld (mqtt-spy, de jar van https://github.com/eclipse/paho.mqtt-spy/wiki/Downloads) is:


Mqtt-spy-1.pngMqtt-spy-2.png

Links is (alleen) de juiste hostname: space.makerspaceleiden.nl ingevuld; rechts is een subscription op `log'.

Met MQTTtool

Bij het vakje “Host” vul je het adres in van de server die de bus host. Het host-adress is space.makerspaceleiden.nl (Bij mosquitto_sub wordt dit opgegeven met -h)

Password en username kun je leeg laten, port, clean session, en client-ID kun je laten staan zoals ze staan.

Dan tap je op “connect” om te verbinden

het topic stel je in op het tabblad “subscribe”.

Het topic is bijvoorbeeld “ac/log/bluecompressor” voor de status van de compressor (temperatuur, olie, druk) , of als je alles wilt zien “#”. Zonder de aanhalingstekens invoeren in MQTTtool. (Bij mosquitto_sub wordt dit opgegeven met -t en geven de aanhalingstekens aan dat het bij elkaar hoort als er een spatie in mocht zitten.)

QOS kun je laten staan. Met het klokje kun je vorige topics snel opnieuw invullen. Met de knop “subscribe” geef je aan berichten te willen ontvangen binnen dat topic.

Unsubscriben en disconnecten spreekt voor zich:

De knop “subscribe” toont de tekst “unsubscribe” als je al op een onderwerp ingeschreven bent, en schrijft je dus weer uit als je er op tapt. De knop “connect” op het tabblad “connect” veranderd in “disconnect” als je al verbonden bent, en verbreekt inderdaad de verbinding als je er op tapt.

Met MQTT Explorer

MQTT Explorer is er voor diverse platformen. (zie homepage: http://mqtt-explorer.com/). Na het opstarten van MQTT Explorer voeg je eerst een Connection toe:
MQTT Explorer connection.png
invullen:
Name: MSL space (iets anders mag ook)
Protocol: mqtt://
Host: space.makerspace.leiden
Port: 1883.

Daarna druk je op "Connect" en alle MQTT messages stromen binnen.

Wil je alleen de ac/log messages van de nodes, dan kun je via het "connections" scherm naar de optie "Advanced". Daar kun je een filter opgeven:
MQTT Explorer advanced.png


Na opnieuw een connect krijg je de ac/log mesages binnen:
MQTT Explorer connected.png

Met python

onder debian/ubuntu

apt-get install python-pip python-dev
pip install paho-mqtt

examples

http://svn.martenvijn.nl/svn/deuropener/
http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.python.git/tree/examples

Links

http://www.hivemq.com/seven-best-mqtt-client-tools/