0_外设学习_ESP8266+云流转(no 0基础)

1、环境+要求

        2个ESP8266模块、2个USB转ESP8266,通过ESP8266_A-->(阿里云)云流转-->ESP8266_B,实现ESP8266_A发布话题,ESP8266_B订阅该话题。

2、阿里云云流转配置

        1、基础要求:

                添加1个产品(包含2个设备,标记2个设备的MQTT的信息(略))

        2、只讲重点

                阿里云云流转配置(网上很多-略),需要注意的重点是:数据源中的话题,可以一样

若需要修改为自定义的话题,可以在产品一栏进行添加,然后在产品流转栏删除更换新的话题

3、ESP8266_B作为订阅配置

        1、添加库文件ArduinoMqttClient
               在arduino里下载即可

        

        2、编写ESP8266_B的订阅代码

#include <ArduinoMqttClient.h>
#if defined(ARDUINO_SAMD_MKRWIFI1010) || defined(ARDUINO_SAMD_NANO_33_IOT) || defined(ARDUINO_AVR_UNO_WIFI_REV2)#include <WiFiNINA.h>
#elif defined(ARDUINO_SAMD_MKR1000)#include <WiFi101.h>
#elif defined(ARDUINO_ARCH_ESP8266)#include <ESP8266WiFi.h>
#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_GIGA) || defined(ARDUINO_OPTA)#include <WiFi.h>
#elif defined(ARDUINO_PORTENTA_C33)#include <WiFiC3.h>
#elif defined(ARDUINO_UNOR4_WIFI)#include <WiFiS3.h>
#endif#include "arduino_secrets.h"
char ssid[] = "wifi名字";    // 你的WiFi名称
char pass[] = "wifi密码";    // 你的WiFi密码WiFiClient wifiClient;
MqttClient mqttClient(wifiClient);// MQTT服务器信息
const char broker[]    = "设备2的MQTT的mqttHostUrl";
int        port        = 1883;
const char willTopic[] = "arduino/will";// 重点:订阅的主题需要与发布的主题匹配(这里修改为发布日志中的主题)
//如/k1j6lspLmdS/ESP8266_B/user/get,ESP8266_B订阅话题
// /k1j6lspLmdS/ESP8266_B/user/update,ESP8266_B发布话题
//注意订阅和发布的设备名字和get/update
const char inTopic[]   = "/k1j6lspLmdS/ESP8266_B/user/get";  // 改为发布的主题
const char outTopic[]  = "arduino/out";// 设备认证信息(保持不变)
const char clientId[] = "MQTT的clientId";
const char username[] = "MQTT的username";
const char password[] = "MQTT的密码";const long interval = 10000; 
unsigned long previousMillis = 0;
int count = 0;void setup() {Serial.begin(115200);while (!Serial) {;}  // 等待串口连接// 连接WiFiSerial.print("连接WiFi: ");Serial.println(ssid);while (WiFi.begin(ssid, pass) != WL_CONNECTED) {Serial.print(".");delay(5000);}Serial.println("\nWiFi连接成功");// 配置MQTT客户端mqttClient.setId(clientId);mqttClient.setUsernamePassword(username, password);// 设置遗嘱消息String willPayload = "设备离线";mqttClient.beginWill(willTopic, willPayload.length(), true, 1);mqttClient.print(willPayload);mqttClient.endWill();// 连接MQTT服务器Serial.print("连接MQTT服务器: ");Serial.println(broker);if (!mqttClient.connect(broker, port)) {Serial.print("MQTT连接失败! 错误码: ");Serial.println(mqttClient.connectError());while (1);}Serial.println("MQTT服务器连接成功");// 设置消息接收回调mqttClient.onMessage(onMqttMessage);// 关键修正:执行实际订阅操作int subscribeQos = 0;  // QoS等级if (mqttClient.subscribe(inTopic, subscribeQos)) {Serial.print("成功订阅主题: ");Serial.println(inTopic);} else {Serial.print("订阅主题失败: ");Serial.println(inTopic);
}
}void loop() {mqttClient.poll();  // 必须定期调用,用于接收消息和保持连接
}// 消息接收回调函数
// 消息接收回调函数
void onMqttMessage(int messageSize) {// 存储接收到的主题和消息内容String topic = mqttClient.messageTopic();String payload;// 读取消息内容while (mqttClient.available()) {payload += (char)mqttClient.read();}// 打印接收到的信息Serial.println("-------------------");Serial.print("收到消息,主题: '");Serial.print(topic);Serial.print("',长度: ");Serial.println(messageSize);Serial.print("内容: ");Serial.println(payload);Serial.println("-------------------");// 在这里可以添加消息处理逻辑// 例如判断特定命令并执行相应操作if (payload == "ON") {Serial.println("执行打开操作");// digitalWrite(LED_PIN, HIGH);  // 示例:控制LED} else if (payload == "OFF") {Serial.println("执行关闭操作");// digitalWrite(LED_PIN, LOW);   // 示例:控制LED}
}

