AliOS Things 物联网开发上手|学习笔记

简介: 快速学习 AliOS Things 物联网开发上手

开发者学堂课程【AliOS Things 物联网开发教程AliOS Things 物联网开发上手】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/835/detail/13990


AliOS Things 物联网开发上手


内容介绍:

一、设备上云&控制 LED 灯


一、设备上云&控制 LED 灯

1、设备上云的原理

如下图所示:image.png最左侧是设备端,在本次实验当中,使用的是 Haas100,该设备通过wifi连接到物联网平台,然后将 Haas100板上的数据传送到物联网平台上,物联网平台也可以发送控制命令给 Haas100。如控制 Haas100上 LED 灯的亮灭。

2、实战环节

通过动手实际操作搭建设备上云并且控制 led 灯的环境。

(1)思路

首先打开 VS Code,查看项目的帮助文档,点击左侧“案例开发”中的 Wi-Fi 设备连接阿里云 IoT,打开 Wi-Fi 设备连接阿里云示例 linksdk_demo,它是最简单的单品上云的案例。该案例中用到了 Haas100,它需要自行接通电源和上网用的 wifi 天线,插上 USB 连接到计算机以便下载程序。

登录物联网平台,在物联网平台创建公共实例,创建产品,选择商品品类为“灯”,节点类型选择直连,联网方式选择 Wi-Fi 联网。在设备管理中添加灯设备,获取三元组信息,即指产品的 key、设备的名字和设备的密钥,将其填到通过Haas studio下载的代码中,更改配置信息,进行代码下载和调试。此时,在云端就可以看到设备显示在线。该过程的是设备上游的过程。

还可以在代码中添加一些 LED 灯的控制程序,可以接收从云端下发的 LED 灯的控制命令,就可以在云端通过在线调试的方式发送 led 灯的控制指令,进而在设备端捕获到信息,进行灯亮灭开关的控制。

(2)实际操作

①设备上云

登录物联网平台,进入控制台,点击公共实例,创建产品,并定义其名称为Haas100_led,选择品类,输入关键字“灯”,找到“智能生活/电工照明/灯”,该设备为直联设备(设备直接通过 Wi-Fi 连到云端的 Wi-Fi 连接方式),其余配置保持默认,点击确认,产品创建完成。

点击“添加设备”,定义名称为 hass100_led_001,点击确认查看设备信息。点击前往查看,即可在设备信息的页面读取设备的相关信息。目前所关注的是设备的三元组信息,点击查看即可生成该信息,并将该信息拷贝到程序中。

打开我们的 VS Code 创建项目,选定工作区路径,硬件类型选择 haas100,解决方案选择 Wi-Fi 设备连接阿里云实例,点击“立即创建”,确认工程信息后,即可下载相关的代码,其中包含了 linkskd_demo 的代码(用来连接阿里云物联网平台的 sdk)。

代码下载完成后,工程项目被自动打开,新的项目目录自动打开,其中包含有 sdk的相关代码。

在代码中找到设备三元组的配置的位置,替换为实际设备新加三元组信息,如下:

/*TODO:替换为自己设备的三元组*/

char *product_key = "alobEzEWHMU";

char *device_name = "haas100 led_001";

char *device_secret ="3d97ad587749ec14206a5be8da517e93;

点击编译按钮,一键编译,项目编译成功后,将编译好的文件下载到 haas100。

点击烧录按钮,选择对应的串口号,开始烧录。烧录完成之后,设备会重新启动。

设备开机之后,通过命令给设备配置 Wi-Fi 的账号密码,使设备连接到路由器,打开串口终端,通过查看文档获取 wifi 的配网命令,输入名字密码,开始联网。最终显示联网成功,且收到了云端回复的信息。

查看物联网平台的设备信息,可以看到 haas100_led_001 已经处于在线状态,说明设备成功上云,与云端物联网平台连接成功。

②led 灯的控制

即扩展的开发,该部分实验需要修改代码,接收云端下发的属性配置信息相关的代码。以下为相关代码:

#include "led.h"

#include"CISONh"

static void set led switch(char*str)

