ESP8266网络通信实验之经典方法(下)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: ESP8266网络通信实验之经典方法

创建单个设备

在左侧导航栏,选择设备管理 > 设备,在产品下添加设备,操作如图3.3所示:

总结

本章主要是讲解了创建一个阿里云产品,这是为了后续MQIT接入阿里云做准备,读者只需按照步骤创建自己的阿里云产品即可。

36f0d7c253cc4ac6a50e0a4337f3d4f1.png

图3.3 创建单个设备

确定后弹出来的设备证书信息(ProductKey、DeviceName和DeviceSerect)后面接入该平台需要用到,请记录保存下来。不小心关闭也没关系,在产品设备中能找到。设备证书界面如图3.4所示:

ade4d9fe1c9640d6ae0689547e58d406.png

图3.4 查看设备证书


相关参数说明在表3.3中


表3.3 设备证书中相关参数说明

参数

说明

ProductKey

设备所隶属产品的Key,即物联网平台为产品颁发的全局唯一标识符。

DeviceName

设备在产品内的唯一标识符。DeviceName与设备所属产品的ProductKey组合,作为设备标识,用来与物联网平台进行连接认证和通信。

DeviceSecret

物联网平台为设备颁发的设备密钥,用于认证加密。需与DeviceName成对使用。

之后,可以在设备列表中,单击设备对应的查看按钮,进入设备详情页设备信息页签下,查看设备信息。


4.使用MQTT.fx接入物联网平台


4.1前提条件


已在物联网平台控制台创建产品和设备,并获取设备证书信息(ProductKey、DeviceName和DeviceSerect)。创建产品和设备具体操作细节,请参考创建产品、单个创建设备和批量创建设备。


上文创建的产品设备后设备证书信息如下(下文将以此作为示例做讲解):

 "ProductKey": "a14ayJGOfy7",
  "DeviceName": "XYD_LOCK",
  "DeviceSecret": "ch4UVyPXhAOdFwWYGbfWMw6G6ztxbTir"

 4.2使用MQTT.fx接入

  1. 下载并安装MQTT.fx软件。请访问MQTT.fx官网
  2. 打开MQTT.fx软件,单击设置图标。如图20.2.1所示:

f7ba623d4f2e45c79b0d12c26355333e.png

图20.2.1 MQTT.fx设置图标


设置连接参数。物联网平台目前支持两种连接模式,不同模式设置参数不同。

TCP直连:Client ID中securemode=3,无需设置SSL/TLS信息。


TLS直连:Client ID中securemode=2,需要设置SSL/TLS信息。


设置基本信息,如图20.2.2所示:


6ef288d4d80f4c238b8c6213f2ebbd27.png

图20.2.2 设置基本信息


设置基本信息相关参数说明如表20.2.1所示


表20.2. 1设置基本信息相关参数说明

参数

说明

Profile Name

输入您的自定义名称。

Profile Type

选择为 MQTT Broker

Broker Port

设置为:1883

General栏目下的设置项可保持系统默认,也可以根据您的具体需求设置。

  • 单击User Credentials,设置User Name和Password。如图20.2.3所示

5f403b3336b3407380dd4f72b5ccff5b.png

图20.2.3设置用户名和密码

用户相关信息说明如表20.2.2所示:

表20.2.2用户相关信息说明

参数

说明

User Name

由设备名DeviceName、符号(&)和产品ProductKey组成。

固定格式:${YourDeviceName}&${YourPrductKey}

完整示例如:device&alxxxxxxxxxx

  • Password生成工具

打开“软件工具\mqttfx\mqtt签名工具\sign.html”,按照上文参数规则填入信息后点击生成,如图20.2.4所示:

b8a1b09223e24feb858a691c23391a15.png

图20.2.4 密码生成配置

  • 最终得到

User Name:XYD_LOCK&a14ayJGOfy7

Password:9CE77B5B8E383FFEF3C0C4BE15497D5BE1A4D6D0

这两个在后面进行MQTT连接时需要用到。

  • (可选)TCP直连模式(即securemode=3)下,无需设置SSL/TLS信息,直接进入下一步。

TLS直连模式(即securemode=2)下,需要选择SSL/TLS,勾选 Enable SSL/TLS,设置Protocol。建议Protocol选择为TLSv1.2。设置如图20.2.5所示:

76d322c50aed474393918c479ea9d74d.png

           图20.2.5 设置TCP直连模式

填写完成后,单击OK

  1. 设置完成后,单击 Connect进行连接。如图20.2.6所示

a96d003a28f94983a2732ac0fd004b31.png

图20.2.6 连接示意图

4.3下行通信测试

