【分享】TuyaOS中控全局订阅
Posted: 2024年 Jul 2日 14:37
一般情况下,中控sdk对设备进行控制、获取信息的时候,需要调用tuya_home_ctrl_dev_open,先获取设备的句柄,然后才可以对设备进行操作。这种方式,会在获取句柄的过程中,占用了部分内存;同时,句柄和设备dev_id的映射关系还需要应用层自己存储对应关系。所以,SDK对于经常使用的一些特性,提供了一些全局接口。
Code: Select all
tuya_home_ctrl_subscribe_dev_online //订阅设备上下线事件
tuya_home_ctrl_subscribe_dev_shortcut //订阅设备快捷开关事件
tuya_home_ctrl_subscribe_dp_name_update //订阅设备dp名称改变事件
tuya_home_ctrl_subscribe_dev_change //订阅设备增加/删除/改变/同步事件
tuya_home_ctrl_subscribe_dev_icon_update //订阅设备图标更新事件
tuya_home_ctrl_subscribe_dev_name_update //订阅设备名称更新事件
tuya_home_ctrl_subscribe_scene_change //订阅场景增加/删除事件
tuya_home_ctrl_subscribe_scene_icon_update //订阅场景图标更新事件
tuya_home_ctrl_subscribe_scene_name_update //订阅场景名称更新事件
tuya_home_ctrl_subscribe_dev_dps_update //订阅设备指令集更新事件
tuya_home_ctrl_subscribe_room_change //订阅房间改变事件
特别的,对于tuya_home_ctrl_subscribe_dev_change和tuya_home_ctrl_subscribe_scene_change,也提供了设备和场景的同步事件的通知,可以替代原来的tuya_home_init_ex里的cbs.all_info_sync_cb。原来的同步接口,在很多情况下,例如设备图片改变、设备名称改变、设备增删都回推送,导致应用层多次更新全部设备信息,会影响应用层效率,所以,可以使用以上接口,接受精细化推送,仅针对变动的设备的进行数据更新。同时,为了兼容原来的代码,tuya_home_init_ex里的cbs.all_info_sync_cb也同时推送。如果做精细化推送的改造,可以忽略tuya_home_init_ex里的cbs.all_info_sync_cb的推送