AliOS Things 3.3.0:HaaS100快速上云

简介: AliOS Things 3.3.0:HaaS100快速上云

1. 概括

本文档介绍如何通过AliOS Things3.3快速连接到阿里云物联网云平台,并进行数据交互。

2. 云端准备工作

2.1 注册登陆

请先点击登陆物联网平台(未注册阿里云账户的用户,请先完成账户注册),按下面步骤一步步去打造。

2.2 创建产品

  • 注册登入后,如下图所示,前往管理控制台。

  • 点击公共实例,进行产品创建

  • 创建灯演示产品 点击创建产品,见下图所示,这里创建了一个名称“HaaS_Light”产品。选择标准品类/智能生活/电工照明/灯。 当然你也可以选择其他品类活自定义品类,但是需要注意保持设备端处理的数据类型与云端定义一致。

2.3 创建设备

在设备列表中增加对应产品的设备。本例程中创建了一个light01的设备:

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

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

3. 设备端开发

3.1 AliOS Things开发环境搭建

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

3.2 linksdk_demo代码下载

物模型上云的代码下载请参考 HaaS100_Quick_Start (创建工程章节),其中,

选择解决方案: “linksdk_demo” 选择开发板: HaaS100

3.3 设备端代码修改

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

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

  1. int demo_main(int argc, char *argv[])
  2. {
  3. ...
  4. /* TODO: 替换为自己设备的三元组 */
  5. char *product_key = "此处请填入product_key";
  6. char *device_name = "此处请填入device_name";
  7. char *device_secret = "此处请填入device_secret";
  8. ...

3.4 代码编译、烧录

编译linksdk_demo的过程如下:

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

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

烧写步骤可以参考 HaaS100_Quick_Start。

4. 调试

4.1 联网

设备上电后,连接串口,CLI命令行输入联网命令:

netmgr -t wifi -c ssid password

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

连上路由器后会触发Link SDK主任务运行,并自动连接到阿里云物联网平台。

4.2 设备端关键日志

串口输出:

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

4.3 云端状态

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

5. 扩展开发

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

5.1 云端下发属性

5.1.2 设备端处理

设置云端数据回调函数:

  1. int demo_main(int argc, char *argv[])
  2. {
  3. ...
  4. /* 配置消息接收处理回调函数 */
  5. aiot_dm_setopt(dm_handle, AIOT_DMOPT_RECV_HANDLER, ( void *)demo_dm_recv_handler);
  6. ...
  7. }

在用户回调函数中捕获AIOT_DMRECV_PROPERTY_SET事件,即云端设置属性的事件:

  1. /* 用户数据接收处理回调函数 */
  2. static void demo_dm_recv_handler(void *dm_handle, const aiot_dm_recv_t *recv, void *userdata)
  3. {
  4. printf( "demo_dm_recv_handler, type = %d\r\n", recv->type);
  5. switch (recv->type) {
  6. /* 属性设置 */
  7. case AIOT_DMRECV_PROPERTY_SET: {
  8. printf( "msg_id = %ld, params = %.*s\r\n",
  9. ( unsigned long)recv->data.property_set.msg_id,
  10. recv->data.property_set.params_len,
  11. recv->data.property_set.params);
  12. /* TODO: 以下代码演示如何对来自云平台的属性设置指令进行应答, 用户可取消注释查看演示效果 */
  13. {
  14. aiot_dm_msg_t msg;
  15. memset(&msg, 0, sizeof( aiot_dm_msg_t));
  16. msg.type = AIOT_DMMSG_PROPERTY_SET_REPLY;
  17. msg.data.property_set_reply.msg_id = recv->data.property_set.msg_id;
  18. msg.data.property_set_reply.code = 200;
  19. msg.data.property_set_reply.data = "{}";
  20. int32_t res = aiot_dm_send(dm_handle, &msg);
  21. if (res < 0) {
  22. printf( "aiot_dm_send failed\r\n");
  23. }
  24. }
  25. }
  26. break;
  27. ...
  28. }

5.1.3 云端下发

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

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

5.1.4 查看设备端日志

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

  1. [ 1606.833][ LK-0309] pub: /sys/a1duSiRzIXc/light01/thing/service/property/set
  2. [ LK-030A] < 7B 22 6D 65 74 68 6F 64 22 3A 22 74 68 69 6E 67 | { "method" :"thing
  3. [ LK-030A] < 2E 73 65 72 76 69 63 65 2E 70 72 6F 70 65 72 74 | .service.propert
  4. [ LK-030A] < 79 2E 73 65 74 22 2C 22 69 64 22 3A 22 31 35 39 | y.set", "id" :"159
  5. [ LK-030A] < 30 36 35 31 30 33 31 22 2C 22 70 61 72 61 6D 73 | 0651031 "," params
  6. [ LK-030A] < 22 3A 7B 22 4C 69 67 68 74 53 77 69 74 63 68 22 | ":{" LightSwitch"
  7. [ LK-030A] < 3A 31 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 | :1} ,"version":"1
  8. [ LK-030A] < 2E 30 2E 30 22 7D | .0 .0 "}
  9. [1606.835][LK-0A08] DM recv property set
  10. demo_dm_recv_handler, type = 1
  11. msg_id = 1590651031, params = {" LightSwitch":1}

5.2 设备上报属性

5.2.1 设备端处理

为了演示方便,我们在主任务中定时上报属性。在具体业务中,属性上报可在其他线程中触发。

  1. /* 主循环进入休眠 */
  2. while ( 1) {
  3. /* TODO: 以下代码演示了简单的属性上报和事件上报, 用户可取消注释观察演示效果 */
  4. demo_send_property_post(dm_handle, "{\"LightSwitch\ ": 0}");
  5. aos_msleep( 10000);
  6. }

5.2.2 云端查看上报数据

在监控运维-日志服务中,可以查看设备上报的所有数据。

另外。物模型中主要数据类型处了属性外,还有服务和事件。具体详情请参考官网文档

6. 总结

回顾一下整个流程,可概括为:

  • 云端创建产品和设备
  • 设备端设置三元组
  • 设备端设置接收回调函数捕获下行数据
  • 设备端调用属性/事件上报接口发送上行数据

通过本案例可以发现,使用AliOS Things连接到阿里云物联网平台并进行数据交互开发的流程非常简单,赶紧试试吧。

开发者技术支持

如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号

更多技术与解决方案介绍,请访问阿里云AIoT首页https://iot.aliyun.com/

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
移动开发 运维 监控
AliOS Things3.3.0基于LinkSDK上云的示例
本用例简单介绍了如何使用AliOS Things及HaaS开发板进行端云一体开发。
AliOS Things3.3.0基于LinkSDK上云的示例
|
安全 物联网 云栖大会
【云栖大会】AliOS Things宣布开源,支持物联网设备快速上云
AliOS是驱动万物智能的开始,我们将定义一个不同于PC和移动时代的物联网操作系统。
10334 0
|
物联网 Linux
【AliOS Things学习笔记】为你的AliOS Things应用增加自定义cli命令
怎么才能在RTOS系统中,通过 串口shell控制LED的开关。
3584 0
|
AliOS-Things 物联网 编译器
使用HaaS Studio开发AliOS Things C/C++应用
本文章将介绍使用HaaS Studio 进行AliOS-Things C/C++应用开发。
使用HaaS Studio开发AliOS Things C/C++应用
|
传感器 存储 移动开发
使用AliOS Things快速构建温度计应用 |《AliOS Things快速开发指南》
本文是基于AliOS Things 3.1快速构建温度计的应用场景。涉及AliOS Things组件开发,构建AliOS Things用户项目,AliOS Things HAL API使用,向AliOS Things中添加并使用组件。用到的硬件设备有半导体开发板、温度传感器、数码管显示器。
使用AliOS Things快速构建温度计应用 |《AliOS Things快速开发指南》
|
域名解析 移动开发 数据可视化
使用 AliOS Things 3.0 快速构建用户应用 BlinkAPP
AliOS Things 3.0版本于去年9月份在云栖大会正式发布,在新版本中带来了全新的应用开发框架,帮助用户快速构建自己的应用。使用户可以更专注于自身应用的开发。本文将已BlinkAPP为例,为大家演示如何快速使用应用开发框创建项目并完成应用代码编写。
911 0
使用 AliOS Things 3.0 快速构建用户应用 BlinkAPP
|
物联网 AliOS-Things 机器人
AliOS Things 3.0 应用笔记:摄像头配网 + 钉钉群通知 + 天气显示
距离 AliOS Things 3.0 上线已经有一段时间了,新版的 AliOS Things 3.0 体验感到底如何呢?本文将为大家详细讲解其应用实例,我们分别从运行流程、效果展示、操作流程以及源码讲解四个方面进行了阐述。
1700 0
|
物联网 传感器 API
AliOS Things 3.0应用笔记:http client简单应用
AliOS Things 3.0版本新增加了httpc组件(http 客户端组件),httpc组件支持多种RESTful的API调用,包括GET、POST、PUT、HEAD等,也支持https安全协议。
12208 1
|
物联网 机器人 AliOS-Things