【阿里云】物联网平台配置ESP8266真实设备AT串口连接,支持MQTT协议通信

本文详细介绍了如何使用阿里云物联网平台创建产品和设备,以及如何利用MQTT.fx虚拟设备和ESP8266真实设备进行连接与数据通信。通过MQTT.fx的配置,展示了设备的连接和数据发布订阅过程。同时,文章还探讨了ESP8266的设备连接步骤,包括烧录固件和发送MQTT指令。此外,提到了云产品流转的配置方法,以及生活物联网与手机APP的连接,强调了云智能APP的使用。
摘要由CSDN通过智能技术生成

1 阿里云物联网平台

  • 官方文档:https://help.aliyun.com/product/30520.html
    官方控制台:https://iot.console.aliyun.com/lk/summary/new

  • 左边有产品和设备,产品是抽象的品类,比如说电灯,空调等等。
    设备是品类下具体的物品,和实物一一对应的云端信息,比如电灯1,电灯2,电灯-卧室,电灯-门口等等。
    在这里插入图片描述

  • 新建一个产品,可以看到物品属性的定义,比如等有开关,亮度,色温等等,这些信息的json数据简称物模型
    在这里插入图片描述

  • 新建一个设备,可以看到设备唯一标识与MQTT连接参数,用于后面的本地连接。
    在这里插入图片描述

  • 另外,可以在文档与工具类里找到IOT Studio的文档,进行简易的云上APP开发
    控制台地址为:https://studio.iot.aliyun.com/
    在这里插入图片描述
    在这里插入图片描述

2 MQTT.fx虚拟设备连接

2.1 配置设备连接(建立连接)
  • 首先原本设备是离线或未激活状态。
    在这里插入图片描述

  • MQTT.fx是一款基于Eclipse Paho,使用Java语言编写的MQTT客户端,支持Windows、Mac和Linux操作系统,可用于验证设备是否可与物联网平台正常连接,并通过Topic订阅和发布消息。
    官网地址:https://mqttfx.jensd.de/index.php/download

  • 单击菜单栏中的Extras,选择Edit Connection Profiles。
    在Edit Connection Profiles页面,完成以下参数的设置。
    在这里插入图片描述

  • TLS直连模式(即securemode=2)下,单击SSL/TLS,选中Enable SSL/TLS,设置Protocol为TLSv1.2。
    在这里插入图片描述

  • 然后保存并且连接就行,此时可以看到云设备在线。
    在这里插入图片描述

2.2 配置订阅和发布(数据通信)
  • 在云端的产品中,定义一个支持发布和订阅的Topic类,之后将使用该类作为地址进行数据通信
    在这里插入图片描述

  • 拷贝该地址到MQTT.fx,并替换${deviceName}为自己的设备名称,此时就可以点publish进行上传数据到云端
    在这里插入图片描述

  • 也可以点击订阅subcribe自动接收和下载云端的数据
    在这里插入图片描述

  • 可以在本地和云端查看通信的日志:
    在这里插入图片描述
    在这里插入图片描述

3 ESP8266真实设备连接

3.1 配置设备连接(建立连接)
  • 在连接之前,首先要用烧录器烧录支持MQTT的固件
    软件是这个flash_download_tool_3.8.7
    固件是这个ESP8266-AT-1M
    固件是通用的,烧过一次以后换不同的账号,平台,设备,都可以直接用
    注意烧录用的连接电脑的USB主板和平时通信的不是同一个
    在这里插入图片描述
  • 然后开始设备和阿里云的连接,我们使用XCOM V2.0.exe工具进行,指令如下。
    AT是命令,RST和RESTORE都是重启设备的意思,是通用的,ntp1.aliyun也是通用域名,都直接复制就行。
    需要修改的是wifi账号密码,MQTT的用户名,密码,ClienID,连接域名这部分。
    这些信息与上面连接MQTT.fx的时候是一样的,在云端设备的MQTT连接参数中可以找到
    AT+RST
    AT+RESTORE
    AT+CWMODE=1
    AT+CIPSNTPCFG=1,8,"ntp1.aliyun.com"
    AT+CWJAP="WiFi名字","WiFi密码"
    AT+MQTTUSERCFG=0,1,"NULL","用户名","密码",0,0,""
    AT+MQTTCLIENTID=0,"ClienId"    //clientId第二个参数注意每个逗号后加分隔符“\”,例如:t|securemode=3\,signmethod=hmacsha1\,
    AT+MQTTCONN=0,"连接域名",1883,1    //连接域名中的端口号已经被提到后面了,所以删去“:1883”
    
  • 下面正式建立连接,注意要选一下串口和波特率。
    在这里插入图片描述
3.2 配置订阅和发布(数据通信)
  • 在云端的产品中,定义一个支持发布和订阅的Topic类,之后将使用该类作为地址进行数据通信
    在这里插入图片描述
  • 本地使用如下指令进行发布和订阅
    通信指令
    AT+MQTTSUB=0,"topic",1       订阅
    AT+MQTTPUB=0,"topic","test_message",1,0        发布
    可以使用自定义的Topic,在日志服务上看
    注意如果使用AJSON的Topic及物模型形式
    则发布中"test"为JSON字符串     "和,前加\
    

