/*
Exemplo composto com : https://github.com/mathworks/thingspeak-arduino
https://github.com/adafruit/DHT-sensor-library/tree/master
Gráfico dos dados: https://thingspeak.mathworks.com/channels/451231/charts/4?bgcolor=%23ffffff&color=%23d62020&dynamic=true&results=60&type=line&update=15
*/
#include "parametros.h"
#include <WiFi.h>
#include <ThingSpeak.h>
#include <DHT.h>
#include <DHT_U.h>
char rede[] = REDE;
char senha[] = SENHA;
DHT_Unified dht(DHTPIN, DHTTYPE);
WiFiClient client; //Inicializacao do cliente ThinkSpeak
bool is_wifi_connected() {
return WiFi.status() == WL_CONNECTED;
}
void setup() {
Serial1.begin(115200);
Serial1.println("Exemplo de Conexão");
Serial1.println("-------------------------------");
WiFi.mode(WIFI_STA); // https://randomnerdtutorials.com/esp32-useful-wi-fi-functions-arduino/
WiFi.begin(rede, senha); // Iniciando a conexao
Serial1.print("Conectando...");
while (!is_wifi_connected()) {
delay(500);
Serial1.print(".");
delay(500);
}
// connection established
Serial1.println("");
Serial1.print("Conexão estabelecida com a rede: ");
Serial1.println(WiFi.SSID());
// print IP Address
Serial1.print("IP atribuído: ");
Serial1.println(WiFi.localIP());
dht.begin();//Inicializando sensor de temperatura
sensor_t sensor;
ThingSpeak.begin(client); // Inicializando ThingSpeak
}
void loop() {
sensors_event_t event;
dht.temperature().getEvent(&event);
float temperatura;
float umidade;
// Para cada parametro ele tenta realizar a leitura, caso nao consiga ele da erro
if (isnan(event.temperature)) {
Serial1.println(F("Error reading temperature!"));
}
else { // Se a leitura do sensor for com sucesso atualiza a variável
Serial1.print(F("Temperature: "));
Serial1.print(event.temperature);
Serial1.println(F("°C"));
temperatura = event.temperature;
}
// Para cada parametro ele tenta realizar a leitura, caso nao consiga ele da erro
dht.humidity().getEvent(&event);
if (isnan(event.relative_humidity)) {
Serial1.println(F("Error reading humidity!"));
}
else { // Se a leitura do sensor for com sucesso atualiza a variável
Serial1.print(F("Humidity: "));
Serial1.print(event.relative_humidity);
Serial1.println(F("%"));
umidade = event.relative_humidity;
}
Serial1.print("Enviando dados para o ThingSpeak:\n\tTemperatura: ");
Serial1.println(temperatura);
int x = ThingSpeak.writeField(SECRET_CH_ID_COUNTER, 4, temperatura, SECRET_WRITE_APIKEY);
if(x == 200){
Serial1.println("Canal atualizado com sucesso.");
}
else{
Serial1.println("Houve um problema ao atualizar o canal. Codigo de erro HTTP " + String(x));
}
delay(20000); //Esperando 20s
}