#include <Arduino.h>
#include <WiFi.h>
#include <WiFiMulti.h>
#include <HTTPClient.h>

WiFiMulti wifiMulti;

void setup() {
  Serial.begin(115200);
  for (uint8_t t=4; t > 0; t--) {
    Serial.printf("[SETUP] WAIT %d...\n", t);
    Serial.flush();
    delay(1000);
  }
  pinMode(33, INPUT); //initializes motion sensor
  delay(60*1000);
  wifiMulti.addAP("DESKTOP-G3T7U0O 6670", "joerogan24"); //initializes wifi network
}

int sensorData = -1;

void loop() {
int oldData = sensorData;
int sensorValue = digitalRead(33); // if sensor is activated, outputs 1
if (sensorValue == HIGH){
    sensorData = 1;
    Serial.print("Motion Detected ");
    Serial.println(sensorData);
 } else {                           // if sensor is not activated, outputs 0
   sensorData = 0;
   Serial.print("No motion Detected ");
   Serial.println(sensorData);
 }

if (sensorData != oldData){
    if ((wifiMulti.run()==WL_CONNECTED)) { // wait for wifi connection
      HTTPClient http; // creates http client object
      http.begin("https://web.engr.oregonstate.edu/~gholsonl/sensorData.php"); // setup request to look like html form
      http.addHeader("Content-Type", "application/x-www-form-urlencoded"); // data to send with http POST
      String sensorString;
      sensorString = "sensor=";
      sensorString = sensorString + sensorData;
      Serial.print("POST data to send: ");
      Serial.println(sensorString); // send http POST request
      int httpCode = http.POST(sensorString);
      if (httpCode > 0) { // Valid response?
        if (httpCode == HTTP_CODE_OK) {
          String payload = http.getString();
          Serial.println(payload);
        } else{
          Serial.printf("[HTTP] GET... code: %d\n", httpCode);
        }
      }
      http.end(); // end request
    }  
    }     
}
