4_6_Haas 连接云端实验_理论篇|学习笔记

简介: 快速学习4_6_Haas 连接云端实验_理论篇。

开发者学堂课程【HaaS 物联网应用开发课程4_6_Haas 连接云端实验_理论篇】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/801/detail/13840


4_6_Haas 连接云端实验_理论篇

 

内容介绍:

一、实验简介

二、云端配置

三、代码编写、编译与烧录

四、Wi-Fi 连接与分析

五、DHCP 获取与分析

六、MQTT 连接分析

 

一、实验简介

1.实验目标与拓补

实验拓补结构如下:

image.png

设备阿里云通过 MQTT 消息进行数据的发送和接收

实验目标:通过该实验,熟悉以下几个知识点:

①在阿里云创建新产品

②熟悉代码编辑与编译和烧写

③熟悉 Wi-Fi 连接过程

④熟悉 Lwl 中 DHCP 获取 IP 地址过程

⑤熟悉 MQTT 连接过程

 

二、云端配置

在讲云端配置之前,我们来讲一下为什么云端配置要放在这里:因为要达到一个实验是让设备与云端进行交互,首先就需要在云端创建相关内容使得设备与云端可以进行交互,包括一些鉴权等相应的操作,那么下面我们来看一下云端配置需要什么。

云端的配置,首先是要创建一个产品类型,然后在这个产品类型里面创建一个设备。

image.png

1.新产品创建

第一步是登录到阿里云的官网上,连接如下:

https://iot.console.aliyun.com/product,也可以扫描相关二维码进入;之后在公共实例下有个设备管理,选择产品,再点击创建产品,可以选择创建什么样的产品。

这里我们实验创建的是直连设备,所谓直连设备是指设备与云端是直接通过 Wi-Fi 连到云端的设备;联网方式选择Wi-Fi,数据格式选择透传,就是收到什么数据由发送什么数据决定。通过以上方式就在云端上创建了产品。第二步是创建一个设备

2.创建设备

在公共实例下的设备管理里面的设备,点击添加设备,选择所属产品,设置设备名称;设置完成之后点击确定,会显示添加设备成功;之后再点击前往查看就可查看设备的详细信息;在设备端,需要点击DeviceSecret后的查看,可以看到设备三元组的信息,三元组信息是用于 MQTT 在云端做认证,这个认证是为了数据的安全,所以需要三元组的信息。点击一键复制,就可以把三元组信息复制下来,它在设备端需要使用。

image.png

三、代码编写、编译与烧录

1.代码编写

这里需要用到我们刚刚讲的三元组信息,打开文件修改文件 application/example/mqtt_demo/mqtt_example.c 并修改其中的三元组信息:

#define PRODUCT_KEY   "a18VwY88b79"

#define DEVICE_NAME    "my_kaiguan"

#define DEVICE_SECRET   "73009b38c5f12345c67890b2309

06f9f"

对应修改为刚刚从网页上获取的信息。

本次使用 mqtt_demo 工程作为例子,进行 mqtt 的实验。其中的三元组主要包括以上三个信息,对应值从云端网页获取。三元组的信息具体代表∶

宏定义

说明

PRODUCT_KEY

产品的ID号码

DEVICE_NAME

产品的名字

DEVICE_SECRET

产品的密钥,用于安全验证

2.代码编译

代码编译主要分成两个步骤,第一个是配置编译的工程,使用的是 MQTT_demo,使用的开发版是 haaseduk1;配置之后执行编译,编译是使用 aos make,更多关于代码相关的可以参考前面的章节。

3.镜像烧录

接下来需要将代码编译好的镜像烧录到设备上,烧录主要分为两个步骤:第一个步骤是将设备连接到电脑上,特别注意的是要打开左边的电源开关;第二步是执行 aos upload 命令,它会自动烧录到设备上,烧录完成大概需要1-2分钟时间。烧录之后,就可以通过串口软件看到整个串口上的输出。

 

四、Wi-Fi 连接与分析

