Code Monkey home page Code Monkey logo

Comments (30)

MasyaShu avatar MasyaShu commented on June 4, 2024 1

#include <PubSubClient.h>
#include <ESP8266WiFi.h>

// Update these with values suitable for your network.

const char* ssid = "AU_01_WiFi";
const char* password = "";

long lastReconnectAttempt = 0;

WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;
IPAddress local_IP(192,168,4,22);

void setup() {
pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output
Serial.begin(9600);
setup_wifi();
client.setServer(local_IP, 1602);
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);

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(BUILTIN_LED, 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(BUILTIN_LED, HIGH); // Turn the LED off by making the voltage HIGH
}
lastReconnectAttempt = 0;
}

void reconnect() {
client.disconnect();
// Wait 9 seconds before retrying
delay(30000);
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
//client.disconnect();
//delay(15000);
// 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 17 seconds");
//client.disconnect();
// Wait 9 seconds before retrying
// delay(30000);
}
}
}

void loop() {
//client.disconnect();
if (!client.connected()) {
reconnect();
}
else {

client.loop();

long nowT = millis();
if (nowT - lastMsg > 2000) {
lastMsg = nowT;
++value;
snprintf (msg, 75, "hello world #%ld", value);
Serial.print("Publish message: ");
Serial.println(msg);
client.publish("outTopic", msg);
}

}
}

from umqttbroker.

martin-ger avatar martin-ger commented on June 4, 2024

Cannot reproduce the error. Using mosquitto_sub and mosquitto_pub I can connect and disconnect (from my laptop) without any obvious problem.

What exactly is your test-setup with paho.mqtt.android (or another client with problems)?

from umqttbroker.

mree58 avatar mree58 commented on June 4, 2024

Thanks for your reply. I builded the example project that they provided (only disconnect() function called on onDestroy method, ip and port changed also ofcourse) :

https://github.com/eclipse/paho.mqtt.android/tree/master/paho.mqtt.android.example/src/main/java/paho/mqtt/java/example

The log output from client side was written in first message. I can record video or prepare sample mobile app for you in case you need.

from umqttbroker.

MasyaShu avatar MasyaShu commented on June 4, 2024

Hello. I also encountered such a problem.
uMQTTBroker is installed on one ESP.
To another PubSubClient.
If the client connects to the server for the first time, then everything is in order. When the client is rebooted, the connection returns an error:
-4 : MQTT_CONNECTION_TIMEOUT - the server didn't respond within the keepalive time

The error is saved before the uMQTTBroker reboot.

from umqttbroker.

MasyaShu avatar MasyaShu commented on June 4, 2024

Solved a problem:
client.disconnect ();
// Wait 15 seconds before retrying
delay (15000);

from umqttbroker.

MasyaShu avatar MasyaShu commented on June 4, 2024

