ESP32-C6 na Prática: Consumindo a API do OpenWeatherMap com JSON

Este post faz parte da série ESP32-C6 na Prática

Introdução

Neste artigo, mostraremos como criar e interpretar JSON na placa de desenvolvimento ESP32-C6 DevKitC-1 e a Arduino IDE.

Nosso projeto terá como objetivo fazer uma requisição HTTP GET para receber e processar os dados em formato JSON da API OpenWeatherMap, um serviço gratuito de previsão do tempo

Para conhecer mais a placa de desenvolvimento consulte nosso artigo Introdução à Placa ESP32-C6-DevKitC-1: Ideal para IoT

O que é JSON?

O JSON (JavaScript Object Notation) é um formato leve de troca de dados, baseado em texto e fácil de ler tanto para humanos quanto para máquinas. Sendo util para:

  • Enviar dados para um servidor por API
  • Armazenar dados em arquivos locais
  • Padronizar mensagens com qualquer linguagem de programação

Exemplo:

{
  "temperatura": 25.6,
  "umidade": 70,
  "status": "OK"
}

Criando a chave de API

  1. Crie uma conta gratuita no OpenWeatherMap
  2. No painel, acesse API Keys e copie sua chave

Instalação de Bibliotecas

Abra a Arduino IDE e siga os passos abaixo:

  1. Vá em Sketch > Incluir Biblioteca > Gerenciar Bibliotecas.
  2. Busque por ArduinoJson by Benoit Blanchon
  3. Instale a biblioteca mais recente

Materiais Necessários

Para desenvolver nossa aplicação os materiais utilizados foram:

  •  Placa ESP23-C6 DevKitC-1
  • Cabo USB-C
  • Arduino IDE

Para configurar o ambiente e instalar o suporte a ESP32-C6 veja o artigo ESP32-C6 na Prática: Seu Primeiro “Hello World”

Circuito

Figura 1: Circuito desenvolvido

Código

Vamos criar uma função para realizar uma requisição GET na API do OpenWeatherMap. Para isso, vamos nos basear no formato da resposta da API, ou seja, a estrutura de dados que será devolvido na requisição. Assim podemos estruturar como receber os dados no nosso código.

Figura 2: Exemplo de resposta da API
#include <ArduinoJson.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include "credentials.h"


// Credenciais de rede WiFi
const char* ssid = SSID;
const char* password = PASSWORD;


// OpenWeatherMap
String apiKey = API_KEY;
String cidade = "Sao%20Paulo,br";  // Espacos devem respeitar a URL-encode e substituir por %20
String url = "http://api.openweathermap.org/data/2.5/weather?q=" + cidade + "&appid=" + apiKey + "&units=metric&lang=pt";


void getOpenWeatherMapData() {
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;  // Cria uma instância do cliente HTTP
    http.begin(url);


    int httpCode = http.GET();
    if (httpCode == 200) {
      String payload = http.getString();
      // Criar documento JSON
      JsonDocument doc;
      DeserializationError error = deserializeJson(doc, payload);
      if (!error) {
        float temperatura = doc["main"]["temp"];
        int umidade = doc["main"]["humidity"];
        const char* descricao = doc["weather"][0]["description"];
        const char* cidadeNome = doc["name"];


        Serial.println("------ Clima Atual ------");
        Serial.print("Cidade: ");
        Serial.println(cidadeNome);
        Serial.print("Temperatura: ");
        Serial.print(temperatura);
        Serial.println(" °C");
        Serial.print("Umidade: ");
        Serial.print(umidade);
        Serial.println(" %");
        Serial.print("Condição: ");
        Serial.println(descricao);
        Serial.println("-------------------------\n");
      } else {
        Serial.println("Erro ao interpretar JSON");
      }
    } else {
      Serial.print("Erro na requisição: ");
      Serial.println(httpCode);
    }
    http.end();
  }
}

Também criamos duas funções de exemplo de criação e leitura de um documento JSON. O exemplo completo pode ser acessado em:

https://github.com/guilhermefernandesk/ESP32-C6/tree/main/openWeatherMap

Atenção: Caso você tenha um “Erro na requisição: -1”. Tente alterar as credenciais para o hotspot do seu celular. 

Resultados

Conclusão

Neste artigo, apresentamos como o ESP32-C6 DevKitC-1 pode facilmente consumir uma API e interpretar dados em JSON utilizando a biblioteca ArduinoJson.

Esse mesmo conceito pode ser expandido para qualquer outra API REST, tornando o ESP32 uma poderosa ponte entre o mundo físico (sensores e atuadores) e o digital (servidores e dashboards).

Convidamos você a explorar outras aplicações integrando o JSON, como: trocar envio de strings por JSON.

Sinta-se à vontade para compartilhar seus resultados com a comunidade, seja por artigos, vídeos ou repositórios abertos. Sua experiência pode inspirar e auxiliar muitos outros desenvolvedores.

Referências

ESP32-C6 na Prática

ESP32-C6 na Prática: Log de dados com Banco de Dados ESP32-C6 na Prática: Criando uma API REST e Arduino IDE
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Home » Internet Das Coisas » ESP32-C6 na Prática: Consumindo a API do OpenWeatherMap com JSON

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: