Use MQTT's multi-level wildcard to Subscribe to multiple Topics
MQTT's multi-level wildcards allow you to Subscribe to multiple Topics simultaneously while using a specific Topic structure (they will follow the same Topic Structure before their level).
Multi-level wildcards are represented with a hash symbol (#). Multi-level wildcards must always be placed as the last level of the Topic. For example, if using the following Subscription Topic with a multi-level wildcard:
Topic
/v1.6/devices/<device_label>/#
Then the response will be updated with the Last Dot of any variable that has received a value within the specified Device.
Field | Value | Required |
---|---|---|
Host | industrial.api.ubidots.com | Yes |
Port | 1883/8883 (Non-TLS/TLS) | Yes |
Username | Your Ubidots Token | Yes |
Password | Any character or leave blank | No |
Quality of Service | 0 or 1 | No |
Non-specific results
The results for Subscriptions using wildcards give no clue of what variable has received the resulting value/dot, as it only gives the value/dot itself and no other information
Examples
Note
The bash example from this section makes use of the Eclipse Mosquitto library, if you wish to test it please install it using the official instructions.
If there are 3 Devices which contain the following Variables:
Device | Variables |
---|---|
device-a | temperature, pressure, humidity |
device-b | temperature |
device-c | pressure, humidity |
Using multi-level wildcard Subscription to obtain a dot sent to a any Variable within a determined Device
When using the following multi-level wildcard Subscription Topic:
/v1.6/devices/device-a/#
Then the results would be as if multiple Subscriptions were made as following:
/v1.6/devices/device-a/temperature
/v1.6/devices/device-a/pressure
/v1.6/devices/device-a/humidity
Hence, the response would be updated if device-a receives a new value for either its temperature, pressure, or humidity variable.
$ mosquitto_sub \
-h "industrial.api.ubidots.com" \
-t "/v1.6/devices/device-a/#" \
-u "BBFF-Rfcgaxns6HlVb155WA0RhSY85xNDmB" \
-p 1883 \
-q 1
-v
Using multi-level wildcard to obtain the dot of any variable from any device when it is updated
Use the following Subscription Topic:
/v1.6/devices/#
Then the results would be as if multiple Subscriptions were made as following:
/v1.6/devices/device-a/temperature
/v1.6/devices/device-a/pressure
/v1.6/devices/device-a/humidity
/v1.6/devices/device-b/temperature
/v1.6/devices/device-c/pressure
/v1.6/devices/device-c/humidity
Hence, the response would be updated if any of the variables from any device would be updated
$ mosquitto_sub \
-h "industrial.api.ubidots.com" \
-t "/v1.6/devices/#" \
-u "BBFF-Rfcgaxns6HlVb155WA0RhSY85xNDmB" \
-p 1883 \
-q 1
-v