# ESP8266 disconnected

**URL:** https://discourse.nodered.org/t/esp8266-disconnected/48803
**Category:** General
**Created:** [23 July 2021 04:12 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803 "2021-07-23T04:12:47Z")
**Posts on this page:** 17
**Page:** 1

<div class="post-metadata">

### Author: ![boyvip\_123](https://avatars.discourse-cdn.com/v4/letter/b/13edae/32.png) [@boyvip\_123](https://discourse.nodered.org/u/boyvip_123)
#### Post date: [23 July 2021 04:12 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803/1 "2021-07-23T04:12:47Z")

</div>

Please tell me how to solve this problem.  
Thank you.  
Code:  
#include \<AsyncMqttClient.h\>  
#include \<ESP8266WiFi.h\>  
#include \<Ticker.h\>

#define WIFI\_SSID " \*\*\*\*\*\*\*\* "  
#define WIFI\_PASSWORD " \*\*\*\*\*\*\*\*\*\*\* "

// Raspberri Pi Mosquitto MQTT Broker  
#define MQTT\_HOST IPAddress(192, 168, 100, \*\*\*)  
#define MQTT\_PORT 1883

//Temperature MQTT Topics  
#define MQTT\_PUB\_TEMP "mqtt/lm35"

const int LM35sensorPin = A0;  
float LM35sensorValue;  
float LM35voltageOut;  
float LM35temperature;

// Temperature value  
float temp;

AsyncMqttClient mqttClient;  
Ticker mqttReconnectTimer;

WiFiEventHandler wifiConnectHandler;  
WiFiEventHandler wifiDisconnectHandler;  
Ticker wifiReconnectTimer;

unsigned long previousMillis = 0; // Stores last time temperature was published  
const long interval = 10000; // Interval at which to publish sensor readings

void connectToWifi() {  
Serial.println("Connecting to Wi-Fi...");  
WiFi.begin(WIFI\_SSID, WIFI\_PASSWORD);  
}

void onWifiConnect(const WiFiEventStationModeGotIP& event) {  
Serial.println("Connected to Wi-Fi.");  
connectToMqtt();  
}

void onWifiDisconnect(const WiFiEventStationModeDisconnected& event) {  
Serial.println("Disconnected from Wi-Fi.");  
mqttReconnectTimer.detach(); // ensure we don't reconnect to MQTT while reconnecting to Wi-Fi  
wifiReconnectTimer.once(2, connectToWifi);  
}

void connectToMqtt() {  
Serial.println("Connecting to MQTT...");  
mqttClient.connect();  
}

void onMqttConnect(bool sessionPresent) {  
Serial.println("Connected to MQTT.");  
Serial.print("Session present: ");  
Serial.println(sessionPresent);  
}

void onMqttDisconnect(AsyncMqttClientDisconnectReason reason) {  
Serial.println("Disconnected from MQTT.");

if (WiFi.isConnected()) {  
mqttReconnectTimer.once(2, connectToMqtt);  
}  
}

void onMqttPublish(uint16\_t packetId) {  
Serial.print("Publish acknowledged.");  
Serial.print(" packetId: ");  
Serial.println(packetId);  
}

