esp8266WiFi模块通过MQTT连接华为云
esp8266WiFi模块通过MQTT连接华为云
- 总结:
- 一、 MQTT透传AT固件烧录
- 二、 串口调试
- 2.1 设置模块为STA模式
- 2.2 连接WiFi
- 2.3 设置MQTT的登陆用户名与密码
- 2.4 设置MQTT的ClientID
- 2.5 设置MQTT接入地址
- 2.6 订阅设备属性上报的主题
- 2.7 上传数据
- 2.8 平台下发命令
- 2.9 华为云物联网平台的->监控运维->在线调试,完成命令下发
- 三、示例代码
最近突然想做物联网的项目,做一个类似远程控制家里的设备,比如控制灯,电视机,空调这样的,同时能够将家里的温湿度等信息可以实时上传到手机里。
刚开始认为这个不就是一个很简单的项目嘛,几个小时之内就能做出来,可是没想到诸事不顺,遇到各种各样的bug,最后竟然花了我周六和周末两个下午才做出来做出来(不要问为什么是周六和周末的下午,因为早上起不来),最后终于调通了因此写这篇文章来记录一下。
我手里正好有一块正点原子的esp8266,并且以前正好参加过华为云的训练营ModelBoxAI,了解一点华为云的知识,然后就用这两个东西来度过愉快的周末。
参考链接: ESP8266接入华为云物联网平台
总结:
坑一:esp8266出厂固件不支持MQTT功能,必须自己在链接 AT固件汇总 上下载。
坑二:下载固件的时候一定要注意你用的ESP8266系列模组的型号(这里我刚开始没注意,花了我很久时间)。
坑三:正点原子esp8266型号是esp-01,固件必须用1112_esp8266-4M。
坑四:烧录的时候注意要把GPIO0接地,才能进入烧录模式。
坑五:找到华为云平台接入地址,且保证平台在线,我这里是用的免费版。
一、 MQTT透传AT固件烧录
我最终使用的是stm32+AT指令控制esp01接入华为云联网平台完成数据上报与命令处理,在开发的时候先用usb-ttl模块连接esp8266调试
出厂固件不支持全部的MQTT功能,这里我们首先对esp8266进行MQTT固件烧录。
在这里有个问题,根据下面官网图,我用的esp-01,Flash是8M
应该下载 MQTT 透传AT固件(固件号:1471)
可是我下载进去后,总是卡在 连接的第三步
AT+MQTTUSERCFG=0,1,"NULL","填写用户名","填写密码",0,0,""
AT命令输入后,总是返回error,这里卡了我好久。
在尝试各种方法之后,排除了所有可能性之后,我开始怀疑是不是我烧录的固件错了?
尼玛,不可能啊?官方怎么会错?


然后我下载了官方给的两个固件,如下图,最后成功了。
这里我也不知道为什么会这样,如果有懂的小伙伴可以在评论区解答一下。

