Send or Process Telemetry Data

Telemetry data is published to the ase.exchange.telemetry exchange which is a headers exchange.

See Exchange ase.exchange.telemetry for details on the AMQP user to use and the messages sent.

Queues can be bound for specific types of messages. Services can pick up "raw" messages, process them and publish them to the ase.exchange.telemetry exchange with a new publishTag label.

At the moment connected queues have been tested for:
  • Export MQTT telemetry processing (can process any publishTag)
  • Support label telemetry processing (processes "raw" publishTag, publishes messages back to the exchange using the "label" publishTag header)
  • Meta processing of Thing properties (processes "raw" publishTag)
Figure 1.


Both the "publishTag" and "thingID" headers are required.

Publish Raw Telemetry Data

User: telemetry-user

Raw telemetry messages coming from device drivers need to be published with the following headers:

headers["publishTag"]  = "raw" 
headers["thingID"]  = "{thing-id}" 
headers["messageType"] = "{message-type}"

amqp.PublishAMQP("telemetry", "ase.exchange.telemetry", "", body, headers, "", "")
Note: The messageType can be sent either as a header or in the message body. The one in the message body takes precedence.

Subscribe to Telemetry Data

User: support-user

This user is allowed to create queues with the "ase.queue.telemetry-support-" prefix, bind these "ase.queue.telemetry-support-" prefixed queues to the "ase.exchange.telemetry" exchange and consume messages from these "ase.queue.telemetry-support-" prefixed queues.

Proposed implementation:
  • Create a unique queue with the "ase.queue.telemetry-support-" prefix and a random (alphanumeric) suffix
  • Bind this queue to the "ase.exchange.telemetry" headers exchange using:
    • x-match=all
    • publishTag=raw
    • thingID=<thing-id>
  • Bind for each Thing you are interested in processing telemetry for
  • Consume incoming telemetry messages

Publish Processed Telemetry Data

User: telemetry-user

Make sure to use a custom publishTag header:

headers["publishTag"]  = "{custom-tag}" 
headers["thingID"]  = "{thing-id}" 
headers["messageType"] = "{message-type}"

amqp.PublishAMQP("telemetry", "ase.exchange.telemetry", "", body, headers, "", "")
Note: The messageType can be sent either as a header or in the message body. The one in the message body takes precedence.