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公司因为存在杭州和美国双机房部…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
