MQTT Broker: Difference between revisions

1,358 bytes added ,  10 August 2021
no edit summary
No edit summary
No edit summary
Line 16: Line 16:
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 <code>sensors/</code> topics using [https://github.com/influxdata/telegraf/tree/master/plugins/inputs/mqtt_consumer Telegraf] + [https://github.com/influxdata/influxdb#influxdb- InfluxDB].
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 <code>sensors/</code> topics using [https://github.com/influxdata/telegraf/tree/master/plugins/inputs/mqtt_consumer Telegraf] + [https://github.com/influxdata/influxdb#influxdb- InfluxDB].


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


* sensors/air/0/temp
*sensors/air/0/temp
* sensors/air/0/pm25
*sensors/air/0/pm25
* sensors/air/1/temp
*sensors/air/1/temp
* sensors/air/1/pm25
*sensors/air/1/pm25


You can use <code>+</code> as a wildcard to match a single hierarchy when subscribing. For example, <code>sensors/air/+/temp</code> will subscribe to all air temperature sensors.
You can use <code>+</code> as a wildcard to match a single hierarchy when subscribing. For example, <code>sensors/air/+/temp</code> will subscribe to all air temperature sensors.
Line 30: Line 30:
===Access===
===Access===
Server / host: webhost.protospace.ca
Server / host: webhost.protospace.ca
Port: 8883


====Reading====
====Reading====
Line 42: Line 44:
*username: writer
*username: writer
*password: [ask Tanner]
*password: [ask Tanner]
=== Usage ===
Please send messages to a topic starting with <code>test/</code> or <code>firstname/</code> while developing. This makes sure you don't screw up logged sensor data. For example:
* test/air/2/temp
* tanner/air/2/temp
After testing your device, show Tanner and we can make sure it's ready and add the data to the Protospace IoT API so others can use it.
The last thing you do should be to change the topic to the real one before deploying the device. Make sure you don't commit this code change to prevent others from screwing up your logged sensor data if they run your code.
Please don't send values more than once per minute to prevent filling up the database.
==== CLI Example ====
These examples use the <code>mosquitto</code> client program.
Reading:
$ mosquitto_sub -d --capath /etc/ssl/certs/ -h webhost.protospace.ca -p 8883 -u reader -P cf503b99ba8cb0103da8884f09694fcd60ba1f2d -t sensors/air/0/temp
... wait 60 seconds.
Writing:
$ mosquitto_pub -d --capath /etc/ssl/certs/ -h webhost.protospace.ca -p 8883 -u writer -P [ask Tanner] -t test -m 'hello world'
On MacOS, you might need to copy <code>/etc/ssl/certs/</code> from a Linux computer to somewhere on your machine.
==== Arduino Example ====
Please see https://github.com/Protospace/telemetry/blob/master/air_quality/air_quality.ino for example MQTT sensor code.


===Technical Info===
===Technical Info===