void setup() {  
pinMode(LM35sensorPin, INPUT);  
Serial.begin(115200);  
Serial.println();

wifiConnectHandler = WiFi.onStationModeGotIP(onWifiConnect);  
wifiDisconnectHandler = WiFi.onStationModeDisconnected(onWifiDisconnect);

mqttClient.onConnect(onMqttConnect);  
mqttClient.onDisconnect(onMqttDisconnect);  
[//mqttClient.onSubscribe](https://mqttClient.onSubscribe)(onMqttSubscribe);  
[//mqttClient.onUnsubscribe](https://mqttClient.onUnsubscribe)(onMqttUnsubscribe);  
mqttClient.onPublish(onMqttPublish);  
mqttClient.setServer(MQTT\_HOST, MQTT\_PORT);  
// If your broker requires authentication (username and password), set them below  
mqttClient.setCredentials("REPLACE\_WITH\_YOUR\_USER", "REPLACE\_WITH\_YOUR\_PASSWORD");

connectToWifi();  
}

void loop() {  
//LM35 SENSOR  
LM35sensorValue = analogRead(LM35sensorPin);  
LM35voltageOut = (LM35sensorValue \* 3300) / 1024;

// calculate temperature for LM35 (LM35DZ)  
LM35temperature = LM35voltageOut / 10;  
//LM35temperatureF = (LM35temperatureC\*1.8)+32;  
unsigned long currentMillis = millis();  
// Every X number of seconds (interval = 10 seconds)  
// it publishes a new MQTT message  
if (currentMillis - previousMillis \>= interval) {  
// Save the last time a new reading was published  
previousMillis = currentMillis;  
// Temperature in Celsius degrees  
temp = LM35temperature;

```
// Publish an MQTT message on topic dev/test
uint16_t packetIdPub1 = mqttClient.publish(MQTT_PUB_TEMP, 1, true, String(temp).c_str());                            
Serial.printf("Publishing on topic %s at QoS 0, packetId: %i ", MQTT_PUB_TEMP, packetIdPub1);
Serial.printf("Message: %.2f \n", temp);

```

}  
}

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/e/b/ebd9bea665898401e6c5afc33a940960c8f0c4a8.png)

---

<div class="post-metadata">

### Author: ![MecatronicaMADE](https://avatars.discourse-cdn.com/v4/letter/m/ce7236/32.png) [@MecatronicaMADE](https://discourse.nodered.org/u/MecatronicaMADE)
#### Post date: [23 July 2021 04:36 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803/2 "2021-07-23T04:36:07Z")

</div>

Hi @boyvip_123 What is the main problem? you could describe it.  
I can see that your device closed the connection wifi, maybe could be for distance of router wifi.  
I recommend use the "PubSubClient.h" library to MQTT communication with embedded systems.  
What is your configuration on NodeRED?

---

<div class="post-metadata">

### Author: ![boyvip\_123](https://avatars.discourse-cdn.com/v4/letter/b/13edae/32.png) [@boyvip\_123](https://discourse.nodered.org/u/boyvip_123)
#### Post date: [23 July 2021 04:44 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803/3 "2021-07-23T04:44:48Z")

</div>

I've used the "PubSubClient.h" library to MQTT communication, but the result is "Attempting MQTT connection... failed, rc=5 try again in 5 seconds"  
This is code which test without lm35 sensor.  
#include \<ESP8266WiFi.h\>  
#include \<PubSubClient.h\>

const char\* ssid = " \*\*\*\*\*\* ";  
const char\* password = " \*\*\*\*\*\*\* ";  
const char\* mqtt\_server = "192.168.x.x"; ///MQTT Broker  
int MQTT\_PORT = 1883;  
WiFiClient espClient;  
PubSubClient client(espClient);

void setup() {  
// Start the Serial Monitor  
Serial.begin(115200);  
[//sensors.begin](https://sensors.begin)();  
setup\_wifi();  
client.setServer(mqtt\_server, MQTT\_PORT);  
}

void setup\_wifi() {  
delay(10);  
Serial.println();  
Serial.print("Connecting to ");  
Serial.println(ssid);  
// Connecting to a WiFi network  
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 reconnect() {  
// Loop until we're reconnected  
Serial.println("In reconnect...");  
while (!client.connected()) {  
Serial.println("Attempting MQTT connection...");  
// Attempt to connect  
if (client.connect("ESP8266Client")) {  
Serial.println("connected");  
} else {  
Serial.print("failed, rc=");  
Serial.print(client.state());  
Serial.println(" try again in 5 seconds");  
delay(5000);  
}  
}  
}

void loop() {

client.publish("mqtt/lm35", "21.6");  
if (!client.connected()) {  
reconnect();  
}  
client.loop();  
delay(1000);  
}  
 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/e/4/e4889d140760986e58d194d7ad01043f74c29576.png)

---

<div class="post-metadata">

### Author: ![MecatronicaMADE](https://avatars.discourse-cdn.com/v4/letter/m/ce7236/32.png) [@MecatronicaMADE](https://discourse.nodered.org/u/MecatronicaMADE)
#### Post date: [23 July 2021 04:56 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803/4 "2021-07-23T04:56:13Z")

</div>

> [@MecatronicaMADE](#):
>
> What is your configuration on NodeRED?

And, is your MQTT Broker working?  
You could first check if you can publish and subscribe to BROKER in NodeRED.

![Captura de pantalla 2021-07-22 a la(s) 11.54.26 p. m.](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/0/4/04195d38d2e0d159c239949c9c35a08a1f1a464b.png)

so, when you inject:

![Captura de pantalla 2021-07-22 a la(s) 11.55.04 p. m.](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/5/f/5f41492ec6657dc16d15244bb6313d7a4e8af567.png)

or you could use [MQTT.fx](https://mqttfx.jensd.de/) or [MQTT Explorer](http://mqtt-explorer.com/) to check your MQTT connection to BROKER.

---

<div class="post-metadata">

### Author: ![boyvip\_123](https://avatars.discourse-cdn.com/v4/letter/b/13edae/32.png) [@boyvip\_123](https://discourse.nodered.org/u/boyvip_123)
#### Post date: [23 July 2021 04:58 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803/5 "2021-07-23T04:58:56Z")

</div>

Yes. My MQTT Broker is working normally.

---

<div class="post-metadata">

### Author: ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)
#### Post date: [23 July 2021 04:59 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803/6 "2021-07-23T04:59:50Z")

</div>

What broker are you using? And what's is version number?

Can you connect to your broker from another computer?

---

<div class="post-metadata">

### Author: ![boyvip\_123](https://avatars.discourse-cdn.com/v4/letter/b/13edae/32.png) [@boyvip\_123](https://discourse.nodered.org/u/boyvip_123)
#### Post date: [23 July 2021 05:03 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803/7 "2021-07-23T05:03:51Z")

</div>

I use VNC without remote desktop and install MQTT on raspbian.

---

<div class="post-metadata">

### Author: ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)
#### Post date: [23 July 2021 05:08 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803/8 "2021-07-23T05:08:21Z")

</div>

? What ?

What broker did you install on raspberry pi?

What version number is the broker software?

Can you connect MQTT explorer to the broker when MQTT explorer is running on a different computer?

---

<div class="post-metadata">

### Author: ![MecatronicaMADE](https://avatars.discourse-cdn.com/v4/letter/m/ce7236/32.png) [@MecatronicaMADE](https://discourse.nodered.org/u/MecatronicaMADE)
#### Post date: [23 July 2021 05:14 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803/9 "2021-07-23T05:14:11Z")

</div>

> [@boyvip\_123](#):
>
> install MQTT on raspbian

Yes but, What name and version of broker MQTT?  
maybe:  
**Mosquitto?**  
**or Mosca?**  
**or HiveMQ?**  
**or Aedes?**...

---

<div class="post-metadata">

### Author: ![boyvip\_123](https://avatars.discourse-cdn.com/v4/letter/b/13edae/32.png) [@boyvip\_123](https://discourse.nodered.org/u/boyvip_123)
#### Post date: [23 July 2021 05:16 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803/10 "2021-07-23T05:16:50Z")

</div>

Mosquitto

---

<div class="post-metadata">

### Author: ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)
#### Post date: [23 July 2021 05:19 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803/11 "2021-07-23T05:19:16Z")

</div>

If you don't answer all the questions we can't help you

> [@Steve-Mcl](#):
>
> What version number is the broker software?

> [@Steve-Mcl](#):
>
> Can you connect MQTT explorer to the broker when MQTT explorer is running on a different computer?

---

<div class="post-metadata">

### Author: ![boyvip\_123](https://avatars.discourse-cdn.com/v4/letter/b/13edae/32.png) [@boyvip\_123](https://discourse.nodered.org/u/boyvip_123)
#### Post date: [23 July 2021 05:25 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803/12 "2021-07-23T05:25:17Z")

</div>

Mosquitto broker version 1.5.7.  
I don't try to connect MQTT explorer to the broker.

---

<div class="post-metadata">

### Author: ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)
#### Post date: [23 July 2021 05:27 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803/13 "2021-07-23T05:27:30Z")

</div>

> [@boyvip\_123](#):
>
> I don't try to connect MQTT explorer to the broker

Well how do you know if the broker is accessible from the esp?

It would be worth testing.

Install MQTT explorer on a different computer and try to connect to the broker on the pi. If you can do that, then the esp should be able to. If you can't, then the esp cannot.

---

<div class="post-metadata">

### Author: ![boyvip\_123](https://avatars.discourse-cdn.com/v4/letter/b/13edae/32.png) [@boyvip\_123](https://discourse.nodered.org/u/boyvip_123)
#### Post date: [23 July 2021 05:49 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803/14 "2021-07-23T05:49:36Z")

</div>

Ok. I'll try it.  
Thank you very much.

---

<div class="post-metadata">

### Author: ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)
#### Post date: [23 July 2021 06:04 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803/15 "2021-07-23T06:04:55Z")

</div>

> [@boyvip\_123](#):
>
> const char\* mqtt\_server = "192.168.x.x"; ///MQTT Broker

Have you put the actual IP address in there?

---

<div class="post-metadata">

### Author: ![boyvip\_123](https://avatars.discourse-cdn.com/v4/letter/b/13edae/32.png) [@boyvip\_123](https://discourse.nodered.org/u/boyvip_123)
#### Post date: [23 July 2021 06:14 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803/16 "2021-07-23T06:14:50Z")

</div>

Yes. I put it in there.

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)
#### Post date: [21 September 2021 06:15 UTC](https://discourse.nodered.org/t/esp8266-disconnected/48803/17 "2021-09-21T06:15:04Z")

</div>

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