4 设置云产品流转(以MQTT.fx和ESP8266为例)

  • 云产品流转原理:
    实现有2个设备,设备1发送信息给云,云将信息发送给设备2的操作。这里我们以MQTT.fx和ESP8266为例配置云产品流转。
    在这里插入图片描述
  • 在云产品流转中设置数据源和数据目的。数据源为ESP8266自定义的Topic类,数据目的为MQTT.fx设备自定义的Topic类。在这里插入图片描述
  • 然后配置解析器,进行指向操作,这里有一份简单的代码编写。意思是从接受到的数据中取出一部分items进行转发到另一个数据源。
    在这里插入图片描述
  • 此时再使用AT让ESP8266向云端发送数据,会发现本地的MQTT.fx上接收到了刚才发送的内容,配置完成。

5 生活物联网与手机APP连接

  • 官方文档:https://help.aliyun.com/document_detail/142147.html
    官方控制台:https://living.aliyun.com/
    在这里插入图片描述

  • 我们发现,物联网平台的IoTStudio开发的手机APP非常简陋,因此需要自己使用SDK进行APP的开发。生活物联网也有这种操作,但是它也提供了另外一种方式,官方的APP可供使用。公版APP名为云智能,可以在应用市场上下载到。
    在这里插入图片描述

  • 这是生活物联网的配置。
    在这里插入图片描述
    在这里插入图片描述

  • 一个值得注意的点,生活物理网里新建的产品和设备会被自动同步到物理网平台里,而物理网平台里新建的不会
    但是同步的产品会有一个缺陷,那就是不能自定义Topic类。 因此无法完成较为复杂功能的开发,只能用现有的功能实现。

### 回答1: 这个问题可能是因为数据下发的频率过高,导致ESP8266与STM32同时发送数据时发生冲突。解决这个问题的方法有以下几种: 1. 调整数据下发的频率,避免ESP8266与STM32同时发送数据。 2. 使用缓存机制,将ESP8266和STM32的数据分别存放到不同的缓存中,等待下一次数据下发时再发送。 3. 增加数据下发的重试机制,当数据下发失败时,重新尝试发送,直到数据成功下发为止。 4. 对ESP8266和STM32进行优化,提高数据处理能力,避免数据冲突的发生。 需要根据实际情况进行调试和优化,找到最适合的解决方案。 ### 回答2: 阿里云物联网平台ESP8266和STM32之间的数据通信问题可能是由于数据冲突或设备之间的通讯速度不一致引起的。 在阿里云物联网平台中,数据传输是通过MQTT协议进行的。当ESP8266通过阿里云物联网平台向STM32发送数据时,如果STM32同时开始上传数据,可能会导致数据冲突或覆盖。 为了解决这个问题,可以采取以下几种方案: 1. 确保STM32和ESP8266之间的通讯速度一致:尽量使两个设备之间的通讯速度相同,可以通过调整通讯频率、波特率等参数来实现。 2. 增加数据缓冲区:在STM32端和ESP8266端都增加一个数据缓冲区,当有新的数据到来时,先将数据存储到缓冲区中,在得到应答之后再进行下一次的数据传输。这样可以避免数据冲突和覆盖。 3. 使用消息队列:在ESP8266和STM32之间建立一个消息队列,当有新的数据到来时,先将数据存储到消息队列中,然后按照一定的顺序进行处理和传输,可以避免数据冲突和覆盖。 4. 使用互斥锁或信号量:在ESP8266和STM32之间引入互斥锁或信号量机制,确保同一时间只有一个设备进行数据传输,可以避免数据冲突和覆盖。 以上是针对ESP8266向STM32发送数据时可能出现的问题和解决方案的简要说明。具体的解决方法需要根据具体的硬件设备和编程实现来确定。希望对你有所帮助。 ### 回答3: 阿里云物联网平台通过ESP8266向STM32发数据时,若STM32同时加入上传数据,可能会造成数据下发的速度变慢或数据被覆盖的情况。 造成这种情况的原因有以下几点: 1.通信通道繁忙:当ESP8266与STM32同时进行数据上传和下发时,通信通道可能会变得较为繁忙,导致数据传输速度变慢。这主要是由于ESP8266与STM32之间的串口通信只能串行进行,当同时进行上传和下发时需要进行切换,从而导致传输速度的下降。 2.缓冲区溢出:ESP8266与STM32之间的数据传输可能存在缓冲区溢出的问题。当STM32上传数据的频率较快时,ESP8266可能无法及时处理这些数据,导致缓冲区溢出。这会导致到来的数据被丢失或者覆盖已有的数据。 为解决以上问题,可以采取以下措施: 1.优化通信协议:可以对ESP8266与STM32之间的通信协议进行优化,减少通信的次数和数据量。可以尽量将上传和下发的数据分批处理,避免大量数据同时传输。同时,可以尝试使用更高性能的通信模块或协议,提高数据传输速率。 2.增加缓冲区大小:可以增加ESP8266与STM32之间的缓冲区大小,确保缓冲区能够容纳所有的数据。通过增加缓冲区大小,可以减少由于缓冲区溢出引起的数据丢失或覆盖问题。 3.调整上传和下发频率:可以调整STM32上传数据的频率,避免数据过于频繁导致的传输问题。可以根据实际需求,合理设置上传和下发的时间间隔,以保证数据传输的稳定性和准确性。 综上所述,阿里云物联网平台通过ESP8266向STM32发送数据时,若STM32加入上传数据,可能会出现数据下发变慢或覆盖的情况。为解决此问题,可优化通信协议、增加缓冲区大小和调整上传下发频率等措施。这样可以提高数据传输的效率和稳定性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小哈里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值