MQTT

Uit MakerSpace Leiden
Versie door Lucas (overleg | bijdragen) op 7 feb 2021 om 12:38
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 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

Andere truucks

Je ziet alle logs van alle nodes met

   mosquitto_sub -t 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 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/