ESP8266 sin página web

9

¿Puedo enviar datos a un ESP8266 sin crear un servidor web?

Estoy accediendo a los pines GPIO de ESP8266 a través de un servidor web. Ahora quiero hacer una aplicación de Android para eso. Entonces, quiero enviar datos al 8266 sin hacer un servidor web, ¿es esto posible?

SHILADITYA DEY
fuente
Al usar una aplicación de Android, ¿estarías en la misma red?
Rohan

Respuestas:

8

Sí, puede enviar datos a un ESP8266 sin usar un servidor web, pero es posible que desee usar uno o algo funcionalmente relacionado con uno.

Un ESP8266 es un dispositivo informático de propósito bastante general con una radio WiFi y una pila de red, por lo tanto, puede implementar casi cualquier protocolo razonable que desee describir en el código.

Sin embargo, se ha vuelto bastante popular implementar protocolos que se parecen y actúan de manera muy similar a las páginas web en miniatura destinadas al consumo humano.

es decir, en lugar de que su cliente se conecte y haga algo como

GET /index.html HTTP/1.1

podría decir

GET /gpio/15/value HTTP/1.1

Donde la URL no se refiere a un documento específico, sino a algún dato en el dispositivo al que desea acceder. Se pueden hacer cosas similares para POST, PATCH, DELETEpeticiones, etc.

A menos que esté creando una página para consumo humano, los datos que intercambie no serían páginas HTML. A menudo puede ser algo así como JSON. Así por ejemplo

GET /gpio/15/value HTTP/1.1

podría desencadenar una respuesta como

{"gpio": 15, "direction": "in", "value": 0}

Del mismo modo, puede hacer un punto final donde su cliente pueda establecer un GPIO diciendo

POST /gpio/15 HTTP/1.1
{"direction": "out", "value": 1}

Hasta cierto punto, es una pregunta semántica o de implementación específica si el programa que responde a esas consultas es un "servidor web"; podría ser un servidor web que ejecuta varias tareas auxiliares para manejar los datos y gpios (de la misma manera que un servidor que sirve páginas dinámicamente) generar parte de su contenido a partir de consultas en la base de datos), o podría ser un programa dedicado que maneje los datos y sepa cómo hablar HTTP.

Y, por supuesto, el uso de HTTP para intercambiar cargas JSON es solo una de las muchas formas de hacer las cosas: es una de las más populares actualmente y reutiliza muchos conceptos similares a los de un servidor web, y hasta cierto punto puede incluso permitir el uso de un navegador web. para las pruebas.


También vale la pena tener en cuenta que este esquema tiende a funcionar mejor localmente, cuando el teléfono y el ESP8266 son clientes de la misma red WiFi doméstica. Si el teléfono no está "en casa" o lo está, pero solo está en una red móvil, permitir que llegue al ESP8266 significaría permitir solicitudes externas en la red doméstica, algo que preferiblemente se debe evitar. En ese caso, es bastante popular usar un protocolo en el que tanto el dispositivo ESP8266 como el teléfono se comunican de forma independiente con un servidor de retransmisión externo, que pasa mensajes entre ellos. MQTT es un ejemplo de un esquema utilizado a menudo para un sistema con una arquitectura basada en servidor de retransmisión.

Chris Stratton
fuente
Además, tengo curiosidad por implementar DELETEpara un puerto ;-)
Arjan
1
En muchos sistemas Linux, debe "exportar" un GPIO antes de poder usarlo con la interfaz / sys / class / gpio. No sé si puedes "no exportar" uno, pero conceptualmente podría coincidir con un BORRAR :-)
Chris Stratton
2

Sí, puede escribir un servidor TCP personalizado . O, para un peso más ligero, use un servidor UDP .

De cualquier manera, defina su propio protocolo de aplicación sobre TCP / UDP y haga que su aplicación lo envíe. Y ahorras en la sobrecarga de HTTP. (¡HTTP puede tener alrededor de 1000 bytes de sobrecarga por mensaje!)

ValienteNuevoMoneda
fuente