#include <PubSubClient.h>
#include "esp8266_wifi_setup.h"
#include "mqtt_credentials.h"


PubSubClient mqttClient(espClient);

void setup_mqtt() {
    mqttClient.setServer(mqttServer, mqttPort);
}

void reconnect(const char* name, const char* topics[], int numTopics) {
  while (!mqttClient.connected()) {
    Serial.println("Attempting MQTT connection...");
    Serial.print("IP address: ");
    Serial.println(WiFi.localIP());
    
    if (mqttClient.connect(name, mqttUser, mqttPassword)) {
      Serial.println("connected");

      for (int i = 0; i < numTopics; ++i) {
        const char* topic = topics[i];
        if (mqttClient.subscribe(topic)) {
          Serial.print("Subscribed to topic: ");
          Serial.println(topic);
        } else {
          Serial.print("Failed to subscribe to topic: ");
          Serial.println(topic);
        }
      }
    } else {
      Serial.print("failed, rc=");
      Serial.print(mqttClient.state());
      Serial.println(" try again in 5 seconds");
      delay(5000);
    }
  }
}

void reconnect(const char* name) {
  reconnect(name, nullptr, 0);
}