//Include required libraries
//https://iotdesignpro.com/articles/esp32-data-logging-to-google-sheets-with-google-scripts
#include "WiFi.h"
#include <HTTPClient.h>


const char* ssid = "Wokwi-GUEST";         
const char* password = "";    
int state=0;
String URL = "https://hook.eu2.make.com/b2xktm5e51dug261m23v866bwropisbr";    
int buttonPin = 19;
int potPin = 4;
int G_LEDPin = 23;
int R_LEDPin = 22;
void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(G_LEDPin, OUTPUT);
  pinMode(R_LEDPin, OUTPUT);
  delay(1000);
  Serial.begin(115200);
  delay(1000);
  // connect to WiFi
  Serial.println();
  Serial.print("Connecting to wifi: ");
  Serial.println(ssid);
  Serial.flush();
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  
}
void loop() {
  String func;
  if (digitalRead(buttonPin)==HIGH){
    state = (state+1) %2; 
    if (state==1 ){
      digitalWrite(G_LEDPin,1);
      func="putdata";
      run(func);
    }
    else{
      digitalWrite(G_LEDPin,0);
      func="getdata";
      run(func);

    }
    
  }
} 

void run(String func){
   String urlFinal;
   if (WiFi.status() == WL_CONNECTED) {
      
    
    if (func=="putdata"){
        urlFinal = URL+"?func=" + func + "&potentiometer=" + analogRead(potPin); 
    }
    else if (func=="getdata"){
        urlFinal = URL+"?func=" + func; 
    }        
    
    //String urlFinal = "http://api.pushingbox.com/pushingbox?devid=vBB11C6F4259F247&func=" + func + "&row=" + row+ "&col=" + col+ "&name=" + name+ "&gift=" + gift;
    Serial.print("POST data to spreadsheet:");
    Serial.println(urlFinal);
    HTTPClient http;
    http.begin(urlFinal.c_str());
    http.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS);
    int httpCode = http.GET(); 
    Serial.print("HTTP Status Code: ");
    Serial.println(httpCode);
    //---------------------------------------------------------------------
    //getting response from google sheet
    String payload;
    if (httpCode > 0) {
        payload = http.getString();
        Serial.println("Payload: "+payload); 
        if (func== "getdata"){
           if (payload=="1"){
              digitalWrite(R_LEDPin,1);
           }
           else{
              digitalWrite(R_LEDPin,0);
           }
         } 
    }
    //---------------------------------------------------------------------
    http.end();
  }
  
  delay(1000);
}