#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ArduinoJson.h>
#include <NTPClient.h>
#include <WiFiUdp.h>

WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "0.south-america.pool.ntp.org", -18000, 6000);

#include "matrix.hpp"
#include "mqtt.hpp"
#include "ota.hpp"

const char *ssid = "mdchaparror";
const char *password = "un260874";
long timeAnterior;
long matrix_time;

void setup()
{
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED)
  {
    delay(5000);
    ESP.restart();
  }
  //Serial.println(WiFi.localIP());
  mensaje += WiFi.localIP().toString();

  ota_init();
  mqtt_init();

  timeClient.begin();
  matrix_init();
}

void loop()
{
  ArduinoOTA.handle();
  yield();
  if ((millis() - matrix_time) > 150)
  {
    matrix_time = millis();
    show_matrix();
  }

  if ((millis() - timeAnterior) > 1000)
  {
    timeAnterior = millis();
    if (!client.connected())
    { yield();
      reconnect();
    }
    timeClient.update(); //sincronizamos con el server NTP
    hora = timeClient.getFormattedTime();
    texto = mensaje + " " + hora;
    longitud = texto.length() * 5 + 64;
  }

  client.loop();
}

