首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >nodemcu无法连接到MQTT云服务器,代码如下(必须疑问号结尾手动狗头)?

nodemcu无法连接到MQTT云服务器,代码如下(必须疑问号结尾手动狗头)?

提问于 2020-03-12 21:28:29
回答 0关注 0查看 281

#include <ESP8266WiFi.h>

#include <PubSubClient.h>

#include "DHT.h"

#define DHTPIN D4 // what pin we're connected to

#define wifi_ssid "TP-LINK_A051"

#define wifi_password "19730908"

#define CLIENT_ID "OFUPTQ0E0Dwechat"

#define MQTT_USRNAME "OFUPTQ0E0Dwechat;12010126;ZZD4M;1620016479"

#define MQTT_PASSWD "8201b39d2bee4244ac369e4f8d7639cc54e3f6d298ece9c492725dd96cfeb3d9;hmacsha256"

#define mqtt_server "OFUPTQ0E0D.iotcloud.tencentdevices.com" // MQTT Cloud address

#define humidity_topic "OFUPTQ0E0D/wechat/humidity"

#define temperature_topic "OFUPTQ0E0D/wechat/temperature"

#define DHTTYPE DHT11 // DHT 11

WiFiClient espClient;

PubSubClient client(espClient);

DHT dht(DHTPIN, DHTTYPE);

void setup() {

Serial.begin(9600);

setup_wifi();

client.setServer(mqtt_server,1883);

dht.begin();

}

void setup_wifi() {

delay(10);

WiFi.begin(wifi_ssid, wifi_password);

while (WiFi.status() != WL_CONNECTED) {

delay(500);

Serial.print(".");

}

}

void reconnect() {

// Loop until we're reconnected

while (!client.connected()) {

Serial.print("Attempting MQTT connection...");

if (client.connect("CLIENT_ID, MQTT_USRNAME, MQTT_PASSWD")) {

Serial.println("connected");

} else {

Serial.print("failed, rc=");

Serial.print(client.state());

Serial.println(" try again in 5 seconds");

delay(5000);

}

}

}

bool checkBound(float newValue, float prevValue, float maxDiff) {

return newValue < prevValue - maxDiff || newValue > prevValue + maxDiff;

}

long lastMsg = 0;

float temp = 0.0;

float hum = 0.0;

float diff = 1.0;

void loop() {

if (!client.connected()) {

reconnect();

}

client.loop();

long now = millis();

if (now - lastMsg > 30000) {

// Wait a few seconds between measurements

lastMsg = now;

float newTemp = dht.readTemperature();

float newHum = dht.readHumidity();

if (checkBound(newTemp, temp, diff)) {

temp = newTemp;

Serial.print("New temperature:");

Serial.println(String(temp).c_str());

client.publish(temperature_topic, String(temp).c_str(), true);

}

if (checkBound(newHum, hum, diff)) {

hum = newHum;

Serial.print("New humidity:");

Serial.println(String(hum).c_str());

client.publish(humidity_topic, String(hum).c_str(), true);

}

}

}

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档