{

cJSON *strCommand,*strLed;

strCommand=cJSON_Parse(str);

if(!strCommand) {

printf ("json parse error\n");

return;

}

strLed=cJSON_GetObjectItem(strCommand,"LedSwitch");

if(strLed=NULL | | strLed→type !=cJSON_Number) {

printf("json get error\nV);

return;

}

if (strLed->valueint==1){

led_switch(1, LED_ON);

}else (

led switch(1,LED_OFF);

}

cJSON_Delete(strCommand);

}

复制该段代码并修改格式,查询文档可知该段代码应在回用户回调函数中捕获AIOT_DMRECV_PROPERTY_SET 属性设置事件中进行 Led 灯的控制。

代码解析:

收到了命令之后对其进行解析,如果当中包含"LedSwitch "字样,则要根据设置的LedSwitch 的值来控制对应的 Led 灯的亮灭。

在 AIOT_DMRECV_PROPERTY_SET 下面加入刚设置的函数(有自动提示功能,代码自动补全):

case AIOT_DMRECV_PROPERTY_SET:{

printf("msg_id = $id, parans = $.*s\r\n",

(unsigned long)recv->data.property_set.msg_id,

recv->data.property_set.params_len,

recv->data.property_set.params);

set_led_switch(recv->data.property_set.params);

将接收到的数据信息作为参数传入进行解析,并将后面注释的代码恢复,作为给服务端命令的应答。

代码修改结束,点击编译按钮重新编译,编译结束后将修改的代码编译的结果下载到 haas100中,点击烧录按钮,烧录结束后设备自动启动。

打开串口终端,配置 wifi 的账号密码,当记录了 wifi 账号和密码之后,刷新查看设备是否在线,若设备显示在线的,说明上云成功。

接下来,打开阿里云 IoT 平台,点击“监控运维”,点击“在线调试”,选择刚创建的两个设备,可以看到其中“主灯开关”的配置,“参数”选择开启,然后点击“设置”,可以看到设备的灯处于点亮状态。通过 log 也可以其收到的信息,点击“设置”可以把灯关闭。由此,即可实现在线控制 Led 灯的功能。

由以上案例可以发现 Haas Studio 十分方便地下载现有的项目,还可以在基于项目的基础上做出修改,包括编译代码、下载代码以及调试。总结起来,设备上云的过程共分为三大步骤:第一步,在云端的配置,在该步骤中我们在阿里云物联网平台上面创建了设备,并记录了设备的三元组信息;第二步,在设备端的下载代码,并把三元组信息进行配置,并联网;第三步,在云端实现 led 的控制。

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
存储 安全 Java
解析 Java 的 MultipartFile 接口:实现文件上传的全面指南
在现代的 Web 开发中,文件上传是一个常见的需求,而 Java 中的 `MultipartFile` 接口正是用来处理这类任务的重要工具。无论是上传图片、音频、视频还是其他文件类型,`MultipartFile` 都提供了便捷的方法来处理文件的接收和存储。本文将带您深入探索 Java 中的 `MultipartFile` 接口,揭示其功能、用法以及在实际开发中的应用场景。
|
7月前
|
人工智能 JSON 运维
Dataphin MCP:让数据查询 “轻而易举”
Dataphin推出MCP服务,助力Agent高效获取数据,释放企业数据价值。
661 10
|
5月前
|
消息中间件 人工智能 分布式计算
多智能体系统设计:协作、竞争与涌现行为
作为一名长期专注于分布式系统和人工智能领域的技术博主,我深深被多智能体系统(Multi-Agent Systems, MAS)的复杂性和优雅性所吸引。在过去几年的研究和实践中,我见证了多智能体系统从理论概念逐步走向实际应用的转变过程。多智能体系统不仅仅是简单的分布式计算模型,它更像是一个微观社会,其中每个智能体都具有自主性、反应性和社会性。这些智能体通过复杂的交互模式,展现出了令人惊叹的集体智能现象。从最初的简单协作模式,到复杂的竞争博弈,再到最终涌现出的群体智慧,多智能体系统为我们提供了一个全新的视角来理解和设计复杂系统。在本文中,我将从架构设计原则出发,深入探讨通信协议的设计要点,分析冲突
820 0
多智能体系统设计:协作、竞争与涌现行为
|
1月前
|
人工智能 自然语言处理 搜索推荐
2025年AI Agent客服机器人深度测评:五款主流厂商对话流畅度、理解能力横向测评
2025年AI Agent客服进入“元年”,企业选型从简单问答转向深度理解与流畅交互。本文构建四大测评维度,横向对比五款主流产品,揭示AI客服向“可执行任务的AI员工”演进趋势,助力企业智能转型决策。
|
10月前
|
数据采集 存储 数据挖掘
深入剖析 Python 爬虫:淘宝商品详情数据抓取
深入剖析 Python 爬虫:淘宝商品详情数据抓取
|
10月前
|
机器学习/深度学习 存储 算法
DeepSeek元学习(Meta-Learning)基础与实践
元学习(Meta-Learning),又称“学会学习”,旨在通过少量数据或训练步骤使模型快速适应新任务。本文介绍如何使用DeepSeek构建和训练元学习模型,重点讲解基于优化的元学习方法MAML。我们从定义任务生成器、实现MAML算法到训练模型和快速适应新任务,提供了详细的代码示例和常见问题解决方案。通过本文,读者可以掌握元学习的基础与实践技巧,利用DeepSeek高效构建元学习模型。
|
9月前
|
数据采集 JSON 监控
Haskell爬虫:为电商运营抓取京东优惠券的实战经验
Haskell爬虫:为电商运营抓取京东优惠券的实战经验
|
机器学习/深度学习 数据采集 传感器
深度学习之智能交通信号控制
基于深度学习的智能交通信号控制是交通管理领域的一项创新技术,旨在提高交通流量的效率,减少拥堵和排放,并改善交通安全。通过深度学习技术,交通信号控制系统可以实时分析交通数据,优化信号配时和调度,从而实现智能化的交通管理。
422 2
|
存储 弹性计算 安全
云计算服务选型与成本分析
【7月更文挑战第2天】云计算服务选型与成本分析聚焦企业如何在IaaS、PaaS、SaaS间抉择,考虑云提供商的技术实力、服务范围、成本效益和支持。成本分析涉及硬件、软件和服务成本,通过简单回收期、投资回报率和净现值法评估效益。优化资源配置、弹性伸缩和合理计费是成本控制关键,助力企业高效利用云计算。
|
安全 Linux 虚拟化
minos 2.1 中断虚拟化——ARMv8 异常处理
越往后,交叉的越多,大多都绕不开 ARMv8 的异常处理,所以必须得先了解了解 ARMv8 的异常处理流程 先说一下术语,从手册中的用词来看,在 x86 平台,一般将异常和中断统称为中断,在 ARM 平台,一般将中断和异常统称为异常
350 3
minos 2.1 中断虚拟化——ARMv8 异常处理

相关产品

  • 物联网平台