#include <WiFi.h>
#include <HTTPClient.h>
#include <DHT.h>
#include <ArduinoJson.h>
#define DHTPIN 14
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const int soilPin = 35;
const int pumpLedPin = 26;
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// --- COLOQUE O IP PÚBLICO DA SUA EC2 AQUI ---
const char* serverName = "http://13.59.84.151:8080/api/telemetria";
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(pumpLedPin, OUTPUT);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); }
Serial.println("\nWiFi Conectado!");
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
float temp = dht.readTemperature();
float humAr = dht.readHumidity();
float soilMoisture = map(analogRead(soilPin), 0, 4095, 0, 100);
StaticJsonDocument<200> doc;
doc["id_dispositivo"] = 1;
doc["temp"] = temp;
doc["hum_ar"] = humAr;
doc["umid_solo"] = soilMoisture;
String jsonStr;
serializeJson(doc, jsonStr);
Serial.println("\n--- Enviando para EC2 ---");
Serial.println(jsonStr);
WiFiClient client; // Cliente HTTP simples (padrão)
HTTPClient http;
http.begin(client, serverName);
http.addHeader("Content-Type", "application/json");
int httpResponseCode = http.POST(jsonStr);
if (httpResponseCode > 0) {
String response = http.getString();
Serial.printf("Sucesso! Código HTTP: %d\n", httpResponseCode);
StaticJsonDocument<200> resDoc;
deserializeJson(resDoc, response);
digitalWrite(pumpLedPin, resDoc["irrigar"] ? HIGH : LOW);
} else {
Serial.print("Erro: ");
Serial.println(http.errorToString(httpResponseCode).c_str());
}
http.end();
}
delay(5000); // Envia a cada 5 segundos para o teste ser mais rápido
}