#include <WiFi.h>
#include <FirebaseESP32.h>
#include "addons/TokenHelper.h"
#include "addons/RTDBHelper.h"
#include "DHTesp.h"
// variáveis Firebase //
FirebaseData dados;
FirebaseConfig config;
FirebaseAuth auth;
//# variáveis Firebase
const char* url = "https://gs-iot-5484a-default-rtdb.firebaseio.com/",
* apiKey = "skr2p0cdKAyamUp4yABAHBGz088ccnaF3RX1p671";
unsigned int n_dado;
//# variáveis para uso do sensor de temperatura e umidade //
const byte dht_pin = 4; // pino do sensor
DHTesp dht;
float graus;
byte umidade;
//# variáveis para uso do sensor de fluxo //
const byte fluxo_pin = 4; // pino do sensor
unsigned short int fluxo;
//# variáveis para uso dos sensores infravermelho //
const byte infra_pin = 26
bool infra;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
}
void Init()
{
Serial.begin(9600);
// # Conexão wifi //
WiFi.disconnect();
delay(1000);
Serial.println("Conectando");
WiFi.begin("Wokwi-GUEST", "", 6); //? Wokwi
while ((!(WiFi.status() == WL_CONNECTED)))
{
delay(250);
Serial.print(".");
}
Serial.println("_—‾C͟o͟n͟e͟c͟t͟a͟d͟o‾—_");
// # Conexão Firebase //
config.database_url = url;
config.api_key = apiKey;
if (!Firebase.signUp(&config, &auth, "", ""))
{
Serial.println("Erro ao conectar ao Firebase");
Serial.printf("%s\n", config.signer.signupError.message.c_str());
DebugLed(255, 0, 255); //. #FF00FF
Serial.println("Reiniciando ESP");
delay(2000);
ESP.restart();
}
config.token_status_callback = tokenStatusCallback;
Firebase.begin(&config, &auth);
Firebase.reconnectWiFi(true);
Serial.println("_Conectado ao Firebase_");
//# Inicialização DHT
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
}
void PegarDados()
{
TempAndHumidity dht_data = dhtSensor.getTempAndHumidity();
graus = dht_data.temperature;
umidade = dht_data.humidity;
fluxo = analogRead(fluxo_pin);
infra = !digitalRead(infra_pin);
}
void Enviar()
{
if (Firebase.ready())
{
//# Get current index
if (Firebase.getInt(dados, "/indexAtual"))
{
id = 1 + dados.intData();
Serial.println("Index: " + String(id));
}
else
{
Serial.println("Erro ao coletar index");
Serial.println(dados.errorReason());
}
//# Temperatura
if (Firebase.setFloat(dados, basePath + String(id) + "/Temperatura", graus))
{
Serial.println("Temperatura enviada");
//. Serial.println(dados.dataPath());
}
else
{
Serial.println("Erro ao enviar temperatura");
Serial.println(dados.errorReason());
}
//# Umidade
if (Firebase.setInt(dados, basePath + String(id) + "/Umidade", valorInfra))
{
Serial.println("Umidade enviado");
//. Serial.println(dados.dataPath());
}
else
{
Serial.println("Erro ao enviar Umidade");
Serial.println(dados.errorReason());
}
//# Fluxo
if (Firebase.setInt(dados, basePath + String(id) + "/Fluxo", valorVibracao))
{
Serial.println("Fluxo enviada");
//. Serial.println(dados.dataPath());
}
else
{
Serial.println("Erro ao enviar Fluxo");
Serial.println(dados.errorReason());
}
//# Infravermelho
if (Firebase.setInt(dados, basePath + String(id) + "/Infravermelho", maior))
{
Serial.println("Infravermelho enviada");
//. Serial.println(dados.dataPath());
}
else
{
Serial.println("Erro ao enviar Infravermelho");
Serial.println(dados.errorReason());
}
//# Atualizar index
if (Firebase.setInt(dados, "/indexAtual", id))
{
Serial.println("Index atualizado");
//. Serial.println(dados.dataPath());
}
else
{
Serial.println("Erro ao atualizar index");
Serial.println(dados.errorReason());
}
}
}