当前位置:首页 > 技术分享 > 正文内容

MQTT-ESP8266远程控制LED,8266端代码

lmwmm2年前 (2024-12-30)技术分享1506
#include <ESP8266WiFi.h>
#include <PubSubClient.h>

// 自己的无线名称
const char* ssid = "XXX";
// 自己的无线密码
const char* password = "XXX";
// mqtt服务器地址,服务器地址
const char* mqttServer = "so.lmwmm.com";

WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);

int GPIO = 4;
//8266使用接口

void setup() {
   // 设置串口
   Serial.begin(115200);
   // 设置内置LED引脚为输出模式
   pinMode(GPIO, OUTPUT);
 
   // 连接WiFi
   WiFi.mode(WIFI_STA);
   connectWifi();

   // 设置MQTT服务器和端口号
   mqttClient.setServer(mqttServer, 1883);
   mqttClient.setCallback(receiveCallback);

   // 连接MQTT服务器
   connectMQTTServer();
}

void loop() {
  // 开发板成功连接服务器    
  if (mqttClient.connected()) {
    // 保持客户端心跳
    mqttClient.loop();          
  } else {
    // 尝试连接服务器                  
    connectMQTTServer();    
  }
}

void connectMQTTServer(){
  // 避免与其它ESP8266设备重名 需要修改-----------
  String clientId = "connect_all_esp8266_mqtt_led_client" + WiFi.macAddress();

  // 连接MQTT服务器
  if (mqttClient.connect(clientId.c_str())) { 
    Serial.println("MQTT Connected.");
    // 订阅指定主题
    subscribeTopic();
  } else {
    Serial.print("MQTT Server Connect Failed. Client State:");
    Serial.println(mqttClient.state());
    delay(3000);
  }  
}

// 收到信息
void receiveCallback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message Received [");
  Serial.print(topic);
  Serial.print("] ");
 
  if ((char)payload[0] == '1') {     // 如果收到的信息以“1”为开始
    digitalWrite(GPIO, HIGH);  // 则点亮LED。
    Serial.println("LED ON");
  } else {                          
    digitalWrite(GPIO, LOW); // 否则熄灭LED。
    Serial.println("LED OFF");
  }
}

// 订阅指定主题
void subscribeTopic(){
  // topicString与前端代码中发送topic一致 需要修改---------------
  String topicString = "connect_all_esp8266_mqtt_led_topic";
  char subTopic[topicString.length() + 1];  
  strcpy(subTopic, topicString.c_str());
 
  // 通过串口监视器输出是否成功订阅主题以及订阅的主题名称
  if(mqttClient.subscribe(subTopic)){
    Serial.println("Subscrib Topic:");
    Serial.println(subTopic);
  } else {
    Serial.print("Subscribe Fail...");
  }  
}

// 连接wifi
void connectWifi(){

  WiFi.begin(ssid, password);
 
  // 等待WiFi连接
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi Connected!");  
  Serial.println("");
}


扫描二维码推送至手机访问。

版权声明:本文由点度点度金讯时代-BLOG发布,如需转载请注明出处。

本文链接:https://lmwmm.com/post/4411.html

分享给朋友:

“MQTT-ESP8266远程控制LED,8266端代码” 的相关文章

ChatGPT注册教程攻略:解决手机无法接收验证码问题(亲测有效)

ChatGPT注册教程攻略:解决手机无法接收验证码问题(亲测有效)

今天给大家介绍一款最近非常火爆的AI智能聊天工具:ChatGPT。它的功能:文能写文章,武能改BUG,马斯克对它的评价是“Scary Good!”。不过国内的很多小伙伴在注册这个工具的时候可能会遇到这样或那样的问题导致无法获的ChatGPT…

ChatGPT来了,到底创造了什么

ChatGPT来了,到底创造了什么

ChatGPT引爆“iPhone时刻”,其威力在于语言,使其勾连了物理、精神与观念三大世界;它会创造什么?又会如何革新人类“存在之家”?文丨FT中文网财经版主编 徐瑾ChatGPT持续走热,可以说是2023的年度事件。对此,有人欢呼,新风口…

第一批用AI替自己干活的人:一个人顶一个团队

第一批用AI替自己干活的人:一个人顶一个团队

今年是人工智能的大年。去年年底,Open AI发布了颠覆性的聊天机器人程序ChatGPT。今年3月,新版本ChatGPT 4.0发布,它可以智慧地回应所有任务,写代码、做方案,写论文...▲用建筑AI软件一键导出的大师风格效果图贝聿铭大师风…

通過CE修改器來跑滿百度網盤和迅雷的下載速度! Cheat Engine 7.5

通過CE修改器來跑滿百度網盤和迅雷的下載速度! Cheat Engine 7.5

1.Cheat Engine 是一款內存修改編輯工具 ,它允許你修改你的遊戲或軟件內存數據,以得到一些其他功能。它包括16進制編輯,反彙編程序,內存查找工具。與同類修改工具相比,它具有強大的反彙編功能,且自身附帶了外掛製作工具,可…

一口气最全解读 ChatGPT 编程超能力,13个章节、50个实例,告诉你从哪儿开始!

一口气最全解读 ChatGPT 编程超能力,13个章节、50个实例,告诉你从哪儿开始!

前言今天,我们通过十三个章节,50+个示例,为大家展示ChatGPT在编程开发方面的无限潜力。有了ChatGPT的力量,可以简化工作流程,减少错误,甚至改进代码!从作为初学者学习知识,到为面试做准备,所有你需要的,基本都覆盖了。不过也要注意…

雨林木风 Win11 64位全新系统下载

雨林木风 Win11 64位全新系统下载

下载地址 系统文件较大,推荐使用“迅雷下载”,速度更快、更稳定![Download]资源名称:雨林木风 Win11 64位全新系统下载文件大小:4.04G下载地址1:http://down.wzhyyds.xyz:81/deep/…