nRF Cloud Alert
This library is an enhancement to the nRF Cloud library. It enables applications to generate and transmit messages that comply with the Alerts feature of nRF Cloud. Alert messages are compact JSON documents that indicate a critical event, such as low battery or unexpected reset.
Overview
This library provides an API for MQTT-, REST-, or CoAP-based applications to send alerts to nRF Cloud. For MQTT-based applications, you can enable or disable alerts remotely using the nRF Cloud portal or nRF Cloud REST API.
Each alert contains the following elements, as defined in the nrf_cloud_alert_info
structure :
type
- A value of thenrf_cloud_alert_type
enum.value
- Use0
if not otherwise needed.description
- Use NULL to suppress transmission of this field.sequence
- Sequence number used when no timestamp is available.ts_ms
- Timestamp if accurate time is known.
The range of the alert type enumeration is split into two parts:
Values less than
ALERT_TYPE_CUSTOM
are predefined.Values greater or equal to that are for application-specific use.
Use the alert value to indicate more information about an alert.
For example, for ALERT_TYPE_TEMPERATURE
, the alert value could be the temperature in degrees Celsius.
Use the description string to give more detail about a specific alert, if required.
The library sets the sequence number and timestamp automatically. The nRF Cloud Alert service uses these values to present the alerts in the actual sequence they were generated on the device.
Supported features
If the Date-Time library is enabled, and the current date and time are known, the timestamp field of the alert will be automatically set accordingly. Otherwise, the sequence number will be set to a monotonically-increasing value.
Requirements
The device must be connected to nRF Cloud before calling the nrf_cloud_alert_send()
function.
The nrf_cloud_rest_alert_send()
function initiates the connection as needed.
Configuration
Configure the following Kconfig options to enable or disable the library and to select the data transport method:
See Configuring and building an application for information on how to change configuration options.
Usage
To use this library, complete the following steps:
Include the
nrf_cloud_alert.h
file.Define a local variable of type
nrf_cloud_alert_info
.Initialize the structure members:
type
- A value of thenrf_cloud_alert_type
enum.value
- Use0
if not otherwise needed.description
- Use NULL to suppress transmission of this field.
Call the
nrf_cloud_alert_send()
function when connected to nRF Cloud using MQTT or CoAP.Call the
nrf_cloud_rest_alert_send()
when using REST.
Samples using the library
The following nRF Connect SDK samples use this library:
Limitations
For REST-based applications, you can enable or disable alerts only at compile time.
Dependencies
This library uses the following nRF Connect SDK libraries:
API documentation
include/net/nrf_cloud_alert.h
subsys/net/lib/nrf_cloud/src/nrf_cloud_alert.c
- group nrf_cloud_alert
Enums
-
enum nrf_cloud_alert_type
Alert type.
Values:
-
enumerator ALERT_TYPE_NONE
Placeholder; not meant to be sent.
-
enumerator ALERT_TYPE_DEVICE_NOW_ONLINE
Device finished booting.
-
enumerator ALERT_TYPE_DEVICE_NOW_ONLINE_WDT
Device finished rebooting from a watchdog timeout.
-
enumerator ALERT_TYPE_DEVICE_GOING_OFFLINE
Device is shutting down.
-
enumerator ALERT_TYPE_MSG
Generic message (see description field).
-
enumerator ALERT_TYPE_TEMPERATURE
Operating temperature outside of limits. Value is in degrees Celsius.
-
enumerator ALERT_TYPE_HUMIDITY
Operating humidity outside of limits. Value is in percent relative humidity.
-
enumerator ALERT_TYPE_BATTERY
Battery level too low. Value is in volts.
-
enumerator ALERT_TYPE_SHOCK
Shock and vibration limits exceeded. Value is in m/s^2.
-
enumerator ALERT_TYPE_CUSTOM
User-specific alerts start here.
-
enumerator ALERT_TYPE_NONE
Functions
-
int nrf_cloud_alert_send(enum nrf_cloud_alert_type type, float value, const char *description)
Transmit the specified alert to nRF Cloud using MQTT or CoAP.
- Parameters:
type – [in] The type of alert.
value – [in] Optional numeric value associated with the alert. If set to NRF_CLOUD_ALERT_UNUSED_VALUE, the library will not send this field to nRF Cloud.
description – [in] Optional text describing the alert.
- Returns:
0 if alert is successfully sent, otherwise, a negative error number.
-
int nrf_cloud_rest_alert_send(struct nrf_cloud_rest_context *const rest_ctx, const char *const device_id, enum nrf_cloud_alert_type type, float value, const char *description)
Transmit the specified alert to nRF Cloud using REST.
- Parameters:
rest_ctx – [inout] Context for communicating with nRF Cloud’s REST API.
device_id – [in] Null-terminated, unique device ID registered with nRF Cloud.
type – [in] The type of alert.
value – [in] Optional numeric value associated with the alert. If set to NRF_CLOUD_ALERT_UNUSED_VALUE, the library will not send this field to nRF Cloud.
description – [in] Optional text describing the alert.
- Returns:
0 if alert is successfully sent, otherwise, a negative error number.
-
void nrf_cloud_alert_control_set(bool alerts_enable)
Enable or disable use of alerts.
- Parameters:
alerts_enable – [in] Value for alerts enabled.
-
bool nrf_cloud_alert_control_get(void)
Find out if alerts are enabled.
- Returns:
current alert enablement status.
-
struct nrf_cloud_alert_info
- #include <nrf_cloud_alert.h>
Alert data.
Public Members
-
enum nrf_cloud_alert_type type
The type of alert this represents.
-
float value
A value associated with this alert.
-
const char *description
An optional human-readable description.
-
unsigned int sequence
A monotonically increasing alert counter used when current time not available.
-
int64_t ts_ms
UNIX epoch timestamp (in milliseconds) of the data. If a value <= NRF_CLOUD_NO_TIMESTAMP (0) is provided, the timestamp will be ignored.
-
enum nrf_cloud_alert_type type
-
enum nrf_cloud_alert_type