#include <WiFi.h>
#include <Arduino.h>
#include <WiFiMulti.h>
#include <HTTPClient.h>
#define USE_SERIAL Serial

WiFiMulti wifiMulti;

String payload;

void setup() {  
  Serial.begin(115200);

  USE_SERIAL.begin(115200);
  pinMode(25,OUTPUT); // blue
  pinMode(33,OUTPUT); // green
  pinMode(32,OUTPUT); // red

  USE_SERIAL.println();
  USE_SERIAL.println();
  USE_SERIAL.println();

 // Prints a countdown to the console
  for(uint8_t t=4; t>0; t--) {
    USE_SERIAL.printf("[SETUP] WAIT %d...\n", t);
    USE_SERIAL.flush();
    delay(100);
  }
  
 // Connects the ESP32 to the appropriate WiFi network
  wifiMulti.addAP("OSU_Access", "");

 // If the connection has failed, continues to try and reconnect until it succeeds
  while ((wifiMulti.run() != WL_CONNECTED)) {
    USE_SERIAL.println("Reconnecting");
    wifiMulti.addAP("OSU_Access", "");
    delay (2000);
  }

  USE_SERIAL.println("Connected!");
  } 

void loop() {
  while ((wifiMulti.run() != WL_CONNECTED)) {
    USE_SERIAL.println("Reconnecting");
    wifiMulti.addAP("OSU)Access", "");
    delay (2000);
  }

  if((wifiMulti.run() == WL_CONNECTED)) {
    HTTPClient http;

    http.begin("https://web.engr.oregonstate.edu/~mcdavida/storageSite.php");
    int httpCode = http.GET();
    if(httpCode > 0) {
      USE_SERIAL.printf("[HTTP] GET... code...: %d\n", httpCode);

      payload = http.getString();  
      USE_SERIAL.println(payload);
    }
  }
  
    // Blink to initiate start
    digitalWrite(33, HIGH);
    delay(200);
    digitalWrite(33, LOW);
    delay(200);
    digitalWrite(33, HIGH);
    delay(200);
    digitalWrite(33, LOW);
    delay(200);
    digitalWrite(33, HIGH);
    delay(200);
    digitalWrite(33, LOW);
    delay(1000);

int payloadLength = payload.length();
payload.remove(payloadLength - 1);

int i = 0;
 
 for(i = 0; i < payload.length(); i++) {
  char check = payload.charAt(i);
  USE_SERIAL.println(check); //Prints the number that the LED's are blinking out 

  // number 1
  if(check = '1') {
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(25, HIGH);
    delay(1000);
    digitalWrite(25, LOW);
    delay(300);
   }

  // number 2
  else if(check = '2') {
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(25, HIGH);
    delay(1000);
    digitalWrite(25, LOW);
    delay(300);
   }

  // number 3
  else if(check = '3') {
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(25, HIGH);
    delay(1000);
    digitalWrite(25, LOW);
    delay(300);
   }

  // number 4
   else if(check = '4') {
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(25, HIGH);
    delay(1000);
    digitalWrite(25, LOW);
    delay(300);
   }

  // number 5
   else if(check = '5') {
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(25, HIGH);
    delay(1000);
    digitalWrite(25, LOW);
    delay(300);
   }

  // number 6
   else if(check = '6') {
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(25, HIGH);
    delay(1000);
    digitalWrite(25, LOW);
    delay(300);
   }

  // number 7
   else if(check = '7') {
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(25, HIGH);
    delay(1000);
    digitalWrite(25, LOW);
    delay(300);
   }

  // number 8
   else if(check = '8') { 
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(25, HIGH);
    delay(1000);
    digitalWrite(25, LOW);
    delay(300);
   }

  // number 9
   else if(check = '9') {
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(200);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(25, HIGH);
    delay(1000);
    digitalWrite(25, LOW);
    delay(300);
   }

  // number 0
   else if(check = '0') { 
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(32, HIGH);
    delay(600);
    digitalWrite(32, LOW);
   
    delay(300);
    digitalWrite(25, HIGH);
    delay(1000);
    digitalWrite(25, LOW);
    delay(300);
  }
 
 }
 //Green to signal end of string 
    delay(2000);
    digitalWrite(33, HIGH);
    delay(200);
    digitalWrite(33, LOW);
    delay(200);
    digitalWrite(33, HIGH);
    delay(200);
    digitalWrite(33, LOW);
    delay(200);
    digitalWrite(33, HIGH);
    delay(200);
    digitalWrite(33, LOW);
    delay(5000);
 
}
