由于设备端上报状态频繁,导致服务端保存大量无效数据,同时成本增加。所以希望通过app来控制设备上报状态的频次,以达到按需上报设备状态。
方案
如何开始该功能
增加物模型getProperties,在产品注册时,增加该服务,如下:
设备端SDK,请使用飞燕1.6.6-20版本。
默认该功能关闭,开启该功能,可以参考应用smart_outlet, 路径Products/example/smart_outlet;
在smart_outlet.mk 中打开宏开关GLOBAL_CFLAGS += -DREPORP_ON_DEMAND;
如果物模型中事件上报需要控制,在smart_outlet.mk打开宏开关GLOBAL_CFLAGS += -DDISABLE_EVENT_REPORT,否则不用打开;
根据产品的物模型定义,完善smart_outlet_main.c 文件中的函数void user_post_all_property(void),该函数主要是在设备上报状态窗口打开时被调用,用于上报一次设备的完整状态;
在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; }
上报窗口时间 在report_on_demand.c 文件中,默认时间30s,客户可以按需修改:
#define REPORT_TIMEOUT_MS (1 * 30 * 1000)
在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上!
文档内容是否对您有帮助?