//Incluir bibliotecas
#include "WiFi.h"
#include "DHTesp.h"
#include "ThingSpeak.h"
//Definicoes e constantes
char SSIDName[] = "Wokwi-GUEST"; //nome da rede WiFi
char SSIDPass[] = ""; //senha da rede WiFI
const int DHT_PIN = 15; //terminal do sensor de temperatura e umidade
unsigned long myChannelNumber = 1234567; //numero do canal no ThingSpeak
const char * myWriteAPIKey = "SRA0JGZCRGHBS1F3"; //APIKey do ThingSpeak
//Variaveis globais e objetos
DHTesp dhtSensor; //instancia o objeto dhtSensor a partir da classe DHTesp
float Temperatura; //variavel para guardar o valor da temperatura em Celsius
float Umidade; //variavel para guardar o valor da umidade em porcentagem
WiFiClient client; //instancia o objeto client a partir da classe WiFiClient
int httpCode; //variavel para guardar o codigo de retorno HTTP do ThingSpeak
//Setup
void setup() {
Serial.begin(9600);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); //inicializa o sensor
ThingSpeak.begin(client); //inicializa o cliente ThingSpeak
Serial.print("Conectando-se ao Wi-Fi");
WiFi.begin(SSIDName, SSIDPass); //inicializa WiFi
while (WiFi.status() != WL_CONNECTED) { //repete enquanto nao estabelece conexao
delay(100);
Serial.print(".");
}
Serial.println();
Serial.println("Conectado!");
Serial.print("IP: ");
Serial.println(WiFi.localIP()); //imprime o endereco IP
}
//Loop
void loop() {
//Coleta dados da temperatura e umidade
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Temperatura = data.temperature;
Umidade = data.humidity;
Serial.print("Temperatura: ");
Serial.println(Temperatura);
Serial.print("Umidade: ");
Serial.println(Umidade);
// Write value to Field 1 of a ThingSpeak Channel
httpCode = ThingSpeak.writeField(myChannelNumber, 1, Temperatura, myWriteAPIKey);
if (httpCode == 200) {
Serial.println("Channel write successful.");
}
else {
Serial.println("Problem writing to channel. HTTP error code " + String(httpCode));
}
// Wait 5 seconds to update the channel again
delay(5000);
}