It did not work long :(
https://image.prntscr.com/image/bPfHInkuQ-2mRddt9dAIFg.png

from umqttbroker.

martin-ger avatar martin-ger commented on June 4, 2024

Could you send me the client's code? Guess, it has to do with session handling. For some reason the server rejects the CONN request (probably, because the session is still there?)

from umqttbroker.

mree58 avatar mree58 commented on June 4, 2024

I think, it could be the same problem. What do you think, is it the same problem ? Here is the video and the sample app :

https://drive.google.com/open?id=1HeRfEC9yxq0SSGp-Px8SQujcflGwReoN

from umqttbroker.

martin-ger avatar martin-ger commented on June 4, 2024

Thanks - probably it is the same problem - no time today, will try to look into it over the weekend.

from umqttbroker.

MasyaShu avatar MasyaShu commented on June 4, 2024

Thank you. I would be very grateful if I can get rid of this problem.

from umqttbroker.

martin-ger avatar martin-ger commented on June 4, 2024

Think, I found the problem. Introduced it, when trying to fix issue #3

It failed to clean up old sessions from the same client. Should be fixed now...

from umqttbroker.

MasyaShu avatar MasyaShu commented on June 4, 2024

Thank you, it's getting better. Now after reboot it is stably connected from the second time: https://image.prntscr.com/image/8HFba0bRQaauzAEEUYBQoQ.png

If the client uses "client.disconnect ();", then the connection does not exist.

from umqttbroker.

martin-ger avatar martin-ger commented on June 4, 2024

from umqttbroker.

MasyaShu avatar MasyaShu commented on June 4, 2024

Now the client turns on, sends a message and falls asleep, after 5 seconds wakes up, sends a message again. After he wakes up the connection to the broker occurs at the second attempt.
I tried to disconnect from the broker before going to sleep: "client.disconnect ()", in this version it could not connect a second time.

from umqttbroker.

MasyaShu avatar MasyaShu commented on June 4, 2024

After it increased the sleep time (30 seconds), it started from the first time: https://image.prntscr.com/image/calH1rC2SZaT7mbgo8P1Lw.png

from umqttbroker.

mree58 avatar mree58 commented on June 4, 2024

Same result for me. Same error occurred, which could be seen in the video that I send.

from umqttbroker.

martin-ger avatar martin-ger commented on June 4, 2024

Let me try to understand the setup:

  • you are directly connected to the ESP as AP? (or are both, client and broker STAs of a different WiFi AP?)
  • the client is hard rebooted (and or correctly disconnected via MQTT?)
  • you are using the clean-session flag during connection?

from umqttbroker.

mree58 avatar mree58 commented on June 4, 2024
  • yes, the client's device connects to ESP directly from WiFi (as AP), client's software connects MQTT broker via IP and Port.
  • no, not hard rebooted. disconnect function called.
  • yes, clean session enabled.

from umqttbroker.

martin-ger avatar martin-ger commented on June 4, 2024

Tried to reproduce the problem, somewhat hard...

With the ESP as AP and IoT MQTT Dashboard (https://play.google.com/store/apps/details?id=com.thn.iotmqttdashboard) as sample client on Android it just works fine.

Pubsubclient on the AP for me doesn't even try to connect... (I don't see any TCP connect request on the ESP).

Could you help me an try the following on you setup:
in "mqtt_server.c" in the library please uncomment the two lines:

40: #undef MQTT_INFO
41: #define MQTT_INFO os_printf

And add
Serial.setDebugOutput(true);
in your Arduino code?

This enables debug output in the MQTT server. The output might give some insight into what's going on...

from umqttbroker.

MasyaShu avatar MasyaShu commented on June 4, 2024

Starting MQTT broker
Starting MQTT server on port 1602
MQTT_ClientCon_connected_cb(): Client connected
MQTT: InitClientCon
MQTT_ClientCon_recv_cb(): 33 bytes of data received
MQTT: TCP: data received 33 bytes (State: 15)
MQTT: total_len: 33
MQTT: message_type: 1
MQTT: Connect received, message_len: 33
MQTT: Connect flags 2
MQTT: Keepalive 60
MQTT: Client id "gghdrj1516683805700"
MQTT: Server task activated - state 20
MQTT: Sending, type: 2, id: 0000
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 15 bytes of data received
MQTT: TCP: data received 15 bytes (State: 20)
MQTT: total_len: 15
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 15
MQTT: Message id 1
MQTT: Subscribed topic /DVP/123 QoS 0
MQTT: Subscribe successful
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0001
MQTT_ClientCon_recv_cb(): 96 bytes of data received
MQTT: TCP: data received 96 bytes (State: 20)
MQTT: total_len: 17
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 17
MQTT: Message id 2
MQTT: Subscribed topic outTopic/# QoS 0
MQTT: Subscribe successful
MQTT: Get another received message
MQTT: total_len: 13
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 13
MQTT: Message id 3
MQTT: Subscribed topic /DVP/# QoS 0
MQTT: Subscribe successful
MQTT: Get another received message
MQTT: total_len: 15
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 15
MQTT: Message id 4
MQTT: Subscribed topic mybroker QoS 0
MQTT: Subscribe successful
MQTT: Get another received message
MQTT: total_len: 12
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 12
MQTT: Message id 5
MQTT: Subscribed topic ggggg QoS 0
MQTT: Subscribe successful
MQTT: Get another received message
MQTT: total_len: 18
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 18
MQTT: Message id 6
MQTT: Subscribed topic mybroker/sv QoS 0
MQTT: Subscribe successful
MQTT: Get another received message
MQTT: total_len: 21
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 21
MQTT: Message id 7
MQTT: Subscribed topic MyBroker/count QoS 0
MQTT: Subscribe successful
MQTT_ClientCon_sent_cb(): Data sent
MQTT: Next message to client: gghdrj1516683805700
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0002
MQTT_ClientCon_sent_cb(): Data sent
MQTT: Next message to client: gghdrj1516683805700
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0003
MQTT_ClientCon_sent_cb(): Data sent
MQTT: Next message to client: gghdrj1516683805700
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0004
MQTT_ClientCon_sent_cb(): Data sent
MQTT: Next message to client: gghdrj1516683805700
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0005
MQTT_ClientCon_sent_cb(): Data sent
MQTT: Next message to client: gghdrj1516683805700
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0006
MQTT_ClientCon_sent_cb(): Data sent
MQTT: Next message to client: gghdrj1516683805700
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0007
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 2 bytes of data received
MQTT: TCP: data received 2 bytes (State: 20)
MQTT: total_len: 2
MQTT: message_type: 14
MQTT: receive MQTT_MSG_TYPE_DISCONNECT
MQTT: ServerDisconnect
MQTT_ClientCon_discon_cb(): client disconnected
MQTT: DeleteClientCon
MQTT: Broker already disconnecting
MQTT: Server task activated - state 9
MQTT: Client disconnected
MQTT: DeleteClientCon
MQTT_ClientCon_connected_cb(): Client connected
MQTT: InitClientCon
MQTT_ClientCon_recv_cb(): 33 bytes of data received
MQTT: TCP: data received 33 bytes (State: 15)
MQTT: total_len: 33
MQTT: message_type: 1
MQTT: Connect received, message_len: 33
MQTT: Connect flags 2
MQTT: Keepalive 60
MQTT: Client id "gghdrj1516683823586"
MQTT: Server task activated - state 20
MQTT: Sending, type: 2, id: 0000
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 15 bytes of data received
MQTT: TCP: data received 15 bytes (State: 20)
MQTT: total_len: 15
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 15
MQTT: Message id 1
MQTT: Subscribed topic /DVP/123 QoS 0
MQTT: Subscribe successful
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0001
MQTT_ClientCon_recv_cb(): 96 bytes of data received
MQTT: TCP: data received 96 bytes (State: 20)
MQTT: total_len: 17
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 17
MQTT: Message id 2
MQTT: Subscribed topic outTopic/# QoS 0
MQTT: Subscribe successful
MQTT: Get another received message
MQTT: total_len: 13
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 13
MQTT: Message id 3
MQTT: Subscribed topic /DVP/# QoS 0
MQTT: Subscribe successful
MQTT: Get another received message
MQTT: total_len: 15
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 15
MQTT: Message id 4
MQTT: Subscribed topic mybroker QoS 0
MQTT: Subscribe successful
MQTT: Get another received message
MQTT: total_len: 12
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 12
MQTT: Message id 5
MQTT: Subscribed topic ggggg QoS 0
MQTT: Subscribe successful
MQTT: Get another received message
MQTT: total_len: 18
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 18
MQTT: Message id 6
MQTT: Subscribed topic mybroker/sv QoS 0
MQTT: Subscribe successful
MQTT: Get another received message
MQTT: total_len: 21
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 21
MQTT: Message id 7
MQTT: Subscribed topic MyBroker/count QoS 0
MQTT: Subscribe successful
MQTT_ClientCon_sent_cb(): Data sent
MQTT: Next message to client: gghdrj1516683823586
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0002
MQTT_ClientCon_sent_cb(): Data sent
MQTT: Next message to client: gghdrj1516683823586
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0003
MQTT_ClientCon_sent_cb(): Data sent
MQTT: Next message to client: gghdrj1516683823586
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0004
MQTT_ClientCon_sent_cb(): Data sent
MQTT: Next message to client: gghdrj1516683823586
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0005
MQTT_ClientCon_sent_cb(): Data sent
MQTT: Next message to client: gghdrj1516683823586
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0006
MQTT_ClientCon_sent_cb(): Data sent
MQTT: Next message to client: gghdrj1516683823586
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0007
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 2 bytes of data received
MQTT: TCP: data received 2 bytes (State: 20)
MQTT: total_len: 2
MQTT: message_type: 12
MQTT: receive MQTT_MSG_TYPE_PINGREQ
MQTT: Server task activated - state 20
MQTT: Sending, type: 13, id: 0000
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 2 bytes of data received
MQTT: TCP: data received 2 bytes (State: 20)
MQTT: total_len: 2
MQTT: message_type: 12
MQTT: receive MQTT_MSG_TYPE_PINGREQ
MQTT: Server task activated - state 20
MQTT: Sending, type: 13, id: 0000
MQTT_ClientCon_sent_cb(): Data sent

На клиенте:
WiFi connected
IP address:
192.168.4.121
Attempting MQTT connection...
pm open,type:2 0
failed, rc=-4 try again in 5 seconds
Attempting MQTT connection...connected
Publish message: hello world #1
16870
state: 5 -> 0 (0)
rm 0
pm close 7
del if0
usl

from umqttbroker.

MasyaShu avatar MasyaShu commented on June 4, 2024

If ESP does not go to sleep, and you use "client.disconnect ()", then on the client:
192.168.4.121
Attempting MQTT connection ... connected
Publish message: hello world # 1
19705
Attempting MQTT connection ...
pm open, type: 2 0
failed, rc = -4 try again in 10 seconds
Attempting MQTT connection ... failed, rc = -4 try again in 10 seconds
Attempting MQTT connection ... failed, rc = -4 try again in 10 seconds
Attempting MQTT connection ... failed, rc = -4 try again in 10 seconds
Attempting MQTT connection ... failed, rc = -4 try again in 10 seconds

On the broker:
Starting MQTT server on port 1602
add 1
aid 1
station: 5c: cf: 7f: da: 01: 36 join, AID = 1
MQTT_ClientCon_connected_cb (): Client connected
MQTT: InitClientCon
MQTT_ClientCon_recv_cb (): 27 bytes of data received
MQTT: TCP: data received 27 bytes (State: 15)
MQTT: total_len: 27
MQTT: message_type: 1
MQTT: Connect received, message_len: 27
MQTT: Connect flags 2
MQTT: Keepalive 15
MQTT: Client id "ESP8266Client"
MQTT: Server task activated - state 20
MQTT: Sending, type: 2, id: 0000
MQTT_ClientCon_sent_cb (): Data sent
MQTT_ClientCon_recv_cb (): 23 bytes of data received
MQTT: TCP: data received 23 bytes (State: 20)
MQTT: total_len: 23
MQTT: message_type: 3
MQTT: Publish received, message_len: 23
MQTT: Published topic "outTopic"
MQTT: Matches to:
MQTT: Client: LOCAL Topic: "#" QoS: 0
received topic 'outTopic' with data 'hello world'
outTopic
MQTT_ClientCon_recv_cb (): 14 bytes of data received
MQTT: TCP: data received 14 bytes (State: 20)
MQTT: total_len: 14
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 14
MQTT: Message id 2
MQTT: Subscribed topic inTopic QoS 0
MQTT: Subscribe successful
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0002
MQTT_ClientCon_recv_cb (): 33 bytes of data received
MQTT: TCP: data received 33 bytes (State: 20)
MQTT: total_len: 33
MQTT: message_type: 3
MQTT: Publish received, message_len: 33
MQTT: Published topic "outTopic / qqqqqq"
MQTT: Matches to:
MQTT: Client: LOCAL Topic: "#" QoS: 0
received topic 'outTopic / qqqqqq' with data 'hello world # 1'
outTopic / qqqqqq
MQTT_ClientCon_sent_cb (): Data sent
MQTT_ClientCon_recv_cb (): 2 bytes of data received
MQTT: TCP: data received 2 bytes (State: 20)
MQTT: total_len: 2
MQTT: message_type: 14
MQTT: receive MQTT_MSG_TYPE_DISCONNECT
MQTT: ServerDisconnect
MQTT: Server task activated - state 7
MQTT: Disconnect
MQTT_ClientCon_discon_cb (): client disconnected
MQTT: DeleteClientCon
MQTT: Broker already disconnecting
MQTT_ClientCon_connected_cb (): Client connected
MQTT: InitClientCon
MQTT_ClientCon_recv_cb (): 27 bytes of data received
MQTT: TCP: data received 27 bytes (State: 15)
MQTT: total_len: 27
MQTT: message_type: 1
MQTT: Connect received, message_len: 27
MQTT: Connect flags 2
MQTT: Keepalive 15
MQTT: Disconnect client: ESP8266Client
MQTT: Client id "ESP8266Client"
MQTT: Server task activated - state 8
MQTT: Disconnect
MQTT_ClientCon_discon_cb (): client disconnected
MQTT: DeleteClientCon
MQTT_ClientCon_connected_cb (): Client connected
MQTT: InitClientCon
MQTT_ClientCon_recv_cb (): 27 bytes of data received
MQTT: TCP: data received 27 bytes (State: 15)
MQTT: total_len: 27
MQTT: message_type: 1
MQTT: Connect received, message_len: 27
MQTT: Connect flags 2
MQTT: Keepalive 15
MQTT: Disconnect client: ESP8266Client
MQTT: Client id "ESP8266Client"
MQTT: Server task activated - state 8
MQTT: Disconnect
MQTT_ClientCon_discon_cb (): client disconnected
MQTT: DeleteClientCon
MQTT_ClientCon_connected_cb (): Client connected
MQTT: InitClientCon
MQTT_ClientCon_recv_cb (): 27 bytes of data received
MQTT: TCP: data received 27 bytes (State: 15)
MQTT: total_len: 27
MQTT: message_type: 1
MQTT: Connect received, message_len: 27
MQTT: Connect flags 2
MQTT: Keepalive 15
MQTT: Disconnect client: ESP8266Client
MQTT: Client id "ESP8266Client"
MQTT: Server task activated - state 8
MQTT: Disconnect
MQTT_ClientCon_discon_cb (): client disconnected
MQTT: DeleteClientCon
MQTT_ClientCon_connected_cb (): Client connected
MQTT: InitClientCon
MQTT_ClientCon_recv_cb (): 27 bytes of data received
MQTT: TCP: data received 27 bytes (State: 15)
MQTT: total_len: 27
MQTT: message_type: 1
MQTT: Connect received, message_len: 27
MQTT: Connect flags 2
MQTT: Keepalive 15
MQTT: Disconnect client: ESP8266Client
MQTT: Client id "ESP8266Client"
MQTT: Server task activated - state 8
MQTT: Disconnect

from umqttbroker.

MasyaShu avatar MasyaShu commented on June 4, 2024

If you do not use "client.disconnect ();" and to fill the client for 30 seconds, it works without fail. It also works without fail if the device is connected to a broker and is no longer disconnected.

from umqttbroker.

MasyaShu avatar MasyaShu commented on June 4, 2024

Even when another client is connected, the second client can not connect:
MQTT_ClientCon_sent_cb (): Data sent
station: 5c: cf: 7f: da: 01: 36 leave, AID = 2
rm 2
err already associed!
station: a0: 20: a6: 16: c7: 54 leave, AID = 1
rm 1
MQTT_ClientCon_discon_cb (): client disconnected
MQTT: DeleteClientCon
add 1
aid 1
station: a0:20:a6:16:c7:54 join, AID = 1
MQTT_ClientCon_discon_cb(): client disconnected
MQTT: DeleteClientCon
MQTT_ClientCon_recv_cb(): 2 bytes of data received
MQTT: TCP: data received 2 bytes (State: 20)
MQTT: total_len: 2
MQTT: message_type: 12
MQTT: receive MQTT_MSG_TYPE_PINGREQ
MQTT: Server task activated - state 20
MQTT: Sending, type: 3, id: 0000
MQTT_ClientCon_sent_cb(): Data sent
MQTT: Next message to client: gghdrj1516693570140
MQTT: Server task activated - state 20
MQTT: Sending, type: 3, id: 0000
MQTT_ClientCon_sent_cb(): Data sent
MQTT: Next message to client: gghdrj1516693570140
MQTT: Server task activated - state 20
MQTT: Sending, type: 13, id: 0000
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 2 bytes of data received
MQTT: TCP: data received 2 bytes (State: 20)
MQTT: total_len: 2
MQTT: message_type: 12
MQTT: receive MQTT_MSG_TYPE_PINGREQ
MQTT: Server task activated - state 20
MQTT: Sending, type: 13, id: 0000
MQTT_ClientCon_sent_cb(): Data sent

Error: -2: MQTT_CONNECT_FAILED - the network connection failed

from umqttbroker.

mree58 avatar mree58 commented on June 4, 2024

Thanks for your interest. Here is the log output :

0,Configuring access point...
0,Ready for client port:51042
0,Babil_29E6
0,Babil_29E6
0,AP IP address:
0,192.168.4.1
0,Starting MQTT broker
Starting MQTT server on port 51042
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,0
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,1
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,2
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,3
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,4
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,5
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,6
add 1
aid 1
station: 54:dc:1d:32:d7:c4 join, AID = 1
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,7
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,8
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,9
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,10
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,11
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,12
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,13
MQTT_ClientCon_connected_cb(): Client connected
MQTT: InitClientCon
MQTT_ClientCon_recv_cb(): 32 bytes of data received
MQTT: TCP: data received 32 bytes (State: 15)
MQTT: total_len: 32
MQTT: message_type: 1
MQTT: Connect received, message_len: 32
MQTT: Connect flags 2
MQTT: Keepalive 60
MQTT: Client id "emree1516718890163"
MQTT: Server task activated - state 20
MQTT: Sending, type: 2, id: 0000
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 14 bytes of data received
MQTT: TCP: data received 14 bytes (State: 20)
MQTT: total_len: 14
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 14
MQTT: Message id 1
MQTT: Subscribed topic Ws2812B QoS 0
MQTT: Subscribe successful
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0001
MQTT_ClientCon_sent_cb(): Data sent
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,14
MQTT_ClientCon_recv_cb(): 2 bytes of data received
MQTT: TCP: data received 2 bytes (State: 20)
MQTT: total_len: 2
MQTT: message_type: 14
MQTT: receive MQTT_MSG_TYPE_DISCONNECT
MQTT: ServerDisconnect
MQTT: Server task activated - state 7
MQTT: Disconnect
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,15
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,16
MQTT_ClientCon_connected_cb(): Client connected
MQTT: InitClientCon
MQTT_ClientCon_recv_cb(): 32 bytes of data received
MQTT: TCP: data received 32 bytes (State: 15)
MQTT: total_len: 32
MQTT: message_type: 1
MQTT: Connect received, message_len: 32
MQTT: Connect flags 2
MQTT: Keepalive 60
MQTT: Client id "emree1516718895769"
MQTT: Server task activated - state 20
MQTT: Sending, type: 2, id: 0000
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 14 bytes of data received
MQTT: TCP: data received 14 bytes (State: 20)
MQTT: total_len: 14
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 14
MQTT: Message id 1
MQTT: Subscribed topic Ws2812B QoS 0
MQTT: Subscribe successful
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0001
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 2 bytes of data received
MQTT: TCP: data received 2 bytes (State: 20)
MQTT: total_len: 2
MQTT: message_type: 14
MQTT: receive MQTT_MSG_TYPE_DISCONNECT
MQTT: ServerDisconnect
MQTT: Server task activated - state 7
MQTT: Disconnect
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,17
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,18
MQTT_ClientCon_connected_cb(): Client connected
MQTT: InitClientCon
MQTT_ClientCon_recv_cb(): 32 bytes of data received
MQTT: TCP: data received 32 bytes (State: 15)
MQTT: total_len: 32
MQTT: message_type: 1
MQTT: Connect received, message_len: 32
MQTT: Connect flags 2
MQTT: Keepalive 60
MQTT: Client id "emree1516718908346"
MQTT: Server task activated - state 20
MQTT: Sending, type: 2, id: 0000
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 14 bytes of data received
MQTT: TCP: data received 14 bytes (State: 20)
MQTT: total_len: 14
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 14
MQTT: Message id 1
MQTT: Subscribed topic Ws2812B QoS 0
MQTT: Subscribe successful
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0001
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,19
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 2 bytes of data received
MQTT: TCP: data received 2 bytes (State: 20)
MQTT: total_len: 2
MQTT: message_type: 14
MQTT: receive MQTT_MSG_TYPE_DISCONNECT
MQTT: ServerDisconnect
MQTT: Server task activated - state 7
MQTT: Disconnect
MQTT_ClientCon_connected_cb(): Client connected
MQTT: InitClientCon
MQTT_ClientCon_recv_cb(): 32 bytes of data received
MQTT: TCP: data received 32 bytes (State: 15)
MQTT: total_len: 32
MQTT: message_type: 1
MQTT: Connect received, message_len: 32
MQTT: Connect flags 2
MQTT: Keepalive 60
MQTT: Client id "emree1516718922054"
MQTT: Server task activated - state 20
MQTT: Sending, type: 2, id: 0000
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,20
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 14 bytes of data received
MQTT: TCP: data received 14 bytes (State: 20)
MQTT: total_len: 14
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 14
MQTT: Message id 1
MQTT: Subscribed topic Ws2812B QoS 0
MQTT: Subscribe successful
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0001
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 2 bytes of data received
MQTT: TCP: data received 2 bytes (State: 20)
MQTT: total_len: 2
MQTT: message_type: 14
MQTT: receive MQTT_MSG_TYPE_DISCONNECT
MQTT: ServerDisconnect
MQTT: Server task activated - state 7
MQTT: Disconnect
MQTT_ClientCon_connected_cb(): Client connected
MQTT: InitClientCon
MQTT_ClientCon_recv_cb(): 32 bytes of data received
MQTT: TCP: data received 32 bytes (State: 15)
MQTT: total_len: 32
MQTT: message_type: 1
MQTT: Connect received, message_len: 32
MQTT: Connect flags 2
MQTT: Keepalive 60
MQTT: Client id "emree1516718927890"
MQTT: Server task activated - state 20
MQTT: Sending, type: 2, id: 0000
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 14 bytes of data received
MQTT: TCP: data received 14 bytes (State: 20)
MQTT: total_len: 14
MQTT: message_type: 8
MQTT: Subscribe received, message_len: 14
MQTT: Message id 1
MQTT: Subscribed topic Ws2812B QoS 0
MQTT: Subscribe successful
MQTT: Server task activated - state 20
MQTT: Sending, type: 9, id: 0001
MQTT_ClientCon_sent_cb(): Data sent
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,21
MQTT_ClientCon_recv_cb(): 2 bytes of data received
MQTT: TCP: data received 2 bytes (State: 20)
MQTT: total_len: 2
MQTT: message_type: 14
MQTT: receive MQTT_MSG_TYPE_DISCONNECT
MQTT: ServerDisconnect
MQTT: Server task activated - state 7
MQTT: Disconnect
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,22
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,23
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,24
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,25
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,26

And here is the screen capture that I uploaded from the program that you suggested :

https://drive.google.com/drive/folders/1HeRfEC9yxq0SSGp-Px8SQujcflGwReoN

from umqttbroker.

martin-ger avatar martin-ger commented on June 4, 2024

Thanks for the input. I reworked the logic of disconnection. Now your sample works just fine, even with client.disconnect() for me...

from umqttbroker.

mree58 avatar mree58 commented on June 4, 2024

Thank you, I updated it with your latest committed source. But sadly result is same :(

MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,32
MQTT_ClientCon_connected_cb(): Client connected
MQTT: InitClientCon
MQTT_ClientCon_recv_cb(): 40 bytes of data received
MQTT: TCP: data received 40 bytes (State: 14)
MQTT: total_len: 40
MQTT: message_type: 1
MQTT: Connect received, message_len: 40
MQTT: Connect flags c2
MQTT: Keepalive 60
MQTT: Client id "11516869545907"
MQTT: Username izzet
MQTT: Password den
MQTT: Server task activated - state 19
MQTT: Sending, type: 2, id: 0000
MQTT_ClientCon_sent_cb(): Data sent
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,33
MQTT_ClientCon_recv_cb(): 2 bytes of data received
MQTT: TCP: data received 2 bytes (State: 19)
MQTT: total_len: 2
MQTT: message_type: 14
MQTT: receive MQTT_MSG_TYPE_DISCONNECT
MQTT: ServerDisconnect
MQTT: DeleteClientCon
MQTT: Server task activated - state 6
MQTT: Disconnect
MQTT_ClientCon_connected_cb(): Client connected
MQTT: InitClientCon
MQTT_ClientCon_recv_cb(): 40 bytes of data received
MQTT: TCP: data received 40 bytes (State: 14)
MQTT: total_len: 40
MQTT: message_type: 1
MQTT: Connect received, message_len: 40
MQTT: Connect flags c2
MQTT: Keepalive 60
MQTT: Client id "11516869550456"
MQTT: Username izzet
MQTT: Password den
MQTT: Server task activated - state 19
MQTT: Sending, type: 2, id: 0000
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 2 bytes of data received
MQTT: TCP: data received 2 bytes (State: 19)
MQTT: total_len: 2
MQTT: message_type: 14
MQTT: receive MQTT_MSG_TYPE_DISCONNECT
MQTT: ServerDisconnect
MQTT: DeleteClientCon
MQTT: Server task activated - state 6
MQTT: Disconnect
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,34
MQTT_ClientCon_connected_cb(): Client connected
MQTT: InitClientCon
MQTT_ClientCon_recv_cb(): 40 bytes of data received
MQTT: TCP: data received 40 bytes (State: 14)
MQTT: total_len: 40
MQTT: message_type: 1
MQTT: Connect received, message_len: 40
MQTT: Connect flags c2
MQTT: Keepalive 60
MQTT: Client id "11516869554184"
MQTT: Username izzet
MQTT: Password den
MQTT: Server task activated - state 19
MQTT: Sending, type: 2, id: 0000
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 2 bytes of data received
MQTT: TCP: data received 2 bytes (State: 19)
MQTT: total_len: 2
MQTT: message_type: 14
MQTT: receive MQTT_MSG_TYPE_DISCONNECT
MQTT: ServerDisconnect
MQTT: DeleteClientCon
MQTT: Server task activated - state 6
MQTT: Disconnect
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,35
MQTT_ClientCon_connected_cb(): Client connected
MQTT: InitClientCon
MQTT_ClientCon_recv_cb(): 40 bytes of data received
MQTT: TCP: data received 40 bytes (State: 14)
MQTT: total_len: 40
MQTT: message_type: 1
MQTT: Connect received, message_len: 40
MQTT: Connect flags c2
MQTT: Keepalive 60
MQTT: Client id "11516869559435"
MQTT: Username izzet
MQTT: Password den
MQTT: Server task activated - state 19
MQTT: Sending, type: 2, id: 0000
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 2 bytes of data received
MQTT: TCP: data received 2 bytes (State: 19)
MQTT: total_len: 2
MQTT: message_type: 14
MQTT: receive MQTT_MSG_TYPE_DISCONNECT
MQTT: ServerDisconnect
MQTT: DeleteClientCon
MQTT: Server task activated - state 6
MQTT: Disconnect
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,36
MQTT_ClientCon_connected_cb(): Client connected
MQTT: InitClientCon
MQTT_ClientCon_recv_cb(): 40 bytes of data received
MQTT: TCP: data received 40 bytes (State: 14)
MQTT: total_len: 40
MQTT: message_type: 1
MQTT: Connect received, message_len: 40
MQTT: Connect flags c2
MQTT: Keepalive 60
MQTT: Client id "11516869563851"
MQTT: Username izzet
MQTT: Password den
MQTT: Server task activated - state 19
MQTT: Sending, type: 2, id: 0000
MQTT_ClientCon_sent_cb(): Data sent
MQTT_ClientCon_recv_cb(): 2 bytes of data received
MQTT: TCP: data received 2 bytes (State: 19)
MQTT: total_len: 2
MQTT: message_type: 14
MQTT: receive MQTT_MSG_TYPE_DISCONNECT
MQTT: ServerDisconnect
MQTT: DeleteClientCon
MQTT: Server task activated - state 6
MQTT: Disconnect
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,37
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,38
MQTT: Client: LOCAL Topic: "#" QoS: 0
0,Self_Msg,39

from umqttbroker.

martin-ger avatar martin-ger commented on June 4, 2024

For me, it seems to work...
Using this client, I can do as many (re-)connects as I like:

#include <PubSubClient.h>
#include <ESP8266WiFi.h>

// Update these with values suitable for your network.
const char* ssid = ".....";
const char* password = ".....";

long lastReconnectAttempt = 0;

WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;
IPAddress local_IP(192,168,4,1);

void setup() {
pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output
Serial.begin(115200);
Serial.setDebugOutput(true);
setup_wifi();
client.setServer(local_IP,  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.mode(WIFI_STA);
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(BUILTIN_LED, 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(BUILTIN_LED, HIGH); // Turn the LED off by making the voltage HIGH
}
lastReconnectAttempt = 0;
}

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Create a random client ID
    String clientId = "ESP8266Client-";
    //clientId += String(random(0xffff), HEX);
    // Attempt to connect
    if (client.connect(clientId.c_str())) {
      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() {
//client.disconnect();
if (!client.connected()) {
reconnect();
}
else {

client.loop();

long nowT = millis();
if (nowT - lastMsg > 2000) {
lastMsg = nowT;
++value;
snprintf (msg, 75, "hello world #%ld", value);
Serial.print("Publish message: ");
Serial.println(msg);
client.publish("outTopic", msg);

client.disconnect();
}

}
}

from umqttbroker.

martin-ger avatar martin-ger commented on June 4, 2024

According to your log you are using user/password - maybe that is the reason here, why you get a reject of the connect request?

from umqttbroker.

MasyaShu avatar MasyaShu commented on June 4, 2024

Thanks, it works!
I will describe three situations:

  1. client.disconnect ();
       ESP.deepSleep (5e6);
    After the ESP wakes up, the connection happens the first time!

  2. //client.disconnect ();
       ESP.deepSleep (5e6);
    After the ESP wakes up, the connection is from the second time!

  3. client.disconnect ();
       //ESP.deepSleep(5e6);
    ESP is connected from the first time!

Another digression, for a long time struggled with the error rc = -2.
It turned out that I did not have a line:
WiFi.mode (WIFI_STA) before WiFi.begin (ssid);

Thanks again for your work!

from umqttbroker.

mree58 avatar mree58 commented on June 4, 2024

@martin-ger
I removed username/password, but it was not the problem in this case. I didn't use android client for new tests. In one video used your code as untouched and for another video used a modified version of client. Tried both STA and AP modes. I uploaded the videos, and sample codes that I builded.

client in sta mode, broker in ap mode. Problem occured after a few connection.

client in sta mode, broker in sta mode, and used a modem. It didnt connect at first, at min 2:54 it established a connection somehow, but then connection failed.

https://drive.google.com/drive/folders/1Vr1rqzueW5nZ3B6VGBVFF3zW7HQDx_Is

I know you are trying to solve this issue for such a unique and brilliant library that no one ever tried to make one so far for ESP. I am grateful for this. Thanks again.

from umqttbroker.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.