#include <WiFi.h>
#include <InfluxDbClient.h>
#include <InfluxDbCloud.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const char* WIFI_SSID = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
#define INFLUXDB_URL "https://us-east-1-1.aws.cloud2.influxdata.com/"
#define INFLUXDB_TOKEN "-O6aVH-kV-Q5Bd52e4zxMwdKt3La96H9bxDWtFU1nZUur5sbmxK8g5-BEaMkAZn0gXs3ZCKjTGYKFodf0oMtDg=="
#define INFLUXDB_ORG "4ecd34d4f2c6e656"
#define INFLUXDB_BUCKET "API_TOKET IOT"
#define TZ_INFO "COT5"
#define PIN_POTE 35
#define PIN_LDR 34
LiquidCrystal_I2C lcd(0x27, 16, 2);
InfluxDBClient cliente(INFLUXDB_URL, INFLUXDB_ORG, INFLUXDB_BUCKET, INFLUXDB_TOKEN, InfluxDbCloud2CACert);
Point sensor("sensores_iot");
void conectarWifi() {
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Conectando a WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi conectado. IP: " + WiFi.localIP().toString());
}
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Iniciando...");
conectarWifi();
timeSync(TZ_INFO, "pool.ntp.org", "time.nis.gov");
sensor.addTag("dispositivo", "ESP32-Wokwi");
sensor.addTag("ubicacion", "Bucaramanga");
sensor.addTag("autor", "Michel Arocha");
if (cliente.validateConnection()) {
Serial.println("Conectado a InfluxDB: " + cliente.getServerUrl());
} else {
Serial.println("Error InfluxDB: " + cliente.getLastErrorMessage());
}
lcd.clear();
}
void loop() {
int valorPote = analogRead(PIN_POTE);
int valorLDR = analogRead(PIN_LDR);
float voltaje = (valorPote / 4095.0) * 3.3;
float luminosidad = (1.0 - (valorLDR / 4095.0)) * 100.0;
lcd.setCursor(0, 0);
lcd.print("Luz: ");
lcd.print((int)luminosidad);
lcd.print("% ");
lcd.setCursor(0, 1);
lcd.print("Vol: ");
lcd.print(voltaje, 2);
lcd.print("V ");
Serial.print("Luminosidad: ");
Serial.print(luminosidad, 1);
Serial.print("% | Voltaje: ");
Serial.print(voltaje, 2);
Serial.println("V");
Serial.println("Autor: Michel Arocha");
sensor.clearFields();
sensor.addField("voltaje", voltaje);
sensor.addField("pote_raw", valorPote);
sensor.addField("luminosidad", luminosidad);
sensor.addField("ldr_raw", valorLDR);
if (!cliente.writePoint(sensor)) {
Serial.println("Error InfluxDB: " + cliente.getLastErrorMessage());
} else {
Serial.println("Dato enviado a InfluxDB correctamente.");
}
delay(5000);
}