// Inclui as bibliotecas necessárias
#include <WiFi.h>
#include <ThingerESP32.h>
#include <DHT.h>
// Define o tipo de sensor DHT e o pino ao qual ele está conectado
#define DHTTYPE DHT22 // Pode ser DHT11, DHT22 ou DHT21
#define DHTPIN 4 // Pino GPIO ao qual o sensor está conectado
// Crie uma instância do sensor DHT
DHT dht(DHTPIN, DHTTYPE);
// Insira as suas credenciais do thinger.io e do Wi-Fi
#define THINGER_USERNAME "seu_usuario"
#define THINGER_DEVICE_ID "seu_id_do_dispositivo"
#define THINGER_DEVICE_CREDENTIALS "sua_credencial"
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
// Cria uma instância do objeto Thinger
ThingerESP32 thing(THINGER_USERNAME, THINGER_DEVICE_ID, THINGER_DEVICE_CREDENTIALS);
// Define o pino do LED para indicar o status da conexão
#define LED 2
// --- Funções Auxiliares ---
// Função para exibir as informações de conexão Wi-Fi
void showWiFiInfo() {
Serial.println("--- Informacoes da Conexao Wi-Fi ---");
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
Serial.print("Endereco IP: ");
Serial.println(WiFi.localIP());
Serial.print("Endereco MAC: ");
Serial.println(WiFi.macAddress());
Serial.println("------------------------------------");
}
// --- Setup ---
void setup() {
// Inicia a comunicação serial para debug
Serial.begin(115200);
delay(100);
// Inicializa o pino do LED como saída
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW); // Garante que o LED está desligado
// Inicia o sensor DHT
dht.begin();
Serial.println("Iniciando a conexao Wi-Fi...");
// Conecta ao Wi-Fi
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
digitalWrite(ledPin, !digitalRead(ledPin)); // Pisca o LED enquanto conecta
}
// Se a conexão foi bem-sucedida, acende o LED
digitalWrite(ledPin, HIGH);
// Exibe as informações da conexão Wi-Fi
showWiFiInfo();
// Configura o recurso no Thinger.io para enviar os dados
// Este recurso será chamado "dht" na sua dashboard do Thinger.io
thing["dht"] >> [](pson& out){
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Checa se as leituras foram bem-sucedidas
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Falha ao ler o sensor DHT!");
out["status"] = "Falha na leitura";
return;
}
// Envia a umidade e a temperatura como recursos separados
out["humidity"] = humidity;
out["temperature"] = temperature;
Serial.print("Enviando dados: Umidade = ");
Serial.print(humidity);
Serial.print("%, Temperatura = ");
Serial.print(temperature);
Serial.println(" C");
};
Serial.println("\nSetup concluido. Conectando ao Thinger.io...");
}
// --- Loop Principal ---
void loop() {
// Mantém a conexão com o Thinger.io
thing.handle();
delay(5000); // Aguarda 5 segundos antes de verificar e enviar novos dados
}