设备端按需上报设备状态

由于设备端上报状态频繁,导致服务端保存大量无效数据,同时成本增加。所以希望通过app来控制设备上报状态的频次,以达到按需上报设备状态。

方案

下载 (3).svg

1708999498532-be7723f8-5b22-40b1-98e2-f34d4e093167.png

如何开始该功能

  1. 增加物模型getProperties,在产品注册时,增加该服务,如下:

    image

  2. 设备端SDK,请使用飞燕1.6.6-20版本。

  3. 默认该功能关闭,开启该功能,可以参考应用smart_outlet, 路径Products/example/smart_outlet;

    1. 在smart_outlet.mk 中打开宏开关GLOBAL_CFLAGS += -DREPORP_ON_DEMAND;

    2. 如果物模型中事件上报需要控制,在smart_outlet.mk打开宏开关GLOBAL_CFLAGS += -DDISABLE_EVENT_REPORT,否则不用打开;

    3. 根据产品的物模型定义,完善smart_outlet_main.c 文件中的函数void user_post_all_property(void),该函数主要是在设备上报状态窗口打开时被调用,用于上报一次设备的完整状态;

    4. 在smart_outlet_main.c 文件中static int user_connected_event_handler(void),连接完成后,上报一次状态后,关闭上报开关;

    @@ -234,6 +234,9 @@ static int user_connected_event_handler(void)
         }
     #endif
     
    +#ifdef REPORP_ON_DEMAND
    +    set_report_state(0);
    +#endif
         return 0;
     }
    
  4. 上报窗口时间 在report_on_demand.c 文件中,默认时间30s,客户可以按需修改:

    #define REPORT_TIMEOUT_MS (1 * 30 * 1000)

  5. 在smart_outlet.mk 中添加文件report_on_demand.c;

    @@ -36,7 +36,8 @@ $(NAME)_SOURCES := app_entry.c \
                        device_state_manger.c \
                        factory.c \
                        property_report.c \
    -                   msg_process_center.c
    +                   msg_process_center.c \
    +                   report_on_demand.c

patch 文件

说明

注意:若要实现设备端按需上报设备状态需将该文件diff.zip打在最新的SDK上!