从物联网平台发送消息,在MQTT.fx上接收消息,测试MQTT.fx与物联网平台连接是否成功 。

  1. 在MQTT.fx上,单击Subscribe
  2. 输入一个设备具有订阅权限的Topic,单击Subscribe,订阅这个Topic。如图20.3.1所示

e696d1f243d94ccb91fd37d10d2d25a3.png

图20.3.1订阅Topic

订阅成功后,该Topic将显示在列表中。如图20.3.2所示

1b7c6749220a4d0a8d1d7c165617aabc.png

图20.3.2 查看一订阅的Topic

  1. 物联网平台控制台中,该设备的设备详情页,Topic列表下,单击已订阅的Topic对应的发布消息操作按钮。
  2. 输入消息内容,单击确认。如图20.3.3所示:

bdedbfc66bb74069aa11c1f35d27cb2d.png

图20.3.3 下行发送消息示例

  1. 回到MQTT.fx上,查看是否接收到消息。如图20.3.4所示:7834aff3a7bc44a28597142204b94c49.png

图20.3.4 下行通信接收消息示例

4.4上行通信测试

在MQTT.fx上发送消息,通过查看设备日志,测试MQTT.fx与物联网平台连接是否成功 。

  1. 在MQTT.fx上,单击Publish
  2. 输入一个设备具有发布权限的Topic,和要发送的消息内容,单击Publish,向这个Topic推送一条消息。如图20.4.1所示:

d44149c95e9145d1b7961cf12e327602.png

图20.4.1 上行通信发送消息示例

  1. 物联网平台控制台中,该设备的设备详情 > 日志服务 > 上行消息分析栏下,查看上行消息。您还可以复制MessageID,在消息内容查询中,选择原始数据查看具体消息内容。

4.5查看日志

在MQTT.fx上,单击Log查看操作日志和错误提示日志。如图20.5所示

image.png

图20.5 查看日志


现在本地端如果想要连接上网页端(MQTT协议)


第一步:先让设备能联网


第二步,使用这个联网设备来发送对应的连接到阿里云平台的参数


第三步:订阅一个具有订阅权限topic,网页端就可以使用这个topic来发送数据给设备


第四步:选择一个具有发布权限的topic,再把数据上传到网页端


5.核心代码实现(STM32f407VGT6为例)


5.1 ESP8266的连接与订阅

void ESP8266_Connet(void)
{
       u8 errorCode;
       UART4_Init(115200);
       ESP8266_TcpInit();
//修改成自己的WiFi名和WiFi密码
       ESP8266_Wificonnect((uint8_t *)"Mi 10",(uint8_t*)"12345678"); 
     //自己MQTT的broker Address
       ESP8266_Severconnect((uint8_t *)"h0jpzgOH9rd.iot-as-mqtt.cn-shanghai.aliyuncs.com");
       errorCode = ESP8266_SendandReceive((uint8_t *)"AT+CIPSEND\r\n",(uint8_t *)"OK");
       if(!errorCode)
       {
              _mqtt.Init(rxbuf,0,txbuf,0);
              //MQTT连接
              //修改成自己MQTT的Client ID,User Name和在mqtt工具中生成的签名代码
              errorCode=_mqtt.Connect("ESP8266|securemode=3,signmethod=hmacsha1|",
              "HZL_BS&h0jpzgOH9rd",
              "8A71EC003C918FED63578E81D5C7C02EDBAA9485");
printf("55555");           
              if(errorCode==1){
                     printf("MQTT接入成功\r\n");
         //自己的Subscribe地址
              errorCode=_mqtt.SubscribeTopic("/sys/h0jpzgOH9rd/HZL_BS/thing/service/property/set",0,1);//订阅
                     if(errorCode==1)
                     {
                            printf("MQTT订阅成功\r\n");
                     }
              }
       }
}

5.2 ESP8266数据发送

void ESP8266_Send(void)
{
       uint8_t score[] = "A:97   B:122";
       uint8_t foul[] = "A:6   B:9";
       uint8_t win[] = "B:win";
       char string[520] = {0};
//按物模型通信的结构发送信息
       sprintf(string, "{\"method\":\"thing.service.property.set\",\"id\":\"1948364543\",\"params\":{\"foul\":\"%s\",\"score\":\"%s\",\"win\":\"%s\"},\"version\":\"1.0.0\"}",foul,score,win);               
       printf("%s\r\n",string);
//自己的Publish地址
       _mqtt.PublishData("/sys/h0jpzgOH9rd/HZL_BS/thing/event/property/post",string,0);
}

5.3 ESP8266数据接收