3、上述过程中,编写代码在arduino中,使用USB转ESP8266,将代码烧录到ESP8266模块里。

4、ESP8266_A发布话题

5、ESP8266_B订阅话题

6、上述代码
https://gitee.com/dawn-of-a-new-century/learn_peripheral_modules

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92461.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI漫画翻译器-上传图片自动翻译,支持多语言

本文转载自&#xff1a;AI漫画翻译器-上传图片自动翻译&#xff0c;支持多语言 - Hello123 ** 一、AI 漫画翻译器的核心定位 AI 漫画翻译器是专为漫画爱好者设计的智能翻译平台&#xff0c;通过深度学习技术实现漫画文本的精准识别与本地化转换。它能在保留原图排版和艺术风格…

有效介电常数

有效介电常数:如果导体的横截面被介质完全包裹&#xff0c;位于导体之间的电力线(如带状线)就会感受到相同的介电常数。然而&#xff0c;对于微带线、双绞线或共面线&#xff0c;导体周围的介质不是均匀的&#xff0c;所以一些电力线穿过空气&#xff0c;而另一些则穿过介质。图…

51c视觉~合集16

自己的原文哦~ https://blog.51cto.com/whaosoft/14117000 #港大成立计算与数据科学学院&#xff0c;计算机统计双剑合璧 刚刚&#xff0c;港大成立新的计算与数据科学学院&#xff0c;由计算机科学系和统计学系合并。马毅教授被任命为学院首任院长。 马毅教授官宣…

惯量时间常数 H 与转动惯量 J 的关系解析

惯量时间常数 H 与转动惯量 J 的关系解析 在电力系统稳定分析、旋转机械动力学等领域&#xff0c;惯量时间常数&#xff08;H&#xff09; 和 转动惯量&#xff08;J&#xff09; 是描述旋转体惯性特性的两个核心参数。二者虽然出发点不同&#xff0c;但在数学和物理层面具有紧…

DeepSeek-V3/R1 架构深度剖析:国产大模型的创新突围之路

本文深入解析 DeepSeek-V3/R1 的核心架构设计,揭示其如何在模型效率、推理性能与知识处理等维度实现突破,成为中文大模型领域的标杆之作。 引言:大模型竞技场中的"中国速度" #mermaid-svg-9Kk7tHp57CilWIFU {font-family:"trebuchet ms",verdana,arial,…

【从0到1制作一块STM32开发板】5. 整体布局

在之前的学习中&#xff0c;我偏向的多是嵌入式软件开发的工作&#xff0c;如果想要自己diy一款具备特定功能的嵌入式工具的话&#xff0c;还需要具备画板子的能力。但由于我目前还没学模电&#xff0c;故我打算直接找个b站的学习视频先跟着画个板子出来&#xff0c;简单理解各…

nflsoi 8.8 题解

感觉这把难&#xff0c;不过今天状态比较差&#xff0c;头昏昏的。怎么后面几道蓝题别人光速切掉了&#xff1f;不过赛后再来看感觉也不算特别麻烦的题目。 C.#11698 双循环锦标赛 / TopCoder 10687 The Basketball Div One 题意 约翰与布鲁斯对团体体育赛事颇有研究&#xff0…

面向真实场景的定制化图像降质模型设计方案

面向真实场景的定制化图像降质模型设计方案 1. 核心思路&#xff1a;从真实图像中学习退化模型 1.1 问题定义&#xff1a;合成数据与真实数据的域差距 在超分辨率&#xff08;Super-Resolution, SR&#xff09;算法的实际应用中&#xff0c;一个核心挑战源于训练数据与真实测…

计算机网络:一个 IP 地址可以同时属于 A 类、B 类或 C 类吗?

一个IP地址不可以同时属于A类、B类或C类。A类、B类、C类IP地址的划分有明确的规则&#xff0c;通过网络位的最高几位即可唯一确定其类别&#xff0c;不存在重叠的可能。 IP地址分类的核心规则&#xff08;针对IPv4&#xff09; IPv4地址由32位二进制数组成&#xff0c;通常分为…