1.Wi-Fi 连接

今天的实验使用的是 open(没有密码)的 Wi-Fi,使用 open 的 Wi-Fi 可以看到所有没有加密的信息。

命令行

说明

netmgr -t wifi -c [ssid] [password]

使用ssid password连网

命令行连接

#netmgr -t wifi -c haas

[Jan 01 00:00:26.251]<I>WIFI_SERVICE wifi_service_on:1895

[Jan 01 00:00:26.252]<E>WIFI_SERVICE wifi_service_wifi_co

nnect:2049 up netif

[Jan 01 00:00:26.252]<I>WIFI_SERVICE wifi_service_wifi_connec

t:2085 ssid=haas pwd=

Wi-Fi 扫描结果

27983/net wq | scan resulto: (2417, "haas" ,-51 , "a4 : 50:46:c2:2e:d9")

Wi-Fi 连接成功

<I>WIFI_SERVICE wifi_connected : 607

再看一下通过 Wireshark 抓的整个 Wi-Fi 连接过程

image.png

我们看到:Wi-Fi 连接过程中要发送 Probe Request 和 Response、能扫描到 Haas 设备并且能收到回应,然后通过association 等进行连接。因为是 open 的方式,所以当收到 Association Response 之后就表示成功连接,下面的信息会在后面做详细介绍。

Probe Request,SN=8,FN=0,Flags=........c,sSID=haas

Probe Response,SN=503,FN=0,Flags=....C,BI=100,SSID=haas

………

Authentication,SN=4055,FN=o,Flags=........C

Association Request,SN=10,FN=0,Flags=........c,SSID=haas

Acknowledgement,Flags=........C

Association Response,SN=4056,FN=0,Flags=... .....c

Association Response,SN=4056,FN=0,Flags=... .....c

 

五、DHCP 获取与分析

