ESP32 + API ThingSpeak

Para trabalhar com um banco de dados voltado para IOT, no caso utilizamos no caso o ThingSpeak, que pode ser acessado por esse link: https://thingspeak.com/
criamos a nossa conta de modo simples, clicando em cadastro e preenchendo as informações.
 

Após isso, selecionamos "Sign In" e realizamos o nosso login e seremos direcionado para a seguinte tela:



Selecionamos em "New channel" e informamos um Nome para o canal, uma descrição e quais serão os dados que iremos inserir, então finalmente no fim da página, selecionarmos "Salvar" sem alterar nenhuma outra informação.




Então, utilizaremos o seguinte código:

#include 
#include 

const char* ssid     = "REDE-WIFI";
const char* password = "Senha";

const char* host = "api.thingspeak.com";
const char* apiKey = "O6NLS0YC08HZHE7N";



#define DHTPIN 23 // pino de dados do DHT11
#define DHTTYPE DHT11 // define o tipo de sensor, no caso DHT11

DHT dht(DHTPIN, DHTTYPE);

float humidade;
float temperatura;



void setup()
{
  Serial.begin(9600);
  dht.begin();

  delay(10);

    Serial.println();
    Serial.print("Conectanto à rede");
    Serial.println(ssid);

    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }

    Serial.println("");
    Serial.println("WiFi conectado");
    Serial.println("IP: ");
    Serial.println(WiFi.localIP());
}

void loop()
{

  humidade = dht.readHumidity();
  temperatura = dht.readTemperature();
  
  if (isnan(temperatura) || isnan(humidade))
  {
    Serial.println("Falha ao ler DHT");
  }
  else
  {
    Serial.print("conectando a ");
    Serial.println(host);
    
    String url = "/update";
    url += "?api_key=";
    url += apiKey;
    url += "&field1=";
    url += humidade;
    url += "&field2=";
    url += temperatura;
    
    WiFiClient client;
    const int httpPort = 80;
    if (!client.connect(host, httpPort)) {
        Serial.println("connection failed");
        return;
    }
    
    Serial.print("Requesting URL: ");
    Serial.println(url);

    // This will send the request to the server
    client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                 "Host: " + host + "\r\n" +
                 "Connection: close\r\n\r\n");
    unsigned long timeout = millis();
    while (client.available() == 0) {
        if (millis() - timeout > 5000) {
            Serial.println(">>> Client Timeout !");
            client.stop();
            return;
        }
    }

    // Read all the lines of the reply from server and print them to Serial
    while(client.available()) {
        String line = client.readStringUntil('\r');
        Serial.print(line);
    }

    Serial.println();
    Serial.println("finalizando conexão");
    /*
    Serial.print("Umidade: ");
    Serial.print(humidity);
    Serial.print(" %\t");
    Serial.print("Temperatura: ");
    Serial.print(temperature);
    Serial.println(" *C");
    */
  }
  delay(30000);
}


modificando a linha const char* host = "api.thingspeak.com"; de acordo com a informação encontrada na tela de "Chaves", em "Chave de Escrita"

Com isto alterado, basta executar o código e nossa aplicação estará subindo dados à API ThingSpeak.


Comentários