利用哥斯拉(Godzilla)进行文件上传漏洞渗透实战分析

利用哥斯拉(Godzilla)进行文件上传漏洞渗透实战分析本实验通过DVWA靶机环境演示如何利用哥斯拉工具进行文件上传漏洞的渗透测试&#xff0c;最终获取目标服务器控制权限。实验环境 攻击工具&#xff1a;哥斯拉(Godzilla) v4.0.1靶机地址&#xff1a;http://192.168.3.101/dvwa目…

MMBFJ310LT1G一款N沟道JFE 晶体管适用于高频放大器和振荡器等射频应用MMBFJ310LT1

MMBFJ310LT1G 是一款 N沟道JFET晶体管 &#xff0c;适用于高频放大器和振荡器等射频应用。以下是其核心性能参数&#xff1a;基本参数 •‌漏源击穿电压‌&#xff1a;25V ‌•栅源击穿电压‌&#xff1a;25V ‌•漏源电流&#xff08;Vgs0V&#xff09;‌&#xff1a;24mA至60…

【洛谷题单】--分支结构(二)

&#x1f525;个人主页&#xff1a;草莓熊Lotso &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a; 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言&#xff1a;生活是默默的坚持&#xff0c;毅力是永久的…

Django模型开发全解析:字段、元数据与继承的实战指南

目录 一、字段类型&#xff1a;精准匹配业务需求 1. 字符型字段的“长短之争” 2. 数值型字段的“范围控制” 3. 时间日期型字段的“自动记录” 4. 布尔型字段的“三态处理” 5. 文件字段的“存储策略” 二、元数据&#xff1a;控制数据库与行为的“幕后玩家” 1. 数据…

使用 Grunt 替换 XML 文件中的属性值

使用 Grunt 替换 XML 文件中的属性值 在 Grunt 中替换 XML 文件的属性值可以通过几种方式实现&#xff0c;以下是详细的解决方案&#xff1a; 方法1&#xff1a;使用 grunt-xmlpoke 插件&#xff08;推荐&#xff09; 1. 安装插件 npm install grunt-xmlpoke --save-dev2. 配置…

docker缓存目录转移设置和生效过程

docker缓存目录默认在系统盘/var/lib/docker&#xff0c;存在系统盘打满&#xff0c;导致系统崩溃问题。 这里尝试将docker缓存目录转移到数据存储盘/store/docker。 1 查看现有缓存目录 docker info 一般情况下是 Docker Root Dir: /var/lib 2 停止服务 systemctl stop dock…

滴滴云原生可观测 HUATUO 开源项目正式入驻 CCF

8月2日&#xff0c;滴滴宣布其开源云原生操作系统可观测性项目HUATUO正式入驻中国计算机学会&#xff08;CCF&#xff09;&#xff0c;加入其重点孵化项目序列。本次入驻不仅体现了滴滴长期践行开源共建共享的理念&#xff0c;也希望通过行业协作&#xff0c;共同推动可观测领域…

python学智能算法(三十二)|SVM-软边界理解

【1】引言 前序学习进程中&#xff0c;已经对SVM的KKT条件&#xff0c;Slater条件等进行了探究&#xff0c;但这些都是完美情况&#xff0c;数据线性可分。 实际生活中需要处理的数据往往因为各式各样的原因会不可分&#xff0c;所以必须学会容忍一些小错误&#xff0c;完美的…

实名认证 —— 腾讯云驾驶证识别接口

官方地址&#xff1a; API Explorer - 云 API - 控制台https://console.cloud.tencent.com/api/explorer?Productocr&Version2018-11-19&ActionDriverLicenseOCR前置操作与下面博客前置操作一致&#xff1a;实名认证 —— 腾讯云身份证认证接口-CSDN博客 首先编写Con…

科技云报到:Agent应用爆发,谁成为向上托举的力量?

科技云报道原创。经过两年多的发展后&#xff0c;AI开始加速进入Agent时代。当AI从“被动响应”迈向“主动决策”&#xff0c;AI Agent正成为连接数字世界与物理世界的核心枢纽。从自动处理客户服务工单的企业Agent&#xff0c;到协调多步骤科研实验的学术Agent&#xff0c;再到…

Python字典高阶操作:高效提取子集的技术与工程实践

引言&#xff1a;字典子集提取在现代数据处理中的关键作用在Python数据工程领域&#xff0c;字典结构作为核心数据载体占比高达68%&#xff08;2025年Python生态调查报告&#xff09;。字典子集提取作为高频操作&#xff0c;在以下场景中至关重要&#xff1a;​​API响应处理​…