帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
服务器资讯 / 香港服务器租用 / 香港VPS租用 / 香港云服务器 / 美国服务器租用 / 台湾服务器租用 / 日本服务器租用 / 官方公告 / 帮助文档
ESP8266入门教程11:连接MQTT服务器
发布时间:2024-02-29 15:32:43   分类:帮助文档
ESP8266入门教程11:连接MQTT服务器 将第三方库PubSubClient下载到lib文件夹 git clone https://github.com/knolleary/pubsubclient.git 一、阿里云IOT使用 1、打开阿里云IOT官网,登录阿里云账号 https://iot.console.aliyun.com 2、创建实例 3、新建产品 4、自定义主题  5、添加设备  6、查看设备配置   二、连接阿里云MQTT服务器 1、修改PubSubClient.h头文件,否则无法连接阿里云MQTT服务器 将MQTT_MAX_PACKET_SIZE的值改为1024 将MQTT_KEEPALIVE的值改为65 2、代码解析 第27行:创建WIFI客户端 第28行:创建MQTT客户端 第29行:创建任务对象 第30行:定义MQTT消息发送函数 第32行:发送消息前先判断MQTT服务器是否连接成功 第37行:发送MQTT消息 第47行:定义MQTT消息接收函数 第53行:定义MQTT服务器连接函数 第54行:请求连接MQTT服务器 第59行:订阅MQTT主题 第64行:开始定时任务,每隔三秒发送一条MQTT消息 第67行:结束定时任务 第82行:设置MQTT服务器主机地址和端口号 第84行:设置MQTT消息接收回调函数 第94行:保持MQTT客户端心跳,否则会连接中断 三、测试效果 四、完整代码 #include #include #include #include "../lib/pubsubclient/src/PubSubClient.h" #define WIFI_SSID "WWW" #define WIFI_PASS "00000000" #define MQTT_HOST "MQTT服务器地址" #define MQTT_PORT 1883 #define MQTT_CLIENT_ID "MQTT客户端名称" #define MQTT_USER "MQTT用户名" #define MQTT_PASS "MQTT登录密码" void connectWIFI() { // 连接WIFI热点 WiFi.begin(WIFI_SSID, WIFI_PASS); int retryCount = 1; while (WiFi.status() != WL_CONNECTED) { Serial.println("重试次数: " + String(retryCount)); retryCount++; delay(1000); } Serial.println("WIFI连接成功"); Serial.println("IP地址: " + WiFi.localIP().toString()); } WiFiClient wifiClient; PubSubClient mqttClient(wifiClient); Ticker ticker; void sendMsg() { if (mqttClient.connected()) { String topic = "/a1aeNGS45Gg/"; topic += "ESP8266"; topic += "/user/info"; String payload = "Hello World !"; if (mqttClient.publish(topic.c_str(), payload.c_str())) { Serial.println("MQTT消息发送成功"); } else { Serial.println("MQTT消息发送失败"); } } else { Serial.println("MQTT服务器未连接"); } } void recvMsg(char *topic, uint8_t *payload, size_t length) { Serial.println("topic: " + String(topic)); Serial.println("payload: " + String((char *)payload).substring(0, length)); Serial.println("length: " + String(length)); } void connectMQTT() { if (mqttClient.connect(MQTT_CLIENT_ID, MQTT_USER, MQTT_PASS)) { Serial.println("MQTT服务器连接成功"); String topic = "/a1aeNGS45Gg/"; topic += "ESP8266"; topic += "/user/info"; if (mqttClient.subscribe(topic.c_str())) { Serial.println("MQTT主题订阅成功"); } else { Serial.println("MQTT主题订阅失败"); } ticker.attach(3, sendMsg); } else { Serial.println("MQTT服务器连接失败"); ticker.detach(); delay(3000); } } void setup() { // put your setup code here, to run once: // 设置波特率 Serial.begin(9600); Serial.println(); // 连接WIFI热点 connectWIFI(); // 配置MQTT服务器 mqttClient.setServer(MQTT_HOST, MQTT_PORT); // 设置回调函数 mqttClient.setCallback(recvMsg); // 连接MQTT服务器 connectMQTT(); } void loop() { // put your main code here, to run repeatedly: // 判断MQTT服务器是否连接成功 if (mqttClient.connected()) { mqttClient.loop(); } else { connectMQTT(); } }
香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价