当 WiFi 连接之后会启动 DHCP cilent 从设备上获取 IP 地址,IP 地址在路由器里,如果打印出 IPV4 Address 就表示成功获取当前的 IP 地址;然后会看到 DHCP 的抓包过程,如下图显示,DHCP 有四个报文:discover、offer、request、ack,其中每个步骤可以参考之前的章节;之后挑选一个 DHCP REQUEST 的报文,表示设备向 DHCP 要 IP地址,如 Request IP Address:lwip(192.168.43.163

启动 DHCP client

<I>WIFI_SERVICE wifi_dhcp_start:1764 start dhcp

获取到IP地址  [Jan 01 00:00:29.099]<I>WIFISERVICE

IPv4 Address : 192.168.43.163

DHCP 过程抓包

image.png

DHCP REQUEST 报文 Request IP Address:lwip(192.168.43.163

注意:DHCP server 分配 IP 地址的服务器有可能是路由器上,也有可能在其他地方,这个需要根据局域网环境配置的情况来动态的看待这个问题。

如上述步骤,DHCP 整个过程就能获得IP地址,设备就能连接到局域网,如果这个局域网有上行出口能到广域网,那么整个设备就能连接到大网上,也就是能够成功联网,联网之后就是要设备与云端连接,这个连接需要 MQTT。

 

六、MQTT 连接分析

1.MQTT 连接

MQTT 连接

[Jan 01 00:00:29. 603] <I>MQTT connect pa rams : MQTTVersion=4, cl ientID=a 18VwY t8b69.my ka iguan I t imes tamp=2524 608000000,v=sdk-c-3 .0.1,securemode=2,s i gnme thod=hmacs

ha256,lan=C, ss=1,gw=0 ,ext=01,keepAliveInterval=120, username-my_ kaiguan&a18VwYt8b69

云端连接成功

image.png

MQTT 连接之后,设备的 demo 会自动连接 MQTT 的服务器,连接的参数会打印出来,参数如上所示;通过这种方式能够连接到云端,并且在云端能够查看设备是否在线。

MQTT 连接成功之后就要做主题订阅和发布消息。

2.MQTT 订阅

MQTT 订阅主题

[Jan 01 00:00:14. 705]<I>MQTT mqtt subscribe packet sent, topic = /a18VwYt8b69/my_ kaiguan/user/get!

云端订阅日志

image.png

显示

{"Content":"subscribe topic:/a18VwYt8b69/my_ kaiguan/user/get"}表示:成功订阅了主题,从而看到云端的订阅日志。

3.MQTT 发送消息查看

MQTT 发布消息到主题

> {

> ”message”:”hello!”

> }

image.png

订阅之后,MQTT 就可以发布消息到主题,云端可以查看主题页面,点击云端运行日志就可以查看每一发送到云端的详细消息。

 4. MQTT 发布消息

image.png

MQTT 发布消息是在设备管理下的设备理有个 topic 列表,点击 user/get 后的发布消息就能从云端发送消息到设备,相当于设备订阅了这个主题,从而收到信息。

 5.MQTT 发布消息查看

云端发送消息

image.png

设备端收到信息

Payload:This is a test 123

云端发送消息,比如 This is a test 123,然后设备端就收到了消息并且将它打印出来。

如此,整个实验:设备完全从云端创建产品、创建设备,在设备端修改对应的消息,连接网络、获取 IP 地址以及MQTT 的连接、订阅、发布等整个流程就构成了整个网络的交互和通信。

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
5月前
|
网络协议 应用服务中间件 Linux
Linux网络综合基础实验
Linux网络综合基础实验
67 0
|
4天前
|
网络协议 安全 Linux
网络入门基础
网络入门基础
5 0
|
9月前
|
物联网 数据管理 API
HarmonyOS学习路之开发篇—网络与连接(蓝牙开发 二)
通过BLE扫描和广播提供的开放能力,可以根据指定状态获取外围设备、启动或停止BLE扫描、广播。
|
9月前
|
物联网 数据管理
HarmonyOS学习路之开发篇—网络与连接(蓝牙开发 一)
蓝牙是短距离无线通信的一种方式,支持蓝牙的两个设备必须配对后才能通信。HarmonyOS蓝牙主要分为传统蓝牙和低功耗蓝牙(通常称为BLE,Bluetooth Low Energy)。传统蓝牙指的是蓝牙版本3.0以下的蓝牙,低功耗蓝牙指的是蓝牙版本4.0以上的蓝牙。
|
物联网
串口与PC机通信的组成原理和具体实现(原理篇,含组件解析)_物联网挑战赛
串口与PC机通信的组成原理和具体实现(原理篇,含组件解析)_物联网挑战赛
113 0
|
安全 5G 定位技术
IM开发者的零基础通信技术入门(十一):为什么WiFi信号差?一文即懂!
WiFi对于现在的家庭来说,属于司空见惯的上网方式,但很多情况下,家里房间多、空间大、杂物乱的情况下,WiFi的信号就受影响。为什么WiFi信号会受影响?什么情况下该使用何种方式组网?如何改善WiFi信号差的问题?等等,本文将通俗易懂地为你找到这些问题的答案。
133 0
IM开发者的零基础通信技术入门(十一):为什么WiFi信号差?一文即懂!
|
异构计算
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第二章:FPGA验证流程与远程实验平台
基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第二章:FPGA验证流程与远程实验平台
80 0
|
运维 监控 AliOS-Things
4_7_Haas 连接云端实验_演示篇|学习笔记
快速学习4_7_Haas 连接云端实验_演示篇。
94 0
4_7_Haas 连接云端实验_演示篇|学习笔记
|
IDE Serverless 开发工具
【1】天猫精灵开放实验平台实验—创建语音技能
【1】天猫精灵开放实验平台实验—创建语音技能
268 0
【1】天猫精灵开放实验平台实验—创建语音技能
|
传感器 JSON 物联网
HaaS EDU 温湿度轻应用开发实验
温湿度轻应用开发及实验环境配置过程
HaaS EDU 温湿度轻应用开发实验