-
Notifications
You must be signed in to change notification settings - Fork 1
Using Runtime Telemetry API
Telemetry is reported as a read-only stream on a topic beginning with dt (device telemetry). It is up to the topic's consumer to determine the most appropriate way to handle subscribing to topics. Telemetry topics follow the pattern below:
dt/[app]/[device]/[parameter-measured]
As an example, the topic below is expected to report the values of the current drawn by VFD 1:
dt/vfdctl/vfd1/amps
Scoping your subscription properly is very important and will:
- minimize extraneous client-side filtering
- minimize extraneous handling logic
- minimize network bandwidth consumption
- minimize processing latency
- minimize RAM usage in deserializers
- You are creating an engineering dashboard page per device for a web app, you only care about the currently selected "vfd1" device and want to display all messages in a historian table view
dt/vfdctl/vfd1/+
- You're now on revision 2 of your engineering dashboard page and have added React components with a line chart where you want to display current draw specifically
dt/vfdtl/vfd1/amps
- You want to use ai to predict your billing costs, so you create a trend of mean current draw across all devices on the network by setting up a listener in Node Red that every minute will reset its value, sum every incoming value and at the end of the next interval divide by the number of samples received before publishing the mean on a new topic called
dt/facility1/vfd/amps
and inserting the data into a database - A conveyor you are driving can bind if it gets too worn, so you implement a Node Red listener to send a text message to a technician that VFD1's conveyor needs maintenance performed before irreversible damage occurs when the value passes an alarm setpoint
dt/vfdctl/+/amps
Please make sure to bookmark the following pages, as they will provide you with important details on API outages, updates, and other news relevant to developers on the platform. Check out our releases to find the latest binaries and a history of all released binaries. Visit the Tulsa Software Repositories to find related open-source codebases. In case of any document conflicts, assume the Vfdctl readme is most accurate.
MQTT is extremely flexible and not as rigidly enforced as communications such as RPC or REST communications. This leaves lots of room for one-off implementations if systems are not intentionally designed. For our communications architecture, we have based our topic and payload structures off of the AWS best practices to ensure ultimate usability.
- Even if not using AWS IoT cloud communications, their MQTT communication patterns are widely applicable
- A good client GUI like MQTTX or MQTT Explorer makes troubleshooting your system much easier but any app supporting MQTT 3.1.1 communications will suffice
- Using a IoT Rules Engine such as Node Red, AWS IoT Core, etc is essential to utilizing data with minimal coupling and maximal scalability
For the questions not covered here or to learn what we're currently working on, visit the Tulsa Software slack channel to review topics, ask questions and learn from others.