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