Sim, você pode enviar dados para um ESP8266 sem usar um servidor da Web, mas você pode querer usar um ou usar algo funcionalmente relacionado a um.
Um ESP8266 é um dispositivo de computação de uso geral com um rádio WiFi e uma pilha de rede; portanto, você pode implementar praticamente qualquer protocolo razoável que queira descrever no código.
No entanto, tornou-se bastante popular a implementação de protocolos que se parecem muito com páginas da Web em miniatura destinadas ao consumo humano.
ou seja, em vez de seu cliente se conectar e fazer algo como
GET /index.html HTTP/1.1
pode dizer
GET /gpio/15/value HTTP/1.1
Onde o URL não se refere a um documento específico, mas a alguns dados no dispositivo que você deseja acessar. Você pode fazer coisas semelhantes para POST
, PATCH
, DELETE
etc solicitações.
A menos que você esteja criando uma página para consumo humano, normalmente os dados que você troca não seriam páginas HTML. Muitas vezes, pode ser algo como JSON. Então por exemplo
GET /gpio/15/value HTTP/1.1
pode desencadear uma resposta como
{"gpio": 15, "direction": "in", "value": 0}
Da mesma forma, você pode criar um terminal em que seu cliente possa definir um GPIO dizendo
POST /gpio/15 HTTP/1.1
{"direction": "out", "value": 1}
Até certo ponto, é uma pergunta semântica ou de implementação específica se o programa que responde a essas perguntas é um "servidor da web" - pode ser um servidor da web que executa várias tarefas auxiliares para lidar com os dados e gpios (da mesma forma que um servidor que serve páginas pode dinamicamente gerar parte de seu conteúdo a partir de consultas ao banco de dados) ou pode ser um programa dedicado que lida com os dados e sabe falar HTTP.
E, é claro, o uso do HTTP para trocar cargas JSON é apenas uma das muitas maneiras de fazer as coisas - é popular atualmente, que reutiliza muitos conceitos do tipo servidor da web e pode até permitir o uso de um navegador da web para teste.
Também é importante lembrar que esse esquema tende a funcionar melhor localmente, quando o telefone e o ESP8266 são clientes da mesma rede Wi-Fi doméstica. Se o telefone não estiver "em casa" ou estiver, mas estiver apenas em uma rede móvel, permitir que ele alcance o ESP8266 significaria permitir solicitações externas à rede doméstica, algo preferencialmente evitado. Nesse caso, é bastante popular usar um protocolo em que o dispositivo ESP8266 e o telefone alcancem independentemente um servidor de retransmissão externo, que transmite mensagens entre eles. O MQTT é um exemplo de um esquema frequentemente usado para um sistema com uma arquitetura baseada em servidor de retransmissão.