Browse Source

MQTT subscribe only when reconnect successful

pull/179/head
tastendruecker123 3 years ago
parent
commit
e59ca5f388
  1. 9
      tools/esp8266/mqtt.h

9
tools/esp8266/mqtt.h

@ -54,7 +54,7 @@ class mqtt {
bool isConnected(bool doRecon = false) { bool isConnected(bool doRecon = false) {
//DPRINTLN(DBG_VERBOSE, F("mqtt.h:isConnected")); //DPRINTLN(DBG_VERBOSE, F("mqtt.h:isConnected"));
if(doRecon) if(doRecon && !mClient->connected())
reconnect(); reconnect();
return mClient->connected(); return mClient->connected();
} }
@ -71,6 +71,7 @@ class mqtt {
DPRINTLN(DBG_DEBUG, F("mqtt.h:reconnect")); DPRINTLN(DBG_DEBUG, F("mqtt.h:reconnect"));
DPRINTLN(DBG_DEBUG, F("MQTT mClient->_state ") + String(mClient->state()) ); DPRINTLN(DBG_DEBUG, F("MQTT mClient->_state ") + String(mClient->state()) );
DPRINTLN(DBG_DEBUG, F("WIFI mEspClient.status ") + String(mEspClient.status()) ); DPRINTLN(DBG_DEBUG, F("WIFI mEspClient.status ") + String(mEspClient.status()) );
boolean resub = false;
if(!mClient->connected()) { if(!mClient->connected()) {
if(strlen(mDevName) > 0) { if(strlen(mDevName) > 0) {
// der Server und der Port müssen neu gesetzt werden, // der Server und der Port müssen neu gesetzt werden,
@ -78,11 +79,12 @@ class mqtt {
mClient->setServer(mCfg->broker, mCfg->port); mClient->setServer(mCfg->broker, mCfg->port);
mClient->setBufferSize(MQTT_MAX_PACKET_SIZE); mClient->setBufferSize(MQTT_MAX_PACKET_SIZE);
if((strlen(mCfg->user) > 0) && (strlen(mCfg->pwd) > 0)) if((strlen(mCfg->user) > 0) && (strlen(mCfg->pwd) > 0))
mClient->connect(mDevName, mCfg->user, mCfg->pwd); resub = mClient->connect(mDevName, mCfg->user, mCfg->pwd);
else else
mClient->connect(mDevName); resub = mClient->connect(mDevName);
} }
// ein Subscribe ist nur nach einem connect notwendig // ein Subscribe ist nur nach einem connect notwendig
if(resub) {
char topic[MQTT_TOPIC_LEN + 13 ]; // "/devcontrol/#" --> + 6 byte char topic[MQTT_TOPIC_LEN + 13 ]; // "/devcontrol/#" --> + 6 byte
// ToDo: "/devcontrol/#" is hardcoded // ToDo: "/devcontrol/#" is hardcoded
snprintf(topic, MQTT_TOPIC_LEN + 13, "%s/devcontrol/#", mCfg->topic); snprintf(topic, MQTT_TOPIC_LEN + 13, "%s/devcontrol/#", mCfg->topic);
@ -90,6 +92,7 @@ class mqtt {
mClient->subscribe(topic); // subscribe to mTopic + "/devcontrol/#" mClient->subscribe(topic); // subscribe to mTopic + "/devcontrol/#"
} }
} }
}
WiFiClient mEspClient; WiFiClient mEspClient;
PubSubClient *mClient; PubSubClient *mClient;

Loading…
Cancel
Save