MQTT

Uit MakerSpace Leiden
Versie door Lucas (overleg | bijdragen) op 7 feb 2021 om 09:37 (MQTT)
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.

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