#include <WiFi.h>
#include "ThingSpeak.h"
#include <LiquidCrystal_I2C.h>

#define LDR_PIN 2





// esp32 wifi parameters
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2306904; //thingspeak channel ID
const char* myApiKey = "BHFBH6PI4TX0NGTE"; //write API key from ThingSpeak
const char* server = "api.thingspeak.com";
const int photoresistorPin = A0;

//Simulate HR and SPO2 parameters
const float calibrationFactor = 100.0; // Your calibration factor (adjust as needed)



WiFiClient client;

LiquidCrystal_I2C lcd(0x27,20,4); //setting LCD address



void setup() {
  // put your setup code here, to run once:
  
  pinMode(LDR_PIN, INPUT);
  lcd.init();
  lcd.backlight();

  //esp32 module code
  WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED){
    delay(1000);
    Serial.println("Wifi not connected");
  }
  Serial.println("Wifi connected !");
  Serial.println("Local IP: " + String(WiFi.localIP()));
  WiFi.mode(WIFI_STA);
  ThingSpeak.begin(client); 
}

void loop() {
  // put your main code here, to run repeatedly:
  

  //Code to simulate HR and SPO2 using lightlevel and lux of photoresistor
  int lightLevel = analogRead(photoresistorPin);

  // Convert the analog value to lux using your calibration factor
  float lux = lightLevel  / calibrationFactor;
  // Convert lux to simulate HR and SPO2
  int spo2 = lux * 2.8;
  int hr = lux*2.2;

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("SPO2:" + String(spo2) + "%"); //Display lux as spo2
  lcd.setCursor(0, 1);
  lcd.print("HR: " + String(hr)); // Display lux as hr

  delay(1000);

 
  //Data sent to thingspeak
  ThingSpeak.setField(1, hr);
  ThingSpeak.setField(2, spo2);
  int x = ThingSpeak.writeFields(myChannelNumber, myApiKey);

  Serial.println(String(hr, 1));
  if(x == 200){
    Serial.println("Data pushed successfull");
  }else{
    Serial.println("Push error" + String(x));
  }
  
  Serial.println(String(spo2, 2));
  if(x == 200){
    Serial.println("Data pushed successfull");
  }else{
    Serial.println("Push error" + String(x));
  }
  Serial.println("---");

  delay(10000);

}
$abcdeabcde151015202530fghijfghij