#include "DHTesp.h"
#include <WiFiMulti.h>
#include <InfluxDbClient.h>
#include <InfluxDbCloud.h>
#define DEVICE "ESP32"
#define AP "Wokwi-GUEST"
#define SENHA ""
#define INFLUXDB_URL "https://us-east-1-1.aws.cloud2.influxdata.com"
#define INFLUXDB_TOKEN "2EmaAIuj40hJQSdC7mR1hWhGdUt1BffOClSaiHkMQ4i3KQm9Akhf_SqigKY-R76Lq6QM9Uc11OHDXBg1ohiSXg=="
#define INFLUXDB_ORG "7939d173234688d4"
#define INFLUXDB_BUCKET "Iot"
#define TZ_INFO "UTC-3"
const int DHT_PIN = 15;
WiFiMulti wifiMulti;
DHTesp dhtSensor;
InfluxDBClient client(INFLUXDB_URL, INFLUXDB_ORG, INFLUXDB_BUCKET, INFLUXDB_TOKEN, InfluxDbCloud2CACert);
// Data point
Point sensor("DHT22");
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
WiFi.mode(WIFI_STA);
wifiMulti.addAP(AP, SENHA);
Serial.print("Conectando ao WiFi");
while (wifiMulti.run() != WL_CONNECTED) {
Serial.print(".");
delay(100);
}
Serial.println();
timeSync(TZ_INFO, "pool.ntp.org", "time.nis.gov");
if (client.validateConnection()) {
Serial.print("Conectado ao InfluxDB: ");
Serial.println(client.getServerUrl());
} else {
Serial.print("Conexão ao InfluxDB falhou: ");
Serial.println(client.getLastErrorMessage());
}
sensor.addTag("dispositivo", DEVICE);
}
void loop() {
sensor.clearFields();
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float temp = data.temperature;
float umid = data.humidity;
Serial.print("Temperatura: " + String(temp, 2) + "°C, ");
Serial.println("Umidade: " + String(umid, 1) + "%");
sensor.addField("temperatura", temp);
sensor.addField("umidade", umid);
Serial.println(sensor.toLineProtocol());
if (wifiMulti.run() != WL_CONNECTED) {
Serial.println("Erro: Sem conexão WiFi.");
}
// Write point
if (!client.writePoint(sensor)) {
Serial.print("Erro: Escrita no InfluxDB falhou: ");
Serial.println(client.getLastErrorMessage());
}
Serial.println("---");
delay(60000);
}