#include <ThingerESP32.h>
#include <WiFi.h>
#include <Arduino.h>
#include <DHT.h>
#define potenciometro 34 // Pino do potenciometro definido
#define pinoDHT 16
#define tipoDHT DHT22
DHT dht(pinoDHT, tipoDHT);
#define USERNAME "aaaaaaaaana" // Usuário do Thinger.Io
#define DEVICE_ID "gs" // Id do arduino
#define DEVICE_CREDENTIAL "esp32gs" // Credencial do arduino
#define SSID "Wokwi-GUEST" // Wifi simulado do próprio dispositivo
#define SSID_PASSWORD ""
ThingerESP32 thing(USERNAME, DEVICE_ID, DEVICE_CREDENTIAL);
float consumoEnergia = 0;
unsigned long ultimoTempo = 0;
float consumoTaxa;
const float limiteEnergia = 200.0;
float temp, umid;
void setup() {
dht.begin();
Serial.begin(115200);
thing.add_wifi(SSID, SSID_PASSWORD);
pinMode(potenciometro, INPUT);
pinMode(pinoDHT, OUTPUT);
digitalWrite(pinoDHT, LOW);
ultimoTempo = millis();
// Quando conectar no wifi vai verificar se conectou e manda uma mensagem no log
WiFi.begin(SSID, SSID_PASSWORD);
Serial.print("Conectando à rede Wi-Fi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Conectado à rede Wi-Fi!");
thing["Consumo de Energia"] >> outputValue(consumoEnergia);
thing["Temperatura"] >> outputValue(temp);
}
void loop() {
leituraConsumo();
thing.handle();
delay(10000);
}
void leituraSensor(){
temp = dht.readTemperature();
umid = dht.readHumidity();
delay(2000);
Serial.print("Temperatura: ");
Serial.print(temp);
Serial.print(" graus - Umidade: ");
Serial.print(umid);
Serial.println(" %");
}
void leituraConsumo() {
// Simula a leitura do potenciômetro
int valorPotenciometro = analogRead(potenciometro);
// Mostra a verificação do potenciômetro
if (valorPot == 0) {
Serial.println("Erro: leitura do potenciômetro é zero. Verifique as conexões.");
return;
}
// Simule a taxa de consumo com base no valor do potenciômetro
float maxValorPot = 4095.0; // Valor máximo do potenciômetro
float maxConsumo = 30.0; // Valor máximo de consumo em kWh
float percentual = valorPot / maxValorPot; // Calcula o percentual do potenciômetro
consumoTaxa = percentual * maxConsumo; // Calcula a taxa de consumo
// Calcule o tempo passado
unsigned long tempoAtual = millis();
float tempoDecorrido = (tempoAtual - ultimoTempo) / 1000.0; // Tempo em segundos
// Atualize a energia consumida
consumoEnergia += consumoTaxa * tempoDecorrido;
// Atualize o último tempo
ultimoTempo = tempoAtual;
// Verifique se a energia consumida atingiu o limite
if (consumoEnergia >= limiteEnergia) {
digitalWrite(pinoDHT, LOW); // Apague o LED
} else {
digitalWrite(pinoDHT, HIGH); // Acenda o LED
}
// Imprima os valores para monitoramento
Serial.print("Valor do Potenciômetro: ");
Serial.print(valorPot);
Serial.print(" | Taxa de Consumo: ");
Serial.print(consumoTaxa, 1); // Ajuste para mostrar uma casa decimal
Serial.print(" kWh/s | Energia Consumida: ");
Serial.print(consumoEnergia, 1); // Ajuste para mostrar uma casa decimal
Serial.println(" kWh");
thing["Consumo de Energia"] = consumoEnergia;
}