模组:ESP-12F   ||   ESP-12S  ||   (保险来说,ESP模组的flash应该 大于4MB、或者说为32Mbit 才可以)待补充 ...

平台:阿里云物联网平台

固件:ESP8266 MQTT透传AT固件

目录

一、烧录ESP8266 MQTT透传AT固件

二、部署阿里云物联网平台

三、连接阿里云物联网平台

四、ESP-12F模组烧录固件带来的问题


一、烧录ESP8266 MQTT透传AT固件

下载地址:https://docs.ai-thinker.com/esp8266/sdk

固件说明:推荐下载第二个AT固件,即 ESP8266 MQTT透传AT固件(AT口改为UART0),记得下载使用指导。不过需要提醒大家,这个固件是针对ESP-12S模组开发,应该可以完美运行于ESP-12S模组;但是,我发现在ESP-12F模组中,MQTT指令可以运行,而以前默认AT固件的某些基础命令则无法执行,一直ERRPOR。后面会提及这里。

两个固件都可以下载,区别不大,只是AT指令使用串口不同。如果有探究精神,可以选择ESP8266 MQTT默认透传AT固件,个人觉得那个固件很麻烦,AT指令需要一个串口,log需要一个串口,因为我也没调通那个固件。推荐第二个,只需要一个串口。

注意,不同模组的烧录参数、连线方式,这里就不细说。烧录成功后,开始测试AT指令连接阿里云物联网平台。

二、部署阿里云物联网平台

1. 创建产品  

点击“创建产品”,产品命名为“TestProduct”

2. 创建设备 

点击“添加设备”,选择产品为“TestProduct”,设备命名“TestDevice”

3. 生成物模型

选择“产品”,选择“功能定义”,选择“编辑草稿”

添加自定义功能

发布上线

三、连接阿里云物联网平台

说明:阿里云物联网平台有多种连接方式,官方比较推荐使用SDK方式连接,因为这样通信比较安全,官方SDK帮你做了很多处理。作为测试,我们选用开放协议自主接入方式,使用MQTT-TCP连接通信,使用MQTT AT 指令连接上云

文档:https://help.aliyun.com/document_detail/73742.html?spm=a2c4g.11174283.6.593.349f1668tBCTLM

1. MQTT 连接参数的计算(强烈推荐先使用方法3,新手自己推算比较麻烦,示例方法3)

查看产品参数、设备参数

一键复制,保存在文本中,待用

方法1:阅读文档,可以自己计算

Hash在线计算工具:https://1024tools.com/hmac

方法2:使用安信可在线生成工具

在线地址:https://www.ai-thinker.com/service/mqttPassword

工具说明:安信可在线生成工具,默认不使用timestamp连接参数,默认哈希函数 hmasha1

方法3:使用阿里云物联网平台配置工具

链接:https://pan.baidu.com/s/1SrEbNda0V3abT7EZXaE4sw 
提取码:rfa0

工具界面:

参数计算:

复制下来,保存在文本中,待用

{"ProductKey": "a1TGuTWhjR8","DeviceName": "TestDevice","DeviceSecret": "D5JIkQ5iAuhRjJuGbSgGlpYd3mmjOhPX"
}连接域名:a1TGuTWhjR8.iot-as-mqtt.cn-shanghai.aliyuncs.com:1883ClientId: 123456|securemode=3,signmethod=hmacsha1,timestamp=789|Username: TestDevice&a1TGuTWhjR8Password: 0EE972B6F5075EEFB0569DBC8871D0FE7FABD7C3

2. 阿里云物联网平台的连接

指令查看(下载AT固件的使用指导手册)

连接过程:

//ESP12F  MQTT AT ALIYUN   2020-06-06//1.连接上云AT+RSTAT+RESTOREAT+CWMODE=1AT+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”//2.断开连接(先别断开,我们还要做通信测试)AT+MQTTCLEAN=0

参考示例: 

此时,我们已经成功连接上阿里云物联网平台,可以查看到设备处于在线状态,下面就可以进行通信啦

3. 阿里云物联网平台的通信

(1)查看设备的Topic列表,选择物模型通信Topic,可以看到有很多Topic,(当然,你也可以选择自定义Topic)

2020-11-28:最近,阿里云物联网平台把topic移到产品了,凡是变量带${}的,如${deviceName},都要自己展开

(2)打开在线调试,我们可以进行调试真实设备

(3)打开运行状态,我们可以看到云端设备的实时状态

(4)下面,开始进行通信测试

//MQTT指令示例: SUB  PUB  //1. 订阅
AT+MQTTSUB=0,"topic",1 //2. 发布
AT+MQTTPUB=0,"topic","test",1,0

特别提示:

(1)"topic"列表需要查看你们自己的topic列表,${}变量名要具体展开;

(2)"test"是要发送的内容,如果你们和我一样选择了AJSON格式(即使用了物模型方式),那就需要查看官方文档,看一下AJSON格式;如果使用的是自定义topic,应该没有格式要求,test可以为任意内容 。

(3)再提醒一次:不要使用我的产品和topic,不要使用我的产品和topic,不要使用我的产品和topic !! 使用自己的产品和topic !!

//Topic列表//属性设置
/sys/a1TGuTWhjR8/TestDevice/thing/service/property/set
/sys/a1KIUPF4pAV/TestDevice/thing/service/property/set_reply//属性上报
/sys/a1TGuTWhjR8/TestDevice/thing/event/property/post
/sys/a1TGuTWhjR8/TestDevice/thing/event/property/post_reply//事件上报
/sys/a1TGuTWhjR8/TestDevice/thing/event/${tsl.event.identifer}/post
/sys/a1TGuTWhjR8/TestDevice/thing/event/${tsl.event.identifer}/post_reply//服务调用
/sys/a1TGuTWhjR8/TestDevice/thing/service/${tsl.service.identifer}
/sys/a1TGuTWhjR8/TestDevice/thing/service/${tsl.service.identifer}_reply
//1.订阅设备属性设置AT+MQTTSUB=0,"/sys/a1TGuTWhjR8/TestDevice/thing/service/property/set",1

++ESP8266    订阅设备属性设置

--云端    下发设备属性设置指令

++ESP8266    接收到设备属性设置指令



//2.订阅云端响应属性上报
AT+MQTTSUB=0,"/sys/a1TGuTWhjR8/TestDevice/thing/event/property/post_reply",1//3.上报设备属性信息// 上报参考格式:
AT+MQTTPUB=0,"/sys/a1TGuTWhjR8/TestDevice/thing/event/property/post","test",1,0// 上报JSON格式:
AT+MQTTPUB=0,"/sys/a1TGuTWhjR8/TestDevice/thing/event/property/post","{\"method\":\"thing.service.property.set\"\,\"id\":\"2012934115\"\,\"params\":{\"PowerSwitch\":0}\,\"version\":\"1.0.0\"}",1,0//注意:JSON格式,,字符串遇到逗号(,)和双引号(“)需要加转义字符

++ESP8266    上报设备属性信息

可以看到上报设备信息错误,因为我们在定义产品时选择的AJSON数据格式

上报数据成功,并且成功接收到云端的反馈信息

当上报为"1"时,运行状态实时刷新

问:指令AT+MQTTPUB=<LinkID>,<topic>,<data>,<qos>,<retain>,对于其中<data>这个数据,您是如何获取的呢?

答:这个data,因为选择的物模型方式定义,使用的是AJSON格式,所以要符合data要符合AJSON格式。

这个通信格式要参考阿里云文档《通信方式概述》中的“设备发送数据到物联网平台”,那里应讲得还算明白:https://help.aliyun.com/document_detail/146382.html?spm=a2c4g.11186623.6.616.218d2155A9a3mZ

https://help.aliyun.com/document_detail/73736.html?spm=a2c4g.11186623.6.649.6e66ed92YcijNL

有空也可参读“消息通信”那一章节, 如 “通信方式概述” 和 “数据结构” 等,配合物模型,应该大致可以理解数据格式。

(补充:如果大家觉得麻烦,就看我的下面数据格式获取示例,不过很简陋哦  !!!)

如果实在不懂,可以在阿里云物联网平台那里开启虚拟设备上报数据,那里可以清晰看到数据的组织形式,然后配合文档,去对比上报的数据帧就可以大致理解AJSON格式。阿里云物联网平台有在线调试和设备模拟器,都挺好用的。(笔者也是查看一下博客和文档自己简单理解,当初我是通过MQTT客户端上报、发布去查看到一些数据格式的问题,所以不能深入讨论,我也是一只小菜鸡,害)

(这几天,由于课设需要,笔者重新看了阿里云物联网平台,这里演示我是如何利用设备模拟器获取data数据格式的,希望对大家有所帮助,也看到很多朋友在问,呵呵 ,看上面的图 )

步骤:

(1)打开设备模拟器,选择对应产品和设备,一开始是“离线”,我们点击开启“在线”;

(2)选择“上行指令调试”,选择“属性上报”,选择“电源开关”,这里就上报关闭吧,然后点击“发送指令”

(3)数据格式分析,请看下图,其中第2步中的payload就是我获取的 data 数据,是不是差不多一样,哈哈哈哈。大家可以拿下面这两条指令对比一下,其实他们是一样的,就是json变量顺序变换了。

* * * * * * * * * * * * *    设备模拟器的数据格式   * * * *  ** * * * * * * * * * * * * * *

设备到云平台消息      2020/11/26 20:25:08.329

publish topic=/sys/a1TGuTWhjR8/TestDevice/thing/event/property/post, payload={"id":1606393508326,"params":{"PowerSwitch":0},"version":"1.0","method":"thing.event.property.post"}

* * * * * * * * * * * * *    笔者参考自写的AT指令     * * * * * * * * * * * * * * ** * * * ** *

// 上报JSON格式:
AT+MQTTPUB=0,"/sys/a1TGuTWhjR8/TestDevice/thing/event/property/post","{\"method\":\"thing.service.property.set\"\,\"id\":\"2012934115\"\,\"params\":{\"PowerSwitch\":0}\,\"version\":\"1.0.0\"}",1,0

(当然,比较认真的可以看到两个问题:

(1) "method":"thing.event.property.post" 和 \"method\":\"thing.service.property.set\" 有区别,一个是post而另一个是set,这里是笔者的问题,那时候没有去注意这个问题,不过它在这里也不影响我们实验,呵呵。不过建议大家根据情况,上报属性和设置属性是两回事,我们应该根据实际选择method,上报属性就是post,设置属性就是set;

(2) id值是会变化的,我们这里自己用了固定值,肯定不严谨,是吧,代码中id应该是变化的,大家记得,id是如何生成的,大家自个儿去查吧)

四、ESP-12F模组烧录固件带来的问题

笔者发现,烧录了ESP8266 MQTT透传AT固件后,有些基础 AT指令运行失败,可能时裁剪了或者怎么滴,我没有ESP-12S模组,无法查找问题来自哪里,有可能是不能完美适配ESP-12F模组,如下图

但是,通过查看使用指导手册里面的指令,发现还是能满足我们的需求,所以我不是很在意这些,够用就好啊。

另外,如果大家测试完后想恢复出厂默认AT固件,可以下载出厂默认 AT 固件,烧录即可,掌握烧录方法不虚。

嘿嘿,下一篇:《STM32F103 通过 ESP8266 AT指令连接阿里云物联网平台》

ESP8266 AT指令连接阿里云物联网平台相关推荐

  1. STM32 通过 ESP8266 AT指令连接阿里云物联网平台

    模组  :ESP-12F   ||   ESP-12S  ||  (保险来说,ESP模组的flash应该 大于4MB.或者说为32Mbit 才可以) 待补充 ... 平台  :阿里云物联网平台 MCU ...

  2. ESP-MQTT-AT指令连接阿里云物联网平台

    文章目录 文章背景 关键的关键词 本章使用 本章约定 所需资源 技术正文 一:连接方式 二:步骤(简介 3.ESP模块+stm32单片机) 1.创建设备复制三元素组 2.信息生成 3.使用串口工具和云 ...

  3. STM32+ESP8266+MQTT协议连接阿里云物联网平台

    一.环境介绍 单片机采用:STM32F103C8T6 上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可.比如:GSM模块.有线网卡等. 开发软件:keil5 硬件连接功能: ...

  4. 手把手教你用Arduino接入阿里云物联网平台,ESP8266连接阿里云物联网平台必看教程...

    使用Ardui no 的方式快速连接阿里云物联网平台. 文中提到的 AliyunIoTSDK 这个 Arduino 库,可以在 Arduino 库商店里搜索到(搜索 AliyunIoTSDK) Ali ...

  5. STM32F103C8T6通过ESP8266连接阿里云物联网平台(附代码)

    代码: https://download.csdn.net/download/cainiaofu/13973012 阿里云lot Studio控制 Web开发(程序已精简) 分享一下自己使用stm32 ...

  6. 微信小程序连接物联网(三):微信小程序远程遥控宿舍开门 基于NodeMCU通过MQTT协议连接阿里云物联网平台

    索引 这是用微信小程序遥控开门的系列文章,具体微信小程序连接物联网的代码在第三章提及. 微信小程序连接物联网(一):初始化ESP8266 NodeMCU 微信小程序连接物联网(二):NodeMCU L ...

  7. 阿里云HaaS100物联网开发板学习笔记(四)轻应用初步--用javascript连接阿里云物联网平台

    摘要:本篇文章讲解如何使用JavaScript"轻应用"连接阿里云物联网平台并上报一个数据.仍然延续前几篇文章的结构,从安装软件环境开始讲,以使零基础的同学看了本篇文章之后,也能够 ...

  8. 【4G模块】中移物联ML302 + GD32F407 使用支持MQTT协议AT指令接入阿里云物联网平台

    目录 〇.目的.GD32.ML302相关简介 0.目的: 1.ML302: 2.LTE Cat.1: 3.GD32F407 一.GD芯片创建工程写驱动:LED.串口4.4G模块 1.创建工程 2.LE ...

  9. 移远BC25/28/35GMQTT连接阿里云物联网平台并实现属性上报

    一.平台侧操作 创建一个产品,并添加一个设备,获取到设备接入所需的验证信息.本实验选择的产品品类为标准品类--智慧园区--气象站监测仪.(你也可以自定义产品类别,但是后期数据上报的关键字需要自己去添加 ...

最新文章

  1. java操作大文件复制
  2. Spring3MVC+Mybatis3.1框架下的事务
  3. Android面试收集录 2D绘图与动画技术
  4. 计算机组成原理题库带答案详解,计算机组成原理试试题库(含答案解析) -.doc
  5. 【OpenCV 例程200篇】01. 图像的读取(cv2.imread)
  6. 面试题 php随机获取概率结果
  7. 关于“Pycharm复制到word文档出现乱码”问题——解决方法
  8. JS提升:Promise中reject与then之间的关系
  9. 史上最详细清样/校样(Proof)处理流程Hindawi
  10. mysql索引详细介绍简书_细说mysql索引
  11. PX4 FMU启动流程 2. 二、 nsh_initscript
  12. 55-经典问题分析四
  13. AI绘画能力的起源:通俗理解VAE、扩散模型DDPM、DETR、ViT/Swin transformer
  14. 微型计算机百度云,STONE_百度云资源_盘多多如风搜_盘搜搜_哎哟喂啊
  15. python如何画散点图
  16. MySql Order By 多个字段 排序规则
  17. opengl剪裁空间和视口空间中不遵从右手定则,而是遵从左手定则
  18. 用python获取图形对象的坐标集合
  19. 使用ggplot2绘制频率分布图
  20. 真正说透Redis五种数据结构

热门文章

  1. iOS开发——深拷贝与浅拷贝详解
  2. 聊聊 Kafka:协调者 GroupCoordinator 源码剖析之 FIND_COORDINATOR
  3. Visual Studio 2022安装与使用教程
  4. 设置Visual Studio颜色主题
  5. 【跨年】《2020年跨年演讲合集-吴晓波、罗振宇、丁祖昱等》(附下载链接)...
  6. android 虚拟键盘高度,获取Android中虚拟键盘的高度
  7. ArcGIS Pro鹰眼图快速制图
  8. 【行业排名】第三方支付平台有哪些?第三方支付平台排名
  9. python代码实现房价预测
  10. CRLF、LF、CR详解及在git中应用