#include <WiFi.h>
#include <HTTPClient.h>
const int SOIL_PIN = 34;
const int VALVE_PIN = 23;
const int STATUS_LED = 2;
const char* WIFI_SSID = "Wokwi-GUEST";
const char* API = "https://v2.tecnologiasinteligentes.io/api/iot/device/decision?demo=true";
void setup() {
Serial.begin(115200);
pinMode(VALVE_PIN, OUTPUT);
pinMode(STATUS_LED, OUTPUT);
digitalWrite(VALVE_PIN, LOW);
digitalWrite(STATUS_LED, LOW);
WiFi.begin(WIFI_SSID, "", 6);
Serial.print("Conectando WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
digitalWrite(STATUS_LED, HIGH);
Serial.println();
Serial.println("ESP32 V2 IoT conectado");
Serial.println(WiFi.localIP());
}
void loop() {
int raw = analogRead(SOIL_PIN);
// 0–4095 → 100–0 %
int moisture = map(raw, 0, 4095, 100, 0);
Serial.printf(
"Humedad del suelo: %d%%\n",
moisture
);
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
String url =
String(API) +
"?soil_moisture=" +
String(moisture);
http.begin(url);
int code = http.GET();
Serial.printf(
"API → HTTP %d\n",
code
);
if (code == 200) {
String body = http.getString();
Serial.println(body);
bool water =
body.indexOf("\"water\":true") >= 0;
if (water) {
digitalWrite(VALVE_PIN, HIGH);
Serial.println("💧 REGANDO");
} else {
digitalWrite(VALVE_PIN, LOW);
Serial.println("🌱 NO REGAR");
}
}
http.end();
}
delay(5000);
}Loading
esp32-devkit-c-v4
esp32-devkit-c-v4