AliOS Things3.3.0基于LinkSDK上云的示例
- 案例简介
linksdk_demo是Link SDK物模型单品上云最简示例。
其完成的主要功能包括:
系统板级初始化
内核基础组件初始化
网络配置
网络配置成功(获取ip后)创建Link SDK主线程
Link SDK参数配置
Link SDK初始化
创建独立线程用于MQTT保活及QoS1消息重发
创建独立线程用于下行数据接收
在Link SDK主任务中定时上报属性和事件
该示例的运行依赖下述基本功能完成对接:
(福利推荐:阿里云、腾讯云、华为云服务器最新限时优惠活动,云服务器1核2G仅88元/年、2核4G仅698元/3年,点击这里立即抢购>>>)
AOS API
LwIP
MbedTLS
Link SDK
- 基础知识
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.1 HaaS100 硬件
HaaS100 硬件简介
- 案例实现
4.1 硬件连接
该案例只需要连接电源线以及串口线,如下图所示:
注意:由于本案例需要使用Wi-Fi联网,需将标有2.4G/5.8G的天线连接到HaaS100 靠近USB口的天线端子上,如上图所示。
4.2 软件实现
4.2.1 云端创建产品
请先点击登陆物联网平台(未注册阿里云账户的用户,请先完成账户注册),按下面步骤一步步去打造
1、创建项目
注册登入后,如下图所示,前往管理控制台。
点击公共实例,进行产品创建
2、创建灯演示产品
点击创建产品,见下图所示,这里创建了一个名称“HaaS_Light”产品。
3、设备管理
在设备列表中增加对应产品的设备。
查看设备信息,并复制三元组用于设备端编程
创建后的设备三元组信息需要同步到设备端的开发代码段中,在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 云端状态
在云端设备管理中,可以看到刚创建的设备状态由未激活变成了在线,说明此设备已成功上云。
- 扩展开发
上面案例我们仅通过修改三元组就让设备连接到了物联网平台。如何对设备进行功能开发,将数据从云端推送到设备或从设备推送到云端呢?
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 = %drn", recv->type); switch (recv->type) { /* 属性设置 */ case AIOT_DMRECV_PROPERTY_SET: { printf("msg_id = %ld, params = %.*srn", (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 failedrn"); } } } break; ... }
5.1.3 云端下发
在设备界面点击在线调试功能
跳转到在线调试页面,进行属性调试
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 云端查看上报数据
在监控运维-日志服务中,可以查看设备上报的所有数据。
另外。物模型中主要数据类型处了属性外,还有服务和事件。具体详情请参考官网文档。
- 总结
本用例简单介绍了如何使用AliOS Things及HaaS开发板进行端云一体开发。了解更多连云相关知识请参考Link SDK编程手册。
你还在原价购买阿里云、腾讯云、华为云、天翼云产品?那就亏大啦!现在申请成为四大品牌云厂商VIP用户,可以3折优惠价购买云服务器等云产品,并且可享四大云服务商产品终身VIP优惠价,还等什么?赶紧点击下面对应链接免费申请VIP客户吧:
相关文章
- 跟着NatureCommunication学数据分析:R语言相对丰度数据主坐标分析(PcoA)
- 跟着Nature Communication学作图:R语言ggpubr包画箱线图并添加显著性P值
- 跟着Nature Communications学作图:R语言ggtern包画三元相图(Ternary plots )
- 跟着Nature Communications学作图:R语言ggplot2平滑曲线折线图
- 海信视像三次出手,拿下乾照光电20%股权
- 跟着Nature Communications学作图:R语言UpSetR画图展示不同组数据之间的交集
- 中国家电企业核心管理层变动大盘点(上)
- 跟着Nature Communications学作图:R语言ggtree绘制进化树
- 跟着Nature学作图:R语言ggplot2堆积柱形图完整示例
- 跟着Nature学作图:R语言ggplot2环形堆积柱形图完整示例
- 跟着Nature Communications学作图:R语言ggplot2画流程图
- 跟着Nature ecology and evolution学python:vcf文件转换成fasta文件
- 跟着Nature Genetics学作图:R语言ggplot2普通箱线图/分组箱线图/分面箱线图
- 跟着Nature学作图:R语言ggplot2簇状柱形图完整示例
- 跟着Nature Genetics学作图:R语言ggplot2曼哈顿图完整示例
- 跟着Nature Genetics学作图:R语言ggplot2散点图及多图共享图例
- 跟着Nature学作图:R语言ggplot2频率分布直方图
- 跟着Nature学作图:R语言ggplot2山脊图添加辅助线/图例添加到左下角
- 跟着Nature Genetics学作图:R语言ggplot2散点图突出强调其中某些点
- 跟着Nature学作图:R语言ggplot2分组折线图完整实例/多个图例分开放