#include <Arduino.h>
#include <ArduinoJson.h>
#include <HTTPClient.h>
#include <WiFi.h>
#include "DHTesp.h"
#define LED_PIN 22 // Pin de salida para el LED (cámbialo al pin que estés usando)
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const int DHT_PIN = 23;
DHTesp dhtSensor;
// Función para enviar una pregunta a OpenAI y mostrarla en la terminal
void sendQuestionToOpenAI() {
float temperature = dhtSensor.getTemperature();
float humidity = dhtSensor.getHumidity();
HTTPClient http;
http.begin("https://api.openai.com/v1/chat/completions");
http.addHeader("Authorization", "Bearer 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"); // Reemplaza con tu clave de API de OpenAI
http.addHeader("Content-Type", "application/json");
String body = "{\"model\": \"gpt-3.5-turbo\",\"messages\":[{\"role\": \"user\", \"content\": \"Estoy hablando con chat gpt?\"}],\"temperature\": 0}";
int httpCode = http.POST(body);
if (httpCode > 0) {
String payload = http.getString();
DynamicJsonDocument doc(512);
deserializeJson(doc, payload);
String answer = doc["choices"][0]["message"]["content"].as<String>();
// Imprimir la pregunta y respuesta en la terminal
Serial.println("P: ¿Cuál es el riesgo de incendio en la región de Sierra Madre Occidental basado en la temperatura actual (" + String(temperature, 2) + "°C) y humedad (" + String(humidity, 1) + "%)?");
Serial.println("R: " + answer);
} else {
Serial.println("Error en la solicitud HTTP");
}
http.end();
}
void setup() {
Serial.begin(9600);
pinMode(LED_PIN, OUTPUT); // Configura el pin del LED como salida
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Conectando a WiFi...");
}
Serial.println("Conectado a la red WiFi");
// Llama a la función sendQuestionToOpenAI() una vez al inicio
sendQuestionToOpenAI();
}
void loop() {
// Leer datos de temperatura y humedad
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("---");
if (data.temperature > 38) {
digitalWrite(LED_PIN, HIGH); // enciende el LED
} else {
digitalWrite(LED_PIN, LOW); // apaga el LED
}
// Esperar un tiempo antes de la próxima iteración del bucle
delay(5000); // Espera 5 segundos antes de enviar la siguiente pregunta
}