MQTT Broker

Revision as of 19:32, 10 August 2021 by Tanner.collin (talk | contribs)

The MQTT Broker is a server that allows publishing and subscribing to MQTT topics.

It's meant for sensors and devices at Protospace to communicate publicly and for fun.

Theory

MQTT is a lightweight, publish-subscribe network protocol that transports messages between devices[1]. It's low power and ideal for microcontrollers hooked up to sensors and devices.

Messages are just strings of text like "hello world" or "12.3".

Messages are sent to arbitrary topics like pets/dogs/charlie. By convention slashes separate levels of category that we all agree on.

When a message is sent to a topic, all devices that are subscribed to that topic receive the message.

Topics aren't really created, they just exist as soon as a message is sent to them.

Normally messages aren't stored anywhere. They just get sent out and received by whoever happens to be listening to the same topic. However, we automatically log messages to the sensors/ topics using Telegraf + InfluxDB.

Topics

MQTT topics consist of categories separated by slashes. Here are some topics currently in use:

  • sensors/air/0/temp
  • sensors/air/0/pm25
  • sensors/air/1/temp
  • sensors/air/1/pm25

You can use + as a wildcard to match a single hierarchy when subscribing. For example, sensors/air/+/temp will subscribe to all air temperature sensors.

You can use # as a wildcard to match all remaining hierarchies. It must be the last character. For example, sensors/# will subscribe to all sensors.

Access

Server / host: webhost.protospace.ca

Reading

Anyone can read any topic. Don't send anything private to the broker.

  • username: reader
  • password: cf503b99ba8cb0103da8884f09694fcd60ba1f2d

Writing

Ask Tanner for write access to the broker. We want to make sure you don't accidentally screw up sensor data.

  • username: writer
  • password: [ask Tanner]

Technical Info

The MQTT Broker is hosted on the Webhost VPS managed by Tanner. The same one that's running the main Website and the Wiki.

References