AliOS Things3.3.0基于LinkSDK上云的示例

简介: 本用例简单介绍了如何使用AliOS Things及HaaS开发板进行端云一体开发。
  1. 案例简介

linksdk_demo是Link SDK物模型单品上云最简示例。
其完成的主要功能包括:

系统板级初始化
内核基础组件初始化
网络配置
网络配置成功(获取ip后)创建Link SDK主线程
Link SDK参数配置
Link SDK初始化
创建独立线程用于MQTT保活及QoS1消息重发
创建独立线程用于下行数据接收
在Link SDK主任务中定时上报属性和事件
该示例的运行依赖下述基本功能完成对接:

AOS API
LwIP
MbedTLS
Link SDK

  1. 基础知识

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

  1. 物料清单

3.1 HaaS100 硬件

HaaS100 硬件简介
image.png

  1. 案例实现

4.1 硬件连接

该案例只需要连接电源线以及串口线,如下图所示:
image.png
注意:由于本案例需要使用Wi-Fi联网,需将标有2.4G/5.8G的天线连接到HaaS100 靠近USB口的天线端子上,如上图所示。
4.2 软件实现

4.2.1 云端创建产品

请先点击登陆物联网平台(未注册阿里云账户的用户,请先完成账户注册),按下面步骤一步步去打造
1、创建项目
注册登入后,如下图所示,前往管理控制台。
image.png

点击公共实例,进行产品创建
image.png

2、创建灯演示产品
点击创建产品,见下图所示,这里创建了一个名称“HaaS_Light”产品。

image.png

3、设备管理
在设备列表中增加对应产品的设备。
image.png

查看设备信息,并复制三元组用于设备端编程

image.png

创建后的设备三元组信息需要同步到设备端的开发代码段中,在4.2.2章节会介绍。待设备端开发结束,就可以在物联网平台中参看设备在线状态。

4.2.2 AliOS Things开发环境搭建

开发环境的搭建请参考 @ref HaaS100_Quick_Start (搭建开发环境章节),其中详细的介绍了AliOS Things 3.3的IDE集成开发环境的搭建流程。

4.2.3 linksdk_demo代码下载

物模型上云的代码下载请参考 @ref HaaS100_Quick_Start (创建工程章节),其中,
选择解决方案: “linksdk_demo”
选择开发板: HaaS100
4.2.4 设备端代码修改

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

1.修改三元组,使用4.2.1章节得到的三元组填入代码如下区域:

{
...
    /* TODO: 替换为自己设备的三元组 */
    char *product_key       = "此处请填入product_key";
    char *device_name       = "此处请填入device_name";
    char *device_secret     = "此处请填入device_secret";
...

4.2.5 代码编译、烧录

编译linksdk_demo的过程如下:

– 参考 @ref HaaS100_Quick_Start (3.1 编译工程章节),点击 ✅ 即可完成编译固件。

– 参考 @ref HaaS100_Quick_Start (3.2 烧录镜像章节),点击 “⚡️” 即可完成烧录固件。

4.3 调试

CLI命令行输入联网命令:

注意:ssid和password需要替换成自己的路由的ssid及密码

连上路由器后会自动连接到阿里云物联网平台。
4.3.1 关键日志

CLI日志:

[104.526][LK-0313] MQTT connect success in 1908 ms
AIOT_MQTTEVT_CONNECT

4.3.2 云端状态

在云端设备管理中,可以看到刚创建的设备状态由未激活变成了在线,说明此设备已成功上云。

image.png

  1. 扩展开发

上面案例我们仅通过修改三元组就让设备连接到了物联网平台。如何对设备进行功能开发,将数据从云端推送到设备或从设备推送到云端呢?

5.1 云端下发属性

5.1.2 设备端处理

设置云端数据回调函数:

{
   ...
   /* 配置消息接收处理回调函数 */
    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 云端下发

在设备界面点击在线调试功能

image.png

跳转到在线调试页面,进行属性调试
image.png

5.1.3 查看设备端日志

如下所示, {“LightSwitch”:1}的命令已经下发到设备端,开发者可以对此json字符串进行解析并用于设备控制。


[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 云端查看上报数据

在监控运维-日志服务中,可以查看设备上报的所有数据。
image.png
另外。物模型中主要数据类型处了属性外,还有服务和事件。具体详情请参考官网文档。

  1. 总结

本用例简单介绍了如何使用AliOS Things及HaaS开发板进行端云一体开发。了解更多连云相关知识请参考Link SDK编程手册。

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
移动开发 运维 监控
AliOS Things 3.3.0:HaaS100快速上云
AliOS Things 3.3.0:HaaS100快速上云
AliOS Things 3.3.0:HaaS100快速上云
|
安全 物联网 云栖大会
【云栖大会】AliOS Things宣布开源,支持物联网设备快速上云
AliOS是驱动万物智能的开始,我们将定义一个不同于PC和移动时代的物联网操作系统。
10397 0
|
传感器 消息中间件 物联网
HCIA物联网初级考试-第五章物联网操作系统及感知层开发介绍
HCIA物联网初级考试-第五章物联网操作系统及感知层开发介绍
HCIA物联网初级考试-第五章物联网操作系统及感知层开发介绍
|
算法 AliOS-Things 物联网
HaaS100开发调试系列 之 定位AliOS Things内存及Crash问题
本文主要说开发调试过程中经常遇到的内存问题。
341 15
HaaS100开发调试系列 之 定位AliOS Things内存及Crash问题
|
AliOS-Things 物联网 编译器
使用HaaS Studio开发AliOS Things C/C++应用
本文章将介绍使用HaaS Studio 进行AliOS-Things C/C++应用开发。
使用HaaS Studio开发AliOS Things C/C++应用
|
NoSQL 物联网
使用线上的开发板做开发调试 |《AliOS Things快速开发指南》
当您手上没有现成可用的开发板时,也可以使用线上的开发板来调试验证您的程序。本文主要介绍线上开发板的使用流程。
使用线上的开发板做开发调试 |《AliOS Things快速开发指南》
|
监控 AliOS-Things 物联网
使用线下开发板进行开发调试 |《AliOS Things快速开发指南》
本文主要介绍如何使用VSCode进行项目编译、固件烧录及串口监控。
使用线下开发板进行开发调试 |《AliOS Things快速开发指南》
|
域名解析 JSON AliOS-Things
AliOS Things 开发:让你的开发板支持 AliOS Studio 烧录
本文主要为大家讲解如何进行 AliOS Studio 烧录。
1115 0
AliOS Things 开发:让你的开发板支持 AliOS Studio 烧录
|
物联网 NoSQL Windows
AliOS Things开发:让你的开发板支持AliOS Studio调试
在AliOS-Things 2.1版本之后,AliOS Studio提供了一套简单易懂的接口可以让开发者很容易适配开发板支持调试功能。
AliOS Things开发:让你的开发板支持AliOS Studio调试
|
NoSQL 物联网 AliOS-Things
AliOS Things开发:让你的开发板支持AliOS Studio调试
简介 在AliOS-Things 2.1版本之后,AliOS Studio提供了一套简单易懂的接口可以让开发者很容易适配开发板支持调试功能。可以支持大部分的调试接口,比如ST-Link、JLink、CMSIS-DAP等。
3388 0
AliOS Things开发:让你的开发板支持AliOS Studio调试
下一篇
DataWorks