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

HaaS100 快速上云

更正文檔

1.概括

本文檔介紹如何通過AliOS Things3.3快速連接到阿里云物聯網云平臺,并進行數據交互。

2. 云端準備工作

2.1 注冊登錄

請先點擊登錄物聯網平臺(未注冊阿里云賬戶的用戶,請先完成賬戶注冊),按下面步驟一步步去打造。

2.2 創建產品

注冊登入后,如下圖所示,前往管理控制臺

點擊公共實例,進行產品創建

創建燈演示產品點擊創建產品,見下圖所示,這里創建了一個名稱“HaaS_Light”產品。選擇標準品類/智能生活/電工照明/燈。當然你也可以選擇其他品類活自定義品類,但是需要注意保持設備端處理的數據類型與云端定義一致。

2.3 創建設備

在設備列表中增加對應產品的設備。本例程中創建了一個light01的設備:

查看設備信息,并復制設備證書(ProductKey、DeviceName、DeviceSecret)用于設備端編程

創建后的設備設備證書(ProductKey、DeviceName、DeviceSecret)信息需要同步到設備端的開發代碼段中,在3章節會介紹。待設備端開發結束,就可以在物聯網平臺中參看設備在線狀態。

3. 設備端開發

3.1 AliOS Things開發環境搭建

開發環境的搭建請參考《AliOS Things集成開發環境使用說明之搭建開發環境》,其中詳細的介紹了AliOS Things 3.3的IDE集成開發環境的搭建流程。

3.2 linksdk_demo代碼下載

物模型上云的代碼下載請參考《AliOS Things集成開發環境使用說明之創建工程》,其中,

選擇解決方案: “Wi-Fi設備連接阿里云示例,選擇開發板: HaaS100

3.3 設備端代碼修改

演示用例路徑為solutions/{your_project}/data_model_basic_demo.c 此演示用例演示Link SDK物模型單品上云的功能。注意:{your_project} 為studio中創建的工程名(基于linksdk_demo模板)

1.修改設備證書(ProductKey、DeviceName、DeviceSecret),使用4.2.1章節得到的設備證書(ProductKey、DeviceName、DeviceSecret)填入代碼如下區域:

