#include <WiFi.h>
#include <DHT.h>
#include <AskSensorsESP32.h>
#define DHTPIN 4 // DHT22 data pin (GPIO 4)
#define DHTTYPE DHT22 // DHT sensor type
#define SOIL_MOISTURE_PIN 32 // GPIO pin connected to soil moisture sensor
#define SOIL_MOISTURE_THRESHOLD_LOW 25
#define SOIL_MOISTURE_THRESHOLD_MEDIUM 75
// WiFi credentials
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// AskSensors credentials and sensor ID
const char* apiKey = "sK5sdCzO7c8Ekg7PjWRRDK7nnXV7FnTV";
const char* sensorId = "11513-24";
DHT dht(DHTPIN, DHTTYPE);
AskSensors askSensors;
void setup() {
Serial.begin(115200);
delay(1000);
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
dht.begin();
askSensors.begin(apiKey, WiFi);
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
int soilMoisture = analogRead(SOIL_MOISTURE_PIN);
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Convert analog reading to percentage (assuming 0-1023 range for ADC)
int moisturePercent = map(soilMoisture, 0, 1023, 0, 100);
// Send data to AskSensors
String data = String("field1=") + String(temperature, 1) +
"&field2=" + String(humidity, 1) +
"&field3=" + String(moisturePercent);
int httpResponse = askSensors.writeSensor(sensorId, data);
if (httpResponse == 200) {
Serial.println("Data sent to AskSensors successfully");
} else {
Serial.print("Error sending data: ");
Serial.println(httpResponse);
}
delay(10000); // Send data every 10 seconds
}