二、 串口调试
2.1 设置模块为STA模式
AT+CWMODE=1
2.2 连接WiFi
AT+CWJAP="填写wifi名称","填写WiFi密码"
2.3 设置MQTT的登陆用户名与密码
AT+MQTTUSERCFG=0,1,"NULL","填写用户名","填写密码",0,0,""
用户名与密码为华为云MQTT三元组的相关信息,可以在链接: MQTT ClientId生成工具生成
2.4 设置MQTT的ClientID
AT+MQTTCLIENTID=0,"填写ClientID"
设置MQTT的ClientID,ClientID华为云MQTT三元组的相关信息,在上一步骤中获取的三元组中查看
2.5 设置MQTT接入地址
AT+MQTTCONN=0,"填写MQTT接入的地址",1883,1
设置MQTT接入地址,华为云物联网平台的地址,具体参考控制台首页的平台接入地址
2.6 订阅设备属性上报的主题
AT+MQTTSUB=0,"订阅的主题",1
完成属性上报的话需要先订阅设备属性上报的主题,此处可填写为:
$oc/devices/填写设备ID/sys/properties/report
2.7 上传数据
AT+MQTTPUB=0," 订阅的主题 ","上报的json数据",0,0
上报的json数据:
$oc/devices/64047c741eaf704179abaa58_Temp_test/sys/properties/report ","{\"services\":[{\"service_id\":\"esp8266_data\"\,\"properties\":{\"temp\": 100}}]}
建议大家完成这步时,先使用MQTT.fx进行设备属性上报测试,确保数据无误正常上传。
在完成上面的每一步时,系统都会打印一个OK
2.8 平台下发命令
AT+MQTTSUB=0,"订阅的主题topic ",1
我们在这填写的是平台下发命令的主题:$oc/devices/填写设备ID/sys/commands/#
2.9 华为云物联网平台的->监控运维->在线调试,完成命令下发
三、示例代码
AT+MQTTUSERCFG=0,1,"NULL","6404eaf704179abaa58_Temp_test","3859a228b3bcdd143d94eff8198d58bb801b820e528b96ea6ca6ece86",0,0,""OK
AT+MQTTCLIENTID=0,"64047c7704179abaa58_Temp_test_0_0_2023030511"OK
AT+MQTTCONN=0,"04dcad.st1.iotda-device.cn-north-4.myhuaweicloud.com",1883,1
+MQTTCONNECTED:0,1,"04d3ad.st1.iotda-device.cn-north-4.myhuaweicloud.com","1883","",1OK
AT+MQTTSUB=0,"$oc/devices/64047cf704179abaa58_Temp_test/sys/properties/report",1OK
AT+MQTTPUB=0," $oc/devices/6404eaf704179abaa58_Temp_test/sys/properties/report ","{\"services\":[{\"service_id\":\"esp8266_data\"\,\"properties\":{\"temp\": 100}}]}",0,0OK
相关文章:
esp8266WiFi模块通过MQTT连接华为云
esp8266WiFi模块通过MQTT连接华为云总结:一、 MQTT透传AT固件烧录二、 串口调试2.1 设置模块为STA模式2.2 连接WiFi2.3 设置MQTT的登陆用户名与密码2.4 设置MQTT的ClientID2.5 设置MQTT接入地址2.6 订阅设备属性上报的主题2.7 上传数据2.8 平台下发命令2.9 华为云物…...
苹果新卫星专利公布,苹果Find My功能知多少
根据美国商标和专利局(USPTO)公示的清单,苹果公司获得了一项新的卫星专利,可在非地面网络(Non-Terrestrial Networks,NTN)中定位用户设备(iDevice、MacBook 等)。 在专利…...
[ICLR‘22] DAB-DETR: Dynamic Anchor Boxes Are Better Queries for DETR
paper: https://arxiv.org/pdf/2201.12329.pdfcode: GitHub - IDEA-Research/DAB-DETR: [ICLR 2022] DAB-DETR: Dynamic Anchor Boxes are Better Queries for DETR将位置相关性计算显式的引入到decoder中,通过box坐标(x, y, w, h) 影响Q和K的相关性计算。特征图要有…...
双周赛99(贪心、数学、区间合并计算、换根DP)
文章目录双周赛99[6312. 最小和分割](https://leetcode.cn/problems/split-with-minimum-sum/)贪心[6311. 统计染色格子数](https://leetcode.cn/problems/count-total-number-of-colored-cells/)找规律[6313. 统计将重叠区间合并成组的方案数](https://leetcode.cn/problems/c…...
OpenText Exceed TurboX(ETX) 客户案例——弗吉尼亚理工大学
弗吉尼亚理工大学简化了高性能计算的使用。OpenText Exceed TurboX 提供高性能图形远程应用程序访问,提高工作效率 挑战 图形界面响应缓慢,影响用户使用; 对复制应用程序输出文件进行本地分析时,影响带宽和速度; 使用…...
【Python】torch.norm()用法解析
【Python】torch.norm()用法解析 文章目录【Python】torch.norm()用法解析1. 介绍1.1 p-范数1.2 Frobenius 范数1.3 核范数2. API3. 示例1. 介绍 torch.norm()是对输入的tensor求对应的范数。tensor的范数有以下三种: 1.1 p-范数 1.2 Frobenius 范数 即ÿ…...
C++核心编程<内存分区模型>(1)
C核心编程<内存分区模型>1.内存分区模型1.1内存分区模型概述1.2内存分区的意义1.3程序允许前1.3.1代码区1.3.2全局区1.3.2.1全局区的演示1.4程序运行后1.4.1栈区1.4.1.1栈区演示1.4.2堆区1.4.2.1堆区演示1.5new操作符1.5.1new操作的概述1.内存分区模型 1.1内存分区模型概…...
电路基础(1)电路模型和电路定律
电路中的电压、电流之间具有两种约束,一种是由电路元件决定的元件约束;另一种是元件间连接而引入的几何约束(就是拓扑约束),后者由基尔霍夫定律来表达。基尔霍夫定律是集总参数电路的基本定律。 1.电路和电路模型电源又…...
pytest 基础
pytest安装 安装 pip install -U pytest 验证安装 pytest --version 约束: 所有的测试文件名都需要满足test_ *.py格式或* _test.py格式。 测试文件中的测试类以Test_开头,并且不能带有 init 方法。 测试类中可以包含一个或多个test_开头的函数。 步骤…...
软测入门(七)python操作数据文件(Json、yaml、csv、excel、xml)
python操作文件 txt文件 read() : 读取所有readline() : 读取一行readlines() : 读取所有,且以行为单位,放入list列表中 file open(r"F:\abc.txt", "r", encoding"utf-8") # 以utf-8格式读取文件 # 读取所有 # print…...
【小程序】django学习笔记1
网页能用,不知道小程序能不能用。应该能吧。。。。。创建django程序文件包,xxx处是给该文件夹起个名django-admin startproject xxx一个project是由很多个app(小应用)组成的在文件夹目录下创建一个app,xxx处给该app起个…...
MySQL常用函数整理
MySQL常用函数整理sql函数分类一、流程控制1、判断值为null或空字符串2、IF函数3、IFNULL函数4、CASE函数(1) 相当于switch case的作用(2) 相当于if elseif的作用5、COALESCE函数二、字符串类(GBT答案)1、用于select、insert等子句中2、用于where子句中其…...
设计模式—“组件协作”
现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。 典型模式有:Template Method、Observer、Strategy 一、Template Method 动机 在软件构建过程中,对于某一…...
vue里使用driver.js实现项目功能向导指引
介绍 https://github.com/kamranahmedse/driver.js driver.js 是一个轻量级、无依赖的原生JavaScript引擎,在整个页面中驱动用户的注意力,强大的、高度可定制的原生JavaScript引擎,无外部依赖,支持所有主流浏览器。 安装 npm …...
详解JAVA类加载
目录 1.概述 2.双亲委派 3.ServiceClassLoader 4.URLClassLoader 5.加载冲突 1.概述 概念: 类加载器(Class Loader)是Java虚拟机(JVM)的一个重要组件,负责加载Java类到内存中并使其可以被JVM执行。类…...
高斯分布、高斯混合模型、EM算法详细介绍及其原理详解
相关文章 K近邻算法和KD树详细介绍及其原理详解朴素贝叶斯算法和拉普拉斯平滑详细介绍及其原理详解决策树算法和CART决策树算法详细介绍及其原理详解线性回归算法和逻辑斯谛回归算法详细介绍及其原理详解硬间隔支持向量机算法、软间隔支持向量机算法、非线性支持向量机算法详细…...
[Linux入门篇]一篇博客解决C/C++/Linux System Call文件操作接口的使用
目录 0.前言 1.C / C ->文件操作 1.1 C语言文件操作 1.1.1 C语言文件打开/关闭/写入 1.1.2 C语言文件的追加操作 1.1.3 C语言文件的读取 1.2 C语言文件操作 1.2.1 C文件打开 / 关闭 / 写入 1.2.2 C文件读取 1.2.3 文件追加 2.三个默认输入输出流 2.1 C语言中的三…...
数据结构和算法学习记录——删除有序数组中的重复项、合并两个有序数组
去重删除有序数组中的重复项题目来自:https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/题目描述给你一个 升序排列 的数组 nums ,请你原地删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数…...
FPGA实现模拟视频BT656解码 TW2867四路PAL采集拼接显示 提供工程源码和技术支持
目录1、前言2、模拟视频概述3、模拟视频颜色空间4、逐行与隔行5、BT656数据与解码BT656数据格式BT656数据解码6、TW2867芯片解读与配置TW2867芯片解读TW2867芯片配置TW2867时序分析7、设计思路与框架8、vivado工程详解9、上板调试验证10、福利:工程代码的获取1、前言…...
【建议收藏】超详细的Canal入门,看这篇就够了!!!
概述 canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)。 背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
