Avoid mqtt communication if mqtt is not configured

This commit is contained in:
Mathieu Maret 2016-04-01 00:14:12 +02:00
parent b843eeb184
commit 0dd9901d19
2 changed files with 12 additions and 2 deletions

View File

@ -25,6 +25,8 @@ char GPIO_SET_FEED[MAXSUBSCRIPTIONS][FEED_MAX_SIZE] = {};
Adafruit_MQTT_Publish * mqttGpio[MAXSUBSCRIPTIONS] = {};
bool isMqttConfigured = false;
int MqttSetup(char *server, char *user, char *passwd, int port, char * hostname) {
mqttId = hostname;
snprintf(temperatureFeed, FEED_MAX_SIZE, TEMPERATURE_FEED_FORMAT, mqttId);
@ -34,6 +36,8 @@ int MqttSetup(char *server, char *user, char *passwd, int port, char * hostname)
mqtt_temp = new Adafruit_MQTT_Publish(mqtt, temperatureFeed);
mqtt_pressure = new Adafruit_MQTT_Publish(mqtt, pressureFeed);
isMqttConfigured = server[0] != '\0';
for (int i = 0 ; i < NB_ELEMENTS(gpioWatched) && i < MAXSUBSCRIPTIONS; i++) {
snprintf(GPIO_FEED[i], FEED_MAX_SIZE, GPIO_FEED_FORMAT, mqttId, gpioWatched[i]);
snprintf(GPIO_SET_FEED[i], FEED_MAX_SIZE, GPIO_SET_FEED_FORMAT, mqttId, gpioWatched[i]);
@ -47,6 +51,9 @@ int MqttSetup(char *server, char *user, char *passwd, int port, char * hostname)
return 0;
}
bool MqttIsConfigured(){
return isMqttConfigured;
}
int MqttIsConnected() {
return mqtt->connected();
}

View File

@ -80,6 +80,7 @@ int MqttSetup(char *server, char *user, char *passwd, int port, char * hostname)
int MqttPublish(double temp, double pressure);
void MqttCheckSubscription();
void MqttChangeGpioValue(int gpio, int value);
bool MqttIsConfigured();
void WifiSetup(int bootmode, int forceSetup, char *confSsid, char *confPassword, char *confHost) {
IPAddress myIP;
@ -215,7 +216,8 @@ void loop() {
ArduinoOTA.handle();
} else {
server.handleClient();
MqttCheckSubscription();
if (MqttIsConfigured())
MqttCheckSubscription();
delay(CONFIG_WEB_DELAY_MS);
nbCycle++;
@ -225,7 +227,8 @@ void loop() {
SKETCH_DEBUG_PRINT(temp);
SKETCH_DEBUG_PRINT( " Pressure mB ");
SKETCH_DEBUG_PRINTLN(pressure);
MqttPublish(temp, pressure);
if (MqttIsConfigured())
MqttPublish(temp, pressure);
} else {
SKETCH_DEBUG_PRINTLN("Cannot get T°C");
}