//通过接受中断来接收云上发来的数据
void UART4_IRQHandler(void)
{
       uint8_t temp;
       if(USART_GetITStatus(UART4,USART_IT_RXNE))
       {
              //清除接收中断标志
              temp = USART_ReceiveData(UART4);
              if(temp == 0)
              {
                     esp8266rec.buff[esp8266rec.len++] = ' ';
              }
              else
              {
                     esp8266rec.buff[esp8266rec.len++] = temp;
              }           
       }
       else if(USART_GetITStatus(UART4,USART_IT_IDLE))//空闲中断
       {
              //清除空闲中断标志
              temp = UART4->SR;
              temp = UART4->DR;
              temp = temp;
              esp8266rec.buff[esp8266rec.len] = '\0';
              esp8266rec.len = 0;
              esp8266rec.flag= 1;
              printf("%s", esp8266rec.buff);
       }
}
  1. 【实验现象】

ca3dc364b9de410181409cf805c4cf65.png

ef09b52b6dfa4dc6bf00fab2007cf86c.png


相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
22天前
|
机器学习/深度学习 数据采集 人工智能
基于Huffman树的层次化Softmax:面向大规模神经网络的高效概率计算方法
层次化Softmax算法通过引入Huffman树结构,将传统Softmax的计算复杂度从线性降至对数级别,显著提升了大规模词汇表的训练效率。该算法不仅优化了计算效率,还在处理大规模离散分布问题上提供了新的思路。文章详细介绍了Huffman树的构建、节点编码、概率计算及基于Gensim的实现方法,并讨论了工程实现中的优化策略与应用实践。
65 15
基于Huffman树的层次化Softmax:面向大规模神经网络的高效概率计算方法
|
13天前
|
域名解析 缓存 网络协议
优化Lua-cURL:减少网络请求延迟的实用方法
优化Lua-cURL:减少网络请求延迟的实用方法
|
2月前
|
机器学习/深度学习 数据采集 算法
机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用
医疗诊断是医学的核心,其准确性和效率至关重要。本文探讨了机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用。文章还讨论了Python在构建机器学习模型中的作用,面临的挑战及应对策略,并展望了未来的发展趋势。
140 1
|
2月前
|
安全 算法 网络安全
量子计算与网络安全:保护数据的新方法
量子计算的崛起为网络安全带来了新的挑战和机遇。本文介绍了量子计算的基本原理,重点探讨了量子加密技术,如量子密钥分发(QKD)和量子签名,这些技术利用量子物理的特性,提供更高的安全性和可扩展性。未来,量子加密将在金融、政府通信等领域发挥重要作用,但仍需克服量子硬件不稳定性和算法优化等挑战。
|
3月前
|
网络协议 网络虚拟化 网络架构
【网络实验】/主机/路由器/交换机/网关/路由协议/RIP+OSPF/DHCP(上)
【网络实验】/主机/路由器/交换机/网关/路由协议/RIP+OSPF/DHCP(上)
86 1
|
3月前
|
机器学习/深度学习 计算机视觉
TPAMI 2024:计算机视觉中基于图神经网络和图Transformers的方法和最新进展
【10月更文挑战第3天】近年来,图神经网络(GNNs)和图Transformers在计算机视觉领域取得显著进展,广泛应用于图像识别、目标检测和场景理解等任务。TPAMI 2024上的一篇综述文章全面回顾了它们在2D自然图像、视频、3D数据、视觉与语言结合及医学图像中的应用,并深入分析了其基本原理、优势与挑战。GNNs通过消息传递捕捉非欧式结构,图Transformers则结合Transformer模型提升表达能力。尽管存在图结构构建复杂和计算成本高等挑战,但这些技术仍展现出巨大潜力。论文详细内容见:https://arxiv.org/abs/2209.13232。
180 3
|
4月前
|
网络架构
静态路由 网络实验
本文介绍了如何通过配置静态路由实现不同网络设备间的通信,包括网络拓扑图、设备IP配置、查看路由表信息、配置静态路由和测试步骤。通过在路由器上设置静态路由,使得不同子网内的设备能够互相通信。
静态路由 网络实验
|
4月前
|
网络虚拟化
网络实验 VlAN 中 Trunk Access端口的说明及实验
本文介绍了VLAN技术及其在网络实验中的应用,包括Access端口和Trunk端口的工作原理,以及如何通过实验划分不同VLAN实现内部通信和跨交换机实现VLAN间通信的详细步骤和配置。
网络实验 VlAN 中 Trunk Access端口的说明及实验
|
3月前
|
网络协议 数据安全/隐私保护 网络虚拟化
【网络实验】/主机/路由器/交换机/网关/路由协议/RIP+OSPF/DHCP(下)
【网络实验】/主机/路由器/交换机/网关/路由协议/RIP+OSPF/DHCP(下)
75 0
|
3月前
|
移动开发 网络协议 测试技术
Mininet多数据中心网络拓扑流量带宽实验
Mininet多数据中心网络拓扑流量带宽实验
89 0

热门文章

最新文章