int demo_main(int argc, char *argv[])
{
...
    /* TODO: 替換為自己設備的三元組 */
    char *product_key       = "此處請填入product_key";
    char *device_name       = "此處請填入device_name";
    char *device_secret     = "此處請填入device_secret";
...

3.4 代碼編譯、燒錄

編譯linksdk_demo的過程如下:

-- 編譯固件可參考《AliOS Things集成開發環境使用說明之編譯固件》

-- 燒錄固件可參考《AliOS Things集成開發環境使用說明之燒錄固件》

4. 調試

4.1 聯網

設備上電后,連接串口,CLI命令行輸入聯網命令:

netmgr -t wifi -c ssid password

注意:ssid和password需要替換成自己的路由的ssid及密碼。

連上路由器后會觸發Link SDK主任務運行,并自動連接到阿里云物聯網平臺。

4.2 設備端關鍵日志

串口輸出:

success to establish mbedtls connection, fd = 3(cost 0 bytes in total, max used 0 bytes)
[104.526][LK-0313] MQTT connect success in 1908 ms
AIOT_MQTTEVT_CONNECT

4.3 云端狀態

在云端設備管理中,可以看到剛創建的設備狀態由未激活變成了在線,說明此設備已成功上云。

5. 擴展開發

上面案例我們僅通過修改設備證書(ProductKey、DeviceName、DeviceSecret)就讓設備連接到了物聯網平臺。如何對設備進行功能開發,將數據從云端推送到設備或從設備推送到云端呢?

5.1云端下發屬性

5.1.1 設備端處理

設置云端數據回調函數:

int demo_main(int argc, char *argv[])
{
   ...
   /* 配置消息接收處理回調函數 */
    aiot_dm_setopt(dm_handle, AIOT_DMOPT_RECV_HANDLER, (void *)demo_dm_recv_handler);
   ...
}

在用戶回調函數中捕獲AIOT_DMRECV_PROPERTY_SET事件,即云端設置屬性的事件:

    /* 用戶數據接收處理回調函數 */
static void demo_dm_recv_handler(void *dm_handle, const aiot_dm_recv_t *recv, void *userdata)
{
    printf("demo_dm_recv_handler, type = %d\r\n", recv->type);

    switch (recv->type) {
        /* 屬性設置 */
        case AIOT_DMRECV_PROPERTY_SET: {
            printf("msg_id = %ld, params = %.*s\r\n",
                   (unsigned long)recv->data.property_set.msg_id,
                   recv->data.property_set.params_len,
                   recv->data.property_set.params);

            /* TODO: 以下代碼演示如何對來自云平臺的屬性設置指令進行應答, 用戶可取消注釋查看演示效果 */
            {
                aiot_dm_msg_t msg;

                memset(&msg, 0, sizeof(aiot_dm_msg_t));
                msg.type = AIOT_DMMSG_PROPERTY_SET_REPLY;
                msg.data.property_set_reply.msg_id = recv->data.property_set.msg_id;
                msg.data.property_set_reply.code = 200;
                msg.data.property_set_reply.data = "{}";
                int32_t res = aiot_dm_send(dm_handle, &msg);
                if (res < 0) {
                    printf("aiot_dm_send failed\r\n");
                }
            }
        }
        break;
        ...
  }

5.1.2 云端下發

在設備界面點擊在線調試功能

跳轉到在線調試頁面,進行屬性調試

5.1.3 查看設備端日志

如下所示, {"LightSwitch":1}的命令已經下發到設備端,開發者可以對此JSON字符串進行解析并用于設備控制。

[1606.833][LK-0309] pub: /sys/a1duSiRzIXc/light01/thing/service/property/set

[LK-030A] < 7B 22 6D 65 74 68 6F 64  22 3A 22 74 68 69 6E 67 | {"method":"thing
[LK-030A] < 2E 73 65 72 76 69 63 65  2E 70 72 6F 70 65 72 74 | .service.propert
[LK-030A] < 79 2E 73 65 74 22 2C 22  69 64 22 3A 22 31 35 39 | y.set","id":"159
[LK-030A] < 30 36 35 31 30 33 31 22  2C 22 70 61 72 61 6D 73 | 0651031","params
[LK-030A] < 22 3A 7B 22 4C 69 67 68  74 53 77 69 74 63 68 22 | ":{"LightSwitch"
[LK-030A] < 3A 31 7D 2C 22 76 65 72  73 69 6F 6E 22 3A 22 31 | :1},"version":"1
[LK-030A] < 2E 30 2E 30 22 7D                                | .0.0"}

[1606.835][LK-0A08] DM recv property set
demo_dm_recv_handler, type = 1
msg_id = 1590651031, params = {"LightSwitch":1}

5.2 設備上報屬性

5.2.1 設備端處理

為了演示方便,我們在主任務中定時上報屬性。在具體業務中,屬性上報可在其他線程中觸發。

    /* 主循環進入休眠 */
    while (1) {
        /* TODO: 以下代碼演示了簡單的屬性上報和事件上報, 用戶可取消注釋觀察演示效果 */
        demo_send_property_post(dm_handle, "{\"LightSwitch\": 0}");
        aos_msleep(10000);
    }

5.2.2 云端查看上報數據

在監控運維-日志服務中,可以查看設備上報的所有數據。

另外。物模型中主要數據類型處了屬性外,還有服務和事件。具體詳情請參考官網文檔

6. 總結

回顧一下整個流程,可概括為:

  • 云端創建產品和設備

  • 設備端設置設備證書(ProductKey、DeviceName、DeviceSecret)

  • 設備端設置接收回調函數捕獲下行數據

  • 設備端調用屬性/事件上報接口發送上行數據

通過本案例可以發現,使用AliOS Things連接到阿里云物聯網平臺并進行數據交互開發的流程非常簡單,趕緊試試吧。