Referência da API da Biblioteca DIYables ESP32 WebApps para Arduino Nano ESP32
Visão Geral
Esta página documenta a API completa da Biblioteca DIYables ESP32 WebApps usada na placa Arduino Nano ESP32. A biblioteca segue uma arquitetura modular — cada aplicação web é uma classe independente que você registra no servidor. Inclua apenas as classes de página que o seu projeto precisa; classes não usadas não consomem flash nem RAM.
A biblioteca cuida da conexão WiFi, do serviço HTTP e da comunicação WebSocket. O seu sketch interage com ela inteiramente por meio de callbacks e métodos de envio.
Recursos da Biblioteca
- Sistema de páginas modular: Registre apenas os apps de que você precisa; cada um é independente
- Memória controlada: A inclusão por app significa que você controla o uso de flash e RAM
- 11 aplicações web integradas: Prontas para usar, sem nenhuma programação web
- Classe base extensível: Derive de DIYablesWebAppPageBase para criar páginas personalizadas
- Design voltado ao WebSocket: Toda a troca de dados em tempo real usa WebSocket na porta 81
- Interface responsiva: Todas as páginas integradas funcionam em desktop, tablet e celular
- API baseada em callbacks: Registro simples de funções — sem necessidade de polling
- Suporte a apps simultâneos: Várias páginas podem funcionar ao mesmo tempo em um único servidor
Classes Principais
DIYablesWebAppServer
A classe central do servidor. Ela gerencia o roteamento HTTP, as conexões WebSocket e despacha as mensagens recebidas para o tratador da página registrada correta.
Construtor
Cria uma instância do servidor com os números de porta informados.
- httpPort: Porta para requisições HTTP (padrão: 80)
- websocketPort: Porta para conexões WebSocket (padrão: 81)
Métodos de Conexão
Inicia o servidor presumindo que o WiFi ou o Ethernet já foi configurado externamente.
- Retorna: true em caso de sucesso, false em caso de falha
Conecta ao WiFi com as credenciais informadas e depois inicia os servidores HTTP e WebSocket.
- ssid: Nome da rede
- password: Senha da rede
- Retorna: true em caso de sucesso, false em caso de falha
Processa as requisições HTTP e os eventos WebSocket pendentes. Chame dentro de loop() a cada iteração.
Retorna true quando a placa tem uma conexão WiFi ativa.
Retorna o endereço IP atual da placa como uma String.
Registro de Páginas
Registra uma instância de página no servidor. O caminho de URL da página é definido no seu construtor.
- app: Ponteiro para um objeto de página
Cancela o registro da página no caminho de URL informado.
- path: String do caminho (por exemplo, "/chat")
Retorna um ponteiro para a página registrada no caminho informado, ou nullptr se não for encontrada.
Define uma página 404 personalizada, exibida quando nenhuma página registrada corresponde a uma requisição.
Acessadores de Páginas Tipadas
Retorna a página de pinos digitais registrada, ou nullptr se não foi adicionada.
Retorna a página de slider registrada, ou nullptr se não foi adicionada.
Retorna a página de joystick registrada, ou nullptr se não foi adicionada.
Classe Base
DIYablesWebAppPageBase
Todas as classes de página, integradas e personalizadas, estendem esta base abstrata. Ela oferece utilitários de resposta HTTP, transmissão por WebSocket e ganchos do ciclo de vida da página.
Construtor
Registra a página no caminho de URL especificado.
- pagePath: Rota de URL desta página (por exemplo, "/web-joystick")
Métodos Abstratos — Obrigatórios em Páginas Personalizadas
Chamado quando um navegador solicita esta página por HTTP.
- client: Interface para escrever a resposta HTTP
Chamado quando chega uma mensagem WebSocket cujo prefixo corresponde a esta página.
- ws: A conexão WebSocket que enviou a mensagem
- message: Conteúdo bruto da mensagem
- length: Tamanho da mensagem em bytes
Retorna uma string de rótulo curta exibida na saída de inicialização do Serial Monitor (por exemplo, "🕹️ Web Joystick: ").
Retorna um fragmento HTML para o card desta página na página inicial.
Métodos de Sobrescrita Opcionais
Chamado quando um novo cliente WebSocket se conecta. Sobrescreva para enviar o estado inicial.
Chamado quando um cliente WebSocket se desconecta.
Métodos Utilitários
Retorna o caminho de URL registrado desta página.
Retorna true se esta página está ativa e responderá às requisições.
Ativa ou desativa a página sem removê-la do servidor.
Escreve no cliente os cabeçalhos HTTP 200 OK padrão.
Envia uma mensagem para uma única conexão WebSocket.
Entrega uma mensagem a todos os clientes WebSocket conectados no momento.
Transmite grandes volumes de HTML usando codificação de transferência em blocos (chunked).
Exemplo de Página Personalizada
Classes de Página Integradas
DIYablesHomePage
Central de navegação que lista todas as aplicações registradas.
Construtor
URL
- /
---
DIYablesWebChatPage
Troca de mensagens de texto de duas vias entre o navegador e a placa.
Construtor
URL
- /webchat
Métodos
Registra um tratador chamado cada vez que o navegador envia uma mensagem de chat.
Envia uma mensagem da placa para a visualização de chat do navegador.
---
DIYablesWebMonitorPage
Monitor serial acessível pelo navegador para registro de saída e entrada de comandos.
Construtor
URL
- /webmonitor
Métodos
Registra um tratador chamado quando o navegador envia um comando.
Envia uma mensagem de log da placa para o monitor do navegador.
---
DIYablesWebDigitalPinsPage
Interface web para ler e escrever os pinos digitais 0–13.
Construtor
URL
- /webdigitalpins
Métodos
Torna o pino visível e controlável na interface web.
- pin: Número do pino (0–13)
- mode: WEB_PIN_OUTPUT ou WEB_PIN_INPUT
Tratador chamado quando o navegador alterna um pino de saída. Recebe (pin, state).
Tratador chamado quando o navegador solicita o estado de um pino de entrada. Retorna o estado atual.
Tratador chamado quando o navegador altera a direção de um pino.
Envia um estado de pino atualizado a todos os clientes de navegador conectados.
---
DIYablesWebSliderPage
Dois sliders de faixa 0–255, adequados para controle PWM e analógico.
Construtor
URL
- /webslider
Métodos
Tratador chamado quando qualquer um dos sliders se move. Recebe (slider1, slider2) na faixa de 0–255.
Tratador chamado quando um navegador recém-conectado solicita as posições atuais dos sliders.
Envia os valores dos sliders ao navegador, atualizando as posições exibidas.
---
DIYablesWebJoystickPage
Joystick virtual 2D que retorna coordenadas X/Y para controle direcional.
Construtor
- autoReturn: Quando true, o joystick volta ao centro ao ser solto
- sensitivity: Porcentagem mínima de deslocamento necessária antes de uma atualização ser enviada
URL
- /webjoystick
Métodos
Tratador chamado no movimento do joystick. Recebe (x, y), cada um na faixa de –100 a +100.
Tratador chamado quando um navegador solicita a posição atual do joystick.
Envia a posição atual do joystick aos navegadores conectados.
Atualiza em tempo de execução o comportamento de retorno automático ao centro.
Atualiza em tempo de execução o limite de sensibilidade de movimento.
---
DIYablesWebPlotterPage
Plotter de dados em tempo real com suporte a até 8 séries de dados simultâneas.
Construtor
URL
- /webplotter
Métodos
Define o título do gráfico exibido acima do plot.
Define os rótulos do eixo X e do eixo Y.
Quando true, a faixa do eixo Y se ajusta automaticamente aos dados recebidos.
Limita o número de pontos de dados mantidos por série antes de os pontos mais antigos serem descartados.
Acrescenta um único ponto (x, y) à série nomeada.
Remove todos os dados de todas as séries.
---
DIYablesNotFoundPage
Página de resposta 404 opcional, exibida para rotas não registradas.
Construtor
Uso Básico
O sketch a seguir demonstra como adicionar uma página de chat e uma de monitor a um projeto com Arduino Nano ESP32:
Referência de URLs das Aplicações Web
| Aplicação | URL Padrão | |
|---|---|---|
| Página Inicial | http | //[board-ip]/ |
| Chat | http | //[board-ip]/webchat |
| Web Monitor | http | //[board-ip]/webmonitor |
| Pinos Digitais | http | //[board-ip]/webdigitalpins |
| Slider | http | //[board-ip]/webslider |
| Joystick | http | //[board-ip]/webjoystick |
| Plotter | http | //[board-ip]/webplotter |
Protocolo WebSocket
Toda a comunicação em tempo real passa por um único servidor WebSocket na porta 81.
- Endpoint WebSocket: ws://[board-ip]:81
- Reconexão: Os navegadores se reconectam automaticamente após uma desconexão
- Formato da mensagem: Baseado em texto; cada app integrado usa um prefixo único para identificar suas mensagens
Padrões de Mensagem por App
Chat — texto simples nos dois sentidos
Monitor — texto simples nos dois sentidos
Pinos Digitais
- Navegador → Placa: {"pin": 13, "state": 1}
- Placa → Navegador: {"pin": 13, "state": 1}
Slider
- Navegador → Placa: {"slider1": 128, "slider2": 255}
- Placa → Navegador: {"slider1": 128, "slider2": 255}
Joystick
- Navegador → Placa: {"x": 50, "y": -25}
- Placa → Navegador: {"x": 50, "y": -25}
Plotter
- Navegador → Placa: não se aplica (somente exibição)
- Placa → Navegador: {"series": "temp", "x": 10.5, "y": 23.4}
Referência de Memória
Inclua apenas as páginas que o seu projeto usa. Consumo aproximado por componente:
| Componente | Flash | RAM |
|---|---|---|
| DIYablesWebAppServer | ~8 KB | ~2 KB |
| DIYablesHomePage | ~3 KB | ~1 KB |
| DIYablesWebChatPage | ~6 KB | ~1.5 KB |
| DIYablesWebMonitorPage | ~5 KB | ~1.5 KB |
| DIYablesWebDigitalPinsPage | ~8 KB | ~2 KB |
| DIYablesWebSliderPage | ~6 KB | ~1.5 KB |
| DIYablesWebJoystickPage | ~7 KB | ~1.5 KB |
| DIYablesWebPlotterPage | ~10 KB | ~2 KB |
| Buffer WebSocket (por cliente) | — | ~1 KB |
Projeto mínimo (servidor + home + um app): ~17 KB de Flash, ~4.5 KB de RAM
Todos os apps habilitados: ~53 KB de Flash, ~12 KB de RAM