81 lines
2.0 KiB
Arduino
81 lines
2.0 KiB
Arduino
|
/*********************MQTT connect **************************************/
|
||
|
bool mqtt_connect() {
|
||
|
const int8_t maxRetryMqtt = 5;
|
||
|
int8_t currRetryMqtt = 0;
|
||
|
char mqttBrokerBuf[16]; //ToDo Legacy IPv4
|
||
|
|
||
|
mqttBroker.toString().toCharArray( mqttBrokerBuf, mqttBroker.toString().length()+1 );
|
||
|
#ifdef SERIAL_DEBUG
|
||
|
//Serial.println("MQTT Status: " + String(mqttClient.state()));
|
||
|
#endif
|
||
|
|
||
|
if (mqttClient.connected()) {
|
||
|
mqttCheck = true;
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
#ifdef SERIAL_DEBUG
|
||
|
Serial.println("Connecting to MQTT Broker...\t"+ String(mqttBrokerBuf));
|
||
|
#endif
|
||
|
|
||
|
#ifdef OLED_OUTPUT
|
||
|
display.clear();
|
||
|
//display.drawStringMaxWidth(0, 0, 128, "MQTT: conn");
|
||
|
#endif
|
||
|
//set options, may be obsolete
|
||
|
//mqttClient.setOptions(2, true, 750);
|
||
|
mqttClient.begin(mqttBrokerBuf, MQTT_PORT, mqttSocket);
|
||
|
mqttClient.onMessage(messageReceived);
|
||
|
mqttClient.setWill(MQTT_WILL_TOPIC, MQTT_WILL_MESSAGE, MQTT_WILL_RETAIN, MQTT_WILL_QOS);
|
||
|
bool retVal = mqttClient.connect(MQTT_CLIENTID, MQTT_USERNAME, MQTT_PASSWORD);
|
||
|
delay(10);
|
||
|
while (currRetryMqtt <= maxRetryMqtt && !mqttClient.connect(MQTT_CLIENTID, MQTT_USERNAME, MQTT_PASSWORD))
|
||
|
{ // connect will return 0 for connected
|
||
|
currRetryMqtt++;
|
||
|
if (mqttClient.connected()) {
|
||
|
currRetryMqtt=0;
|
||
|
return true;
|
||
|
}
|
||
|
else {
|
||
|
#ifdef SERIAL_DEBUG
|
||
|
if (currRetryMqtt == 1) {
|
||
|
Serial.print("Retrying MQTT connection in 1 seconds \t.");
|
||
|
}
|
||
|
else {
|
||
|
Serial.print(".");
|
||
|
}
|
||
|
#endif
|
||
|
delay(1000);// wait 1 seconds
|
||
|
}
|
||
|
}
|
||
|
retVal = mqttClient.connected();
|
||
|
|
||
|
#ifdef OLED_OUTPUT
|
||
|
display.drawStringMaxWidth(0, 32, 128, "MQTT: Error " + String(retVal));
|
||
|
display.display();
|
||
|
#endif
|
||
|
|
||
|
#ifdef OLED_OUTPUT
|
||
|
display.clear();
|
||
|
#endif
|
||
|
return retVal;
|
||
|
}
|
||
|
|
||
|
bool mqtt_disconnect() {
|
||
|
bool retVal = mqttClient.disconnect();
|
||
|
delay(10);
|
||
|
mqttClient.loop();
|
||
|
delay(10);
|
||
|
#ifdef SERIAL_DEBUG
|
||
|
if ( retVal ) {
|
||
|
Serial.println("mqtt disconnected");
|
||
|
}
|
||
|
else {
|
||
|
Serial.println("mqtt NOT disconnected");
|
||
|
}
|
||
|
#endif
|
||
|
return retVal;
|
||
|
}
|
||
|
|
||
|
|