#include <HTTPClient.h>
#include <DHT.h>
// Pin Definitions
#define DHTPIN 15
#define DHTTYPE DHT22
#define LDRPin 32
#define PotentiometerPin 34
// OpenWeatherMap API
const String apiKey = "e678724c970cc23651a3120bdb389ffb";
const String city = "Ravangla";
const String country = "IN";
const String weatherUrl = "https://openweathermap.org/find?utf8=%E2%9C%93&q=" + city + "," + country + "&units=metric&appid=" + apiKey;
// Initialize DHT Sensor
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
// Setup LDR and Potentiometer pins
pinMode(LDRPin, INPUT);
pinMode(PotentiometerPin, INPUT);
Serial.println("Data Collection Simulation Starting...");
delay(2000);
}
void loop() {
// Simulate getting weather data (replace with real data for testing)
String samplePayload = "{\"temp\":25.0,\"humidity\":65}"; // Example payload for testing
parseWeatherData(samplePayload);
// Read data from LDR (UV simulation)
int uv_intensity = analogRead(LDRPin);
// Read data from Potentiometer (CO/CO2 simulation)
int co2_value = analogRead(PotentiometerPin);
// Convert sensor readings to more meaningful data
int uvIndex = map(uv_intensity, 0, 4095, 0, 10); // UV index (0-10)
float co2_concentration = map(co2_value, 0, 4095, 300, 5000); // Simulated ppm
// Print sensor readings to Serial Monitor
Serial.print("UV Index (Simulated): ");
Serial.print(uvIndex);
Serial.print(" (Based on LDR Value: ");
Serial.print(uv_intensity);
Serial.println(")");
Serial.print("Simulated CO2 Level: ");
Serial.print(co2_concentration);
Serial.println(" ppm");
delay(2000); // Delay for 2 seconds before next reading
}
// Function to Parse Weather Data from OpenWeatherMap
void parseWeatherData(String payload) {
int tempIndex = payload.indexOf("\"temp\":");
int humidityIndex = payload.indexOf("\"humidity\":");
if (tempIndex != -1 && humidityIndex != -1) {
String tempData = payload.substring(tempIndex + 7, payload.indexOf(",", tempIndex));
String humidityData = payload.substring(humidityIndex + 11, payload.indexOf("}", humidityIndex));
float temperature = tempData.toFloat();
float humidity = humidityData.toFloat();
float temperatureF = (temperature * 9.0) / 5.0 + 32.0; // Celsius to Fahrenheit
// Print real-time data to Serial Monitor
Serial.print("Real-time Temperature: ");
Serial.print(temperature);
Serial.print(" °C / ");
Serial.print(temperatureF);
Serial.print(" °F, Humidity: ");
Serial.print(humidity);
Serial.println(" %");
} else {
Serial.println("Error parsing weather data.");
}
}