日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

設備影子

物聯網平臺提供的設備影子功能,用于緩存設備上報的狀態和下發的指令。設備在線時,可以直接獲取物聯網平臺指令;設備離線后,再次上線可以主動獲取物聯網平臺的指令。本文介紹通過配置C Link SDK,設備實現影子功能。

前提條件

背景信息

  • 設備影子是保存在物聯網平臺上的JSON文檔,用于緩存設備上報屬性(reported)數據和云上應用期望屬性(desired)數據。

    更多信息,請參見設備影子概覽

  • 設備影子的JSON格式表達方法,請參見設備影子JSON詳解
  • 設備影子的數據流轉過程,請參見設備影子數據流

使用流程

如下功能時序圖,以設備的應用程序demos/shadow_basic_demo.c為例,介紹設備影子的使用流程。

image..png

步驟一:設備初始化

創建設備句柄,完成設備建連。

static void* demo_device_init(char *product_key, char *device_name, char *device_secret, char *host, uint16_t port)
{
    int32_t res = STATE_SUCCESS;
    /* 創建設備 */
    void *device = aiot_device_create(product_key, device_name);
	....
    ....
        
    res = aiot_device_connect(device);
    
	....
    ....
    return device;
}

步驟二:設置設備影子模塊回調函數

    /* 設置設備影子模塊回調函數 */
    aiot_device_shadow_set_callback(device, demo_shadow_recv_callback, NULL);

步驟三:上報狀態到設備影子

使用如下示例代碼上報狀態到影子。

 /* 更新設備影子中的reported值, 同時將version重置為0 */
 aiot_device_shadow_update(device, "{\"LightSwitch\":1}", 0);

參數說明

參數

說明

device

設備句柄。

"{\"LightSwitch\":1}"

上報的影子屬性狀態。

0

設備影子的目標版本,版本號會隨著更新影子增加。

步驟四:應用程序更新期望狀態

  • 接收應用狀態。

     /* 當設備在線時, 若用戶應用程序調用云端API主動更新設備影子, 設備便會收到此消息 */
     case AIOT_SHADOWRECV_CONTROL: {
     const aiot_shadow_recv_control_t *control = &recv->data.control;
    
     printf("payload = \"%.*s\", version = %ld\r\n",
     control->payload_len,
     control->payload,
     (unsigned long)control->version);
     }
     break;
  • 上報最新狀態。

    /* 更新設備影子中的reported值, 同時將version重置為0 */ 
    aiot_device_shadow_update(device, "{\"LightSwitch\":1}", 0);
  • 設備清除期望屬性。

        /* 清除設備影子中的desired值, 同時將version設置為1 */
        aiot_device_shadow_clean_desired(device, 1);

步驟五:獲取設備影子屬性

 /* 發送請求拉取設備影子, 設備影子將在demo_shadow_recv_callback回調函數中返回 */
 aiot_device_shadow_get(device);

步驟六:刪除設備影子屬性

 /* 刪除設備影子中特定的reported值, 同時將version設置為2 */
 aiot_device_shadow_delete_reported(device, "{\"LightSwitch\":\"null\"}", 2);

步驟七:設備反初始化

 /* 斷開設備連接,并回收設備資源 */
 demo_device_deinit(device);