事件告警

更新时间:2026-04-22 10:01:11LLM 副本以 Markdown 格式查看下载 PDF

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

开发指导

涉及组件

svc_api_ipc

API 说明

方案一:单图消息上报

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

/**
 * @brief Send an editable alarm to Tuya cloud and app.
 *
 * @param[in] snap_buffer: Address of the current snapshot buffer.
 * @param[in] snap_size: Size of the snapshot in bytes.
 * @param[in] name: Editable event type. NOTIFICATION_NAME_E.
 * @param[in] is_notify: Whether to send to message center. TRUE: Send; False: Not send.
 *
 * @return OPRT_OK on success. For other errors, 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 based on event.
 *
 * @param alarm: TUYA_ALARM_T
 *
 * @return  OPRT_OK on success. For other errors, please refer to tuya_error_code.h.
 */
OPERATE_RET tuya_ipc_trigger_alarm_without_event(IN TUYA_ALARM_T *alarm);

数据结构

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

typedef struct {
    INT_T type;                         ///< Alarm type
    TUYA_ALARM_BITMAP_T wait_for;       ///< Depends on other alarms.
    INT_T is_notify;                    ///< Notify the cloud.
    TIME_T trigger_time;
    TIME_T upload_time;                 ///< 0 means upload immediately; -1 means wait until the event ends.
    BOOL_T valid;                       ///< 1 means it needs to be handled; 0 means it has been 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 appended to the upload payload in JSON format (e.g., "aaa": 3). Set to NULL if not needed.
    CHAR_T *pic_buf;
    INT_T pic_size;
    TUYA_ALARM_TEXT_T *context;        ///< Text alarm information, can be NULL.
    INT_T context_cnt;                  ///< TUYA_ALARM_TEXT_T count, can be 0.
    NOTIFICATION_UNIT_T *media;         ///< Media information, can be NULL.
    INT_T media_cnt;                    ///< NOTIFICATION_UNIT_T count, can be 0.
    CHAR_T dev_id[DEV_ID_LEN+1];        ///< Device ID
    INT_T dev_chan_index;              ///< Device channel
} 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;

方案二:多模态消息上报

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

初始化

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

/**
 * @brief  Initialization of multiple images/audio's reporting.
 *
 * @return   OPRT_OK on success. For other errors, please refer to tuya_error_code.h. 
 */
OPERATE_RET tuya_ipc_event_multi_info_alarm_init(VOID);

上报首图/音频

该接口支持:单独上报图片或音频、同时上报图片和音频。

/**
 * @brief  Start a multi-info alarm.
 *
 * @param[in] alarm: Refer to TUYA_ALARM_MUTI_INFO_T.
 *
 * @param[out] max_pic_count: Maximum number of pictures supported for upload.
 *
 * @param[out] max_audio_count: Maximum number of audio files supported for upload.
 *
 * @param[out] status: Upload status. Refer to TUYA_MULTI_INFO_ALARM_MEDIA_STATUS_E for more information.
 *
 * @return  User handle.
 * - NULL: Failed to trigger the alarm.
 * - Other: Success. Users can use handle to upload more images or audio.
 */
TUYA_IPC_MULTI_INFO_ALARM_USER_HANDLE_T tuya_ipc_event_start_multi_info_alarm(IN TUYA_MULTI_INFO_ALARM_T *alarm, OUT UINT_T *max_pic_count, OUT UINT_T *max_audio_count, OUT TUYA_MULTI_INFO_ALARM_MEDIA_STATUS_E *status);

上报后续图片/音频

/** 
 * @brief  Append new information into a multi-info alarm .
 *
 * @param[in] handle: User handle returned by tuya_ipc_event_start_multi_info_alarm.
 *
 * @param[in] append_data: Append data. Refer to MULTI_INFO_ALARM_APPEND for more information.
 *
 * @return Upload status. Refer to TUYA_MULTI_INFO_ALARM_MEDIA_STATUS_E.
*/
TUYA_MULTI_INFO_ALARM_MEDIA_STATUS_E tuya_ipc_event_multi_info_alarm_append_data(TUYA_IPC_MULTI_INFO_ALARM_USER_HANDLE_T handle, MULTI_INFO_ALARM_APPEND *append_data);

停止上报

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

/** 
 * @brief  Stop a multi-info alarm.
 *
 * @warning   Start/Stop should be called in pair. 
 *
 * @param[in]   handle: User handle returned by tuya_ipc_event_start_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);

常见问题

上报频率有限制吗?

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

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 消息上是否配置了该报警类型。