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端代码” 的相关文章
话说:谁不想拥有一个自己的小程序呢?既可以赚点小钱又可以长长见识。不懂小程序的小白能不能做出来呢?那来对了,这个教程就是针对小白的。今天决定把方法开源出来,包括小程序从注册到上架,还有怎么起名能带来自然流量,及收益从哪里来!申请账号百度搜索…
近年来,“缺芯少魂”带来的卡脖子危机为众多行业敲响警钟,我们必须加快国产操作系统替代研发进程.可喜的是,随着国内操作系统市场快速增长以及政策投入力度的加大,国产操作系统正逐渐实现从无到有、从“可用”到“好用”的跨越式发展。同时,一批极具竞争…
2023年了,你升级5G网络了吗?近日,工信部公布数据显示,去年我国新建5G基站88.7万个,目前5G基站总量已达到231.2万个,占全球比例超过60%,5G网络建设稳步推进,网络覆盖能力持续提升。我国在用户占比上也领先全球水平,5G用户(…
你会在充电时玩手机吗?如今动辄两百多瓦的大功率快充时代,手机边用边充电时是否还会遭遇发热、卡顿、充电慢的问题呢?3月16日下午,“充电时真别玩手机”登上微博热搜榜首位。有很多网友担忧,边充电边玩手机,会不会导致手机爆炸?其实并不会。充电时手…
随着以自然语言处理为代表的人工智能的发展,OpenAI公司的最新成果ChatGPT近来“火出圈”。 TA不仅能和任何人“对答如流”,擅长写策划方案和调研报告,还能翻译文章、撰写邮件、创作脚本、编写代码,甚至能通过谷歌L3程序员面试和…
自从ChatGPT发布后,微软借助ChatGPT技术升级Bing搜索、office办公软件等一系列操作,给谷歌造成了很大的压力。但是,毕竟瘦死的骆驼比马大,作为早早以“AI First”作为公司战略的搜索巨头,实力不容小觑。这不,在今天凌晨…