Tech Papers and Guides

Heartbeat Messages

Earlier we discussed using dashboards. Typically, heartbeat messages are sent to populate the values of many of the dashboards. Heartbeat messages are small messages sent on a regular basis to verify that the device is still operational, and to provide feedback about the internal status of the device, independent of the device measurements themselves. These messages will provide data such as:

  • Battery voltage and level
  • Firmware revision
  • Received signal levels (device Rx levels from gateway)
  • Device configuration parameters or CRC/MD5 hash
  • Device error conditions (e.g., sensor out of calibration)
  • Temperature (if this is a secondary measurement)
  • Counts of certain events such as the number of times woken by accelerometer
  • Wake versus sleep time of the device

How often these parameters need to be updated will depend on the application. Some applications need to operate for very long periods (up to 15 years) on a single primary battery, so they only update once every few days or every week. If so, sending a minimum number of heartbeats would be recommended to maximize battery life. Other applications may be much more sensitive to timely updates and need to receive updates several times a day or more. As a result, some of these values, like battery level, may change more rapidly and need frequent updates (again, every day or more often). While it may be efficient to add some or all these values to existing data packets, we recommend using caution when blending these operational values with data values. These packets are crucial for managing devices but may be superfluous when collecting data. Plus, sending data that doesn’t change, or changes very infrequently (such as firmware revision or parameter settings), with every data message is a waste of bandwidth and battery life.