MQTT-ESP8266远程控制LED,8266端代码
#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("");
}
“MQTT-ESP8266远程控制LED,8266端代码” 的相关文章
今日,#GPT4做一个网站只要十秒#的话题引发网友热议。据报道,当地时间周二(3月14日),人工智能研究公司OpenAI公布了其大型语言模型的最新版本——GPT-4。相比前一个版本,它有多强大?10秒钟做出一个网站一则有关GPT4发布会的视…
hi,我是一名电子工程师。作为一名有着创新精神的潮男,大洋彼岸ChatGPT的热风刚吹来,我就率先在上面提了一个人类永恒的话题:先有鸡还是先有蛋?而刚刚,我又获得了有“中国版ChatGPT”之称的文心一言内测资格,这次我决定让它帮我设计一个…
你好,这里是AIHub,继续跟你分享人工智能相关的新鲜见闻。近日,Anthropic公司宣布,旗下类ChatGPT产品Claude已经上线Slack平台,每个人都可以免费使用。非常关键的是,国内用户可以正常使用,不再像ChatGPT那样艰难…
编辑:梓文、张倩Stable Diffusion 能在树莓派上运行了!11 个月前 Stable Diffusion 诞生,它能够在消费级 GPU 上运行的消息让不少研究者备受鼓舞。不仅如此,苹果官方很快下场,将 Stable Diffus…
Almost Human宣布的好消息让Switch玩家充满期待,经典迷宫探索RPG《魔岩山传说》将于1月15日正式登陆Switch平台。这款2012年首发的CQ9APP经典游戏汇聚了探索、生存、战斗、魔法、解谜和角色扮演等元素,为玩家带来了…
2024年苹果市场预期将推出一系列令人期待的新品,为PG游戏库用户带来更多元化的体验。其中,备受瞩目的首款头戴式装置Vision Pro被视为迈向空间运算的里程碑产品,被外媒誉为苹果迎来的划时代明星,预计将在今年初首次登陆美国市场。这款头戴…