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

WI-FI設備連接阿里云示例

更正文檔

1. 案例簡介

linksdk_demo是Link SDK物模型單品上云最簡示例。

其完成的主要功能包括:

  • 系統板級初始化

  • 內核基礎組件初始化

  • 網絡配置

  • 網絡配置成功(獲取IP后)創建Link SDK主線程

  • Link SDK參數配置

  • Link SDK初始化

  • 創建獨立線程用于MQTT保活及QoS1消息重發

  • 創建獨立線程用于下行數據接收

  • 在Link SDK主任務中定時上報屬性和事件

該示例的運行依賴下述基本功能完成對接:

  • AOS API

  • LwIP

  • MbedTLS

  • Link SDK

2. 基礎知識

2.1 基礎目錄結構

.
├── data_model_basic_demo.c  # Link SDK 物模型單品演示例程
├── main.c                   # 網絡配置及SDK啟動入口
├── maintask.c               # 系統主任務入口處理,入口**aos_maintask**
├── Makefile                 # aos make編譯時入口
├── package.yaml             # 編譯系統配置文件
├── README.md                # 本說明文檔
└── SConstruct               # Makefile => Scon => aostools

3. 物料清單

3.1 HaaS100 硬件

HaaS 100 硬件規格

4. 案例實現

4.1 硬件連接

該案例只需要連接電源線以及串口線,如下圖所示:

注意:由于本案例需要使用Wi-Fi聯網,需將標有2.4G/5.8G的天線連接到HaaS100 靠近USB口的天線端子上,如上圖所示。

4.2 軟件實現

4.2.1 云端創建產品

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

1、創建項目

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

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

2、創建燈演示產品

點擊創建產品,見下圖所示,這里創建了一個名稱“HaaS_Light”產品。

3、設備管理

在設備列表中增加對應產品的設備。

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

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

4.2.2 AliOS Things開發環境搭建

開發環境的搭建請參考搭建開發環境,其中詳細的介紹了AliOS Things 3.3的IDE集成開發環境的搭建流程。

4.2.3 linksdk_demo代碼下載

物模型上云的代碼下載請參考創建工程,其中,

選擇解決方案:“linksdk_demo”選擇開發板:HaaS100

4.2.4 設備端代碼修改

演示用例路徑為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";
...

4.2.5 代碼編譯、燒錄

編譯linksdk_demo的過程如下:

-- 編譯固件可參考編譯固件

-- 燒錄固件可參考燒錄固件

4.3 調試

CLI命令行輸入聯網命令:

netmgr -t wifi -c ssid password

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

連上路由器后會自動連接到阿里云物聯網平臺。

4.3.1 關鍵日志

CLI日志:

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.2 云端狀態

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

5. 擴展開發

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

5.1 云端下發屬性

5.1.2 設備端處理

設置云端數據回調函數:

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.3 云端下發

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

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

5.1.4 查看設備端日志

如下所示, {"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. 總結

本用例簡單介紹了如何使用AliOS Things及HaaS開發板進行端云一體開發。了解更多連云相關知識請參考Link SDK使用說明