【发布时间】:2016-05-04 13:59:32
【问题描述】:
我正在使用 ESP8266 和 arduino 使用 WiFiEsp 库。我想与 arduino 建立 MQTT 连接,所以我使用 PubSubclient 库。我收到错误:
正在尝试 MQTT 连接...失败,rc=-2 5 秒后重试
我的代码是:
#include <WiFiEsp.h>
#include <WiFiEspClient.h>
#include <WiFiEspUdp.h>
#include "SoftwareSerial.h"
#include <PubSubClient.h>
IPAddress server(212, 72, 74, 21);
char ssid[] = "atmel"; // your network SSID (name)
char pass[] = "bets56789"; // your network password
int status = WL_IDLE_STATUS; // the Wifi radio's status
// Initialize the Ethernet client object
WiFiEspClient espClient;
PubSubClient client(espClient);
SoftwareSerial soft(2,3); // RX, TX
void setup() {
// initialize serial for debugging
Serial.begin(9600);
// initialize serial for ESP module
soft.begin(115200);
// initialize ESP module
WiFi.init(&soft);
// check for the presence of the shield
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
// don't continue
while (true);
}
// attempt to connect to WiFi network
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to WPA SSID: ");
Serial.println(ssid);
// Connect to WPA/WPA2 network
status = WiFi.begin(ssid, pass);
}
// you're connected now, so print out the data
Serial.println("You're connected to the network");
//delay(2000);
//connect to MQTT server
client.setServer(server, 1883);
client.setCallback(callback);
}
//print any message received for subscribed topic
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i=0;i<length;i++) {
Serial.print((char)payload[i]);
}
Serial.println();
}
void loop() {
// put your main code here, to run repeatedly:
if (!client.connected()) {
reconnect();
}
client.loop();
}
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect, just a name to identify the client
if (client.connect("arduinoClient")) {
Serial.println("connected");
// Once connected, publish an announcement...
client.publish("outSHADAB","hello world");
// ... and resubscribe
client.subscribe("inShadab");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
我正在使用 ESP8266 和 arduino 使用 WiFiEsp 库。我想与 arduino 建立 MQTT 连接,所以我使用 PubSubclient 库
【问题讨论】:
-
我收到错误:rc=-2
-
我想用 Arduino UNO 作为控制器,esp8266 作为 wifi 模块来处理 MQTT 协议,所以我使用 pubsubclient 库来支持 MQTT。我将 esp8266 与软件串行库连接。但是问题是 pubsub 库客户端无法在软件串行上工作。所以我使用 WiFiEsp 库,如代码所述。请帮助我。
-
我也有同样的问题。你有什么解决办法吗?
-
还没有找到解决办法