事件告警

更新时间:2025-12-04 08:29:12下载pdf

事件报警是一个将设备产生的移动侦测、人形、宠物、门铃呼叫等智能事件发送到云端,并最终在 App 上展示的功能模块。它支持普通的图片消息,也支持视频消息,还能够支持门铃呼叫的 App 弹窗消息。

开发指导

涉及组件

svc_api_ipc

API 说明

方案一

使用 DP 212 消息上报一个报警信息。若报警类型包含在 NOTIFICATION_NAME_E (位于tuya_ipc_notify.h)的枚举中,可以直接使用下面接口上报。

/**
 * @brief send a editable alarm to tuya cloud and APP
 *
 * @param[in] snap_buffer: address of current snapshot
 * @param[in] snap_size: size fo snapshot, in Byte
 * @param[in] name: editable event type, NOTIFICATION_NAME_E
 * @param[in] is_notify: send to message center if TRUE
 *
 * @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
 */
OPERATE_RET tuya_ipc_notify_alarm(IN CONST CHAR_T *snap_buffer, IN CONST UINT_T snap_size, IN CONST NOTIFICATION_NAME_E name, IN BOOL_T is_notify);

方案二

NOTIFICATION_NAME_E 中未列举出的事件类型,请查看是否在 TUYA_ALARM_TYPE_E(位于tuya_ipc_event.h)中列出,如果包含,可以使用下面接口进行上报。

/**
 * @brief notify an alarm not base on event
 *
 * @param alarm: TUYA_ALARM_T
 *
 * @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
 */
OPERATE_RET tuya_ipc_trigger_alarm_without_event(IN TUYA_ALARM_T *alarm);

方案三:多图上报

若一个报警事件里包含多张图片(需在 PID 上开通相关高级能力),请依次使用下面的接口进行上报。

初始化

初始化接口调用一次即可。

/**
 * @brief initialization of multiple images reporting
 *
 * @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h 
 */
OPERATE_RET tuya_ipc_event_multi_info_alarm_init();

上报首图

/** 
 * @brief trigger multi info alarm
 *
 * @param[in] alarm: TUYA_ALARM_T
 *
* @param[out] max_info_count: maximum supported number of uploaded info
* 
 * @return user handle
 * - NULL: trigger failed
 * - Other: triggger success
*/
TUYA_IPC_MULTI_INFO_ALARM_USER_HANDLE_T tuya_ipc_event_trigger_multi_info_alarm(IN TUYA_ALARM_T *alarm, OUT UINT_T *max_info_count);

上报后续图片

/** 
 * @brief append new info into a multi alarm
 *
 * @param[in] handle:user handle return by tuya_ipc_event_trigger_multi_info_alarm
 *
 * @param[in] data: info data
 *
 * @param[in] data_size: data size
 *
 * @param[in] append_data_index:1st data -> index 1
 *
 * @return error code
 * - OPRT_OK      success
 * - Others       failed
*/
OPERATE_RET tuya_ipc_event_multi_info_alarm_append_data(TUYA_IPC_MULTI_INFO_ALARM_USER_HANDLE_T handle, CHAR_T *data, UINT_T data_size, UINT_T append_data_index);

停止上报

在所有图片上传完毕时,或者提前结束上报,需调用停止上报接口。

/** 
 * @brief  stop multi info alarm
 *
 * @warning trigger/stop should be called in pair like file
 *
 * @param[in]   handle: user handle return by tuya_ipc_event_trigger_multi_info_alarm
 * @return error code
 * - OPRT_OK      success
 * - Others       failed
*/
OPERATE_RET tuya_ipc_event_stop_multi_info_alarm(TUYA_IPC_MULTI_INFO_ALARM_USER_HANDLE_T handle);

数据结构

表示报警详情的数据结构体:

typedef struct {
    INT_T type;                         ///< alarm type
    TUYA_ALARM_BITMAP_T wait_for;       ///< depends on other alarms
    INT_T is_notify;                    ///< notify to cloud
    TIME_T trigger_time;
    TIME_T upload_time;                 ///< 0 means immediately and -1 means wait until event end
    BOOL_T valid;                       ///< 1 means needs to handle and 0 means had handled. user should set to 1
    BOOL_T force;                       ///< force upload or not, independent with event like E_ALARM_COVER
    INT_T resource_type;                ///< refer to macro RESOURCE_XXX
    CHAR_T *extra_data;                 ///< extra data append to upload info, json format: "aaa":3. NULL if not need
    CHAR_T *pic_buf;
    INT_T pic_size;
    TUYA_ALARM_TEXT_T *context;        ///< text alarm info, can be NULL
    INT_T context_cnt;                  ///< TUYA_ALARM_TEXT_T count, can be 0
    NOTIFICATION_UNIT_T *media;         ///< media info, can be NULL
    INT_T media_cnt;                    ///< NOTIFICATION_UNIT_T count, can be 0
    CHAR_T dev_id[DEV_ID_LEN+1];        ///< deive id
    INT_T dev_chan_index;              ///< device channle
} TUYA_ALARM_T;

若仅上报一个图片事件,参考以下初始化的值:

TUYA_ALARM_T alarm_info = {0};
alarm_info.type = ; //报警类型
alarm_info.is_notify = ; //消息中心开关状态
alarm_info.trigger_time = tal_time_get_posix(); //当前时间
alarm_info.upload_time = 0;
alarm_info.valid = 1;
alarm_info.force = 1;
alarm_info.resource_type = RESOURCE_PIC;
alarm_info.pic_buf = ; //图片 buffer 地址
alarm_info.pic_size = ; //图片 buffer 长度
alarm_info.extra_data = NULL;
alarm_info.context = NULL;
alarm_info.context_cnt = 0;
alarm_info.media = NULL;
alarm_info.media_cnt = 0;

若不上报图片,参考以下初始化的值:

TUYA_ALARM_T alarm_info = {0};
alarm_info.type = ; //报警类型
alarm_info.is_notify = ; //消息中心开关状态
alarm_info.trigger_time = tal_time_get_posix(); //当前时间
alarm_info.upload_time = 0;
alarm_info.valid = 1;
alarm_info.force = 1;
alarm_info.resource_type = RESOURCE_TEXT;
alarm_info.pic_buf = NULL; 
alarm_info.pic_size = 0; 
alarm_info.extra_data = NULL;
alarm_info.context = ; //文本 buffer 地址。若不需要,设置成 NULL
alarm_info.context_cnt = ; //文本 buffer 长度。若不需要,设置成 0
alarm_info.media = NULL;
alarm_info.media_cnt = 0;

常见问题

上报频率有限制吗?

  • 建议每个移动侦测事件,上报一条消息。
  • 建议对移动侦测的判断,加入一定的去抖时间。

App 上关闭了移动侦测开关后,这个接口需要做哪些处理??

支持的事件类型有哪些?

  • NOTIFICATION_NAME_E 已经列出的事件。
  • TUYA_ALARM_TYPE_E 已经列出的事件。
  • 如果您需要自行新增事件类型,请 提交工单 联系涂鸦。

新增某事件类型,但提示报错?

如新增事件类型 XXX,提示报错:[tuya_ipc_event.c] unsupport type: XXX

如出现此情况,需要确认以下两点:

  • PID 上是否已成功新增此事件类型。
  • 新增事件类型后,设备需要重新配网激活,才能生效。

图片的安全如何保证?

  • 图片内容为数据加密和传输通道加密。
  • 消息为传输通道加密。

支持的图片类型有哪些?

JPEG 格式。

支持的图片大小范围是多少?

要求小于 307120 Byte。

如何知道是否上报成功?

  • 日志中关注 https 是否将图片推送成功,以及 DP 212 的消息是否发送成功。
  • 涂鸦开发者平台 上通过 产品 > 设备管理,输入设备 ID 来查询 DP 212 是否上报成功。

查询到事件上报成功,但为什么消息中心不显示?

提交工单 联系涂鸦技术支持,确认设备的 PID 上 DP 212 消息上是否配置了该报警类型。