Basic ESP8266 MQTT example from pubsubclient library crash
Posted: Thu Mar 23, 2017 9:36 pm
hi ... i am new to the forum but i am into esp8266 for quite some time...
if the question should be in an other area of the forum please move it.
my issue is as follows... when i ran the Basic ESP8266 MQTT example from pubsubclient library and everything else from that library it works flawlessly as long as it can connect my broker.
is i close the broker it crashes with wdt 4 code.... the sketch i use is the following
i also have observed that is i send the message 0 and turn the led on pin 5 on it doesn't crash that often but is i turn the led off it crashes immediately after losing the connection to the broker
my set up is arduino ide 1.6.13 and pubsubclient version 2.6.0
i could realy use your help if you can spare the time
if the question should be in an other area of the forum please move it.
my issue is as follows... when i ran the Basic ESP8266 MQTT example from pubsubclient library and everything else from that library it works flawlessly as long as it can connect my broker.
is i close the broker it crashes with wdt 4 code.... the sketch i use is the following
i also have observed that is i send the message 0 and turn the led on pin 5 on it doesn't crash that often but is i turn the led off it crashes immediately after losing the connection to the broker
my set up is arduino ide 1.6.13 and pubsubclient version 2.6.0
i could realy use your help if you can spare the time
Code: Select all
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
// Update these with values suitable for your network.
int gpio1=5;
const char* ssid = ".........";
const char* password = "...........";
const char* mqtt_server = "...........";
WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;
void setup() {
pinMode(gpio1, OUTPUT); // Initialize the gpio1 pin as an output
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}
void setup_wifi() {
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
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();
// Switch on the LED if an 1 was received as first character
if ((char)payload[0] == '1') {
digitalWrite(gpio1, LOW); // Turn the LED on (Note that LOW is the voltage level
// but actually the LED is on; this is because
// it is acive low on the ESP-01)
} else {
digitalWrite(gpio1, HIGH); // Turn the LED off by making the voltage HIGH
}
}
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect
if (client.connect("ESP8266Client")) {
Serial.println("connected");
// Once connected, publish an announcement...
client.publish("outTopic", "hello world");
// ... and resubscribe
client.subscribe("inTopic");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
long now = millis();
if (now - lastMsg > 2000) {
lastMsg = now;
++value;
snprintf (msg, 75, "hello world #%ld", value);
Serial.print("Publish message: ");
Serial.println(msg);
client.publish("outTopic", msg);
}
}