Acerca del proyecto
En este post vamos a ver los diferentes modos de configuración del módulo wifi esp8266, esp32, entre otros; donde vamos a conocer la arquitectura cliente servidor, que es una de las más utilizadas para este tipo de conexión, los diferentes protocolos de comunicación y los modos de uso de esp como lo son el access point y estación, adicionalmente vamos a hablar sobre las redes de comunicación que se utilizan en el wi-fi.
Básicamente en este post encontrarán las definiciones de cómo podemos conectar este módulo, imágenes descriptivas que nos ayudarán a entender su funcionamiento y en dónde vamos a aplicar estos conocimientos dependiendo del proyecto que necesitemos controlar.
No nos vamos a enfocar en la parte técnica ya que en eso lo vamos a dividir en varios posts que se van a crear a futuro pero la idea de este post es poder entender principalmente las definiciones que vamos a trabajar en esos post donde vamos a crear cada una de las funcionalidades.
Conocimiento previo
Para realizar este proyecto se requiere conocimiento previo de los siguientes temas, si aun no has trabajado con lo que se menciona en la siguiente tabla, allí están los links a los post para que puedas dar un repaso adicional o puedas recordar el conocimiento necesario para poder realizar este proyecto.
Proyecto | Descripción |
---|---|
HTTP | En este post explicamos el protocolo http y sus diferentes peticiones. |
Cliente servidor
Esta arquitectura es un modelo de diseño de software en que las tareas se reparten entre los clientes que son programas que representan entidades que necesitan servicios y los servidores o programas que proporcionan servicios para los clientes, estos son objetos separados desde el punto de vista lógico pero se comunican a través de una red de comunicaciones para realizar varias tareas en conjunto.
La forma de trabajar esta arquitectura comienza cuando un cliente solicita una petición de un servicios al servidor, este la recibe y la procesa según su propósito y configuración, cuando el servidor finalice, este retornará la respuesta a el cliente que inició la petición.
Hay una relación entre muchos clientes y un solo servidor, esto proporciona centralización de la información y de procesos, haciendo que el mantenimiento sea más eficiente y barato.
Características
Un sistema Cliente/Servidor es un Sistema de Información distribuido basado en las siguientes características:
- Servicio: unidad básica de diseño. El servidor los proporciona y el cliente los utiliza.
- Recursos compartidos: Muchos clientes utilizan los mismos servidores y, a través de ellos, comparten tanto recursos lógicos como físicos.
- Protocolos asimétricos: Los clientes inician “conversaciones”. Los servidores esperan su establecimiento pasivamente.
- Transparencia de localización física de los servidores y clientes: El cliente no tiene por qué saber dónde se encuentra situado el recurso que desea utilizar.
- Independencia de la plataforma HW y SW que se emplee.
- Sistemas débilmente acoplados. Interacción basada en envío de mensajes.
- Encapsulamiento de servicios. Los detalles de la implementación de un servicio son transparentes al cliente.
- Escalabilidad horizontal (añadir clientes) y vertical (ampliar potencia de los servidores).
- Integridad: Datos y programas centralizados en servidores facilitan su integridad y mantenimiento.
Cliente
¿Pero qué es un cliente?, como vemos en la explicación anterior, es un dispositivo electrónico conectado a una red de internet o local quién realiza la comunicación hacia el servidor por medio de peticiones, estas solicitan algún servicio y dara una respuesta válida o incorrecta. Para realizar una comunicacion efectiva ambas partes deben establecer un protocolo de comunicacion, para poder entender que peticiones se solicitan y como dar y procesar la respuesta.
Los protocolos de comunicación son reglas entre distintos dispositivos http, tcp, udp, mqtt, entre otros son básicamente protocolos qué nos permiten el intercambio de información entre un cliente y un servidor, estos protocolos tienen que estar configurados en las máquinas para que puedan realizar una comunicación efectiva.
Ahora dependiendo del uso de cada uno estos protocolos tiene su forma de enviar la información y de recibirla, por ejemplo, el protocolo http que vamos a utilizar en los mensajes básicamente son peticiones tipo: get, post, put, delete, entre otras las cuales vamos a enviarle al servidor para que él pueda saber qué es lo que estamos solicitando, con eso el servidor podra dar una respuesta que puede ser por el mismo protocolo http con los formatos json, xml, etre otros o archivos de tipos texto.
Servidor
Un servidor es un programa que se encarga de estar a la espera de peticiones de otros programas que están fuera de la red o pueden estar en la misma red los cuales denominamos clientes, la única diferencia entre estos dos y lo que vimos anteriormente en el apartado del cliente es que el servidor es mucho más potente ya que puede recibir múltiples peticiones de diferentes clientes procesarlas y darles una respuesta según la necesidad o la petición que están realizando.
Igual que en la comunicación del cliente también podemos encontrar protocolos como: http, tcp, udp, mqtt para que podamos enviar y recibir las peticiones que llegan desde el cliente, también tiene la posibilidad de dar una respuesta en formato: xml, Json o texto plano. El servidor es quién realiza la mayor carga, es quien realiza el mayor procesamiento de la información.
Modos de conexión del esp
Es muy frecuente encontrar proyectos, en donde se realice la configuración de la esp en modo servidor o mode cliente, en este apartado vamos a ver las diferentes conexiones en cada modo, las características y en donde aplica este tipo de conexión con la esp.
Modo cliente
Recordemos del apartado anterior que el cliente es quien se encarga de realizar la comunicación a el servidor, entonces, lo que vamos a ver ahora son unos ejemplos teóricos en donde vamos a utilizar el cliente cómo dispositivo que solicitá información o dispositivo que envía información al servidor.
Para entender la comunicación de un cliente, les propongo el siguiente ejemplo: vamos a obtener la fecha y hora en tiempo real, el servidor se creara un servicio que proporciona punto de entrada por medio de una url con un llamado http tipo get y retornara una respuesta en forma json, este llamado lo podemos solicitar desde el cliente que tenga conexión a el servidor y pueda realizar los llamados http.
A lo que voy con este ejemplo es que la petición que realiza el cliente puede ser muy sencilla, cómo la hora y la fecha actual o puede ser algo muy complejo cómo obtener alguna medición física de nuestro entorno.
Formas de conectarse a de un cliente a servidor
Cómo se ha mencionado, tenemos varias formas de conectarse a un servidor por medio de cliente, vamos a explicar las mas usadas:
HTTP
Permite realizar las peticiones por este protocolo en donde se establece una comunicación se envía y recibe información y luego se cierra la comunicación, el servidor no sabe cuándo se volverá a establecer de nuevo la comunicación con el dispositivo cliente.
MQTT
Establece y abre una comunicación y esta no se cierra hasta que se le indique por el cliente, se puede enviar y recibir información.
Modo servidor
Una vez entendido el funcionamiento de un cliente procedemos a ver como funciona el modo servidor, básicamente lo que permite es crear son las entradas de las peticiones a los servicios que el cliente puede acceder.
Antes de iniciar crear estás entradas y servicios debemos tener en cuenta muy bien cómo es el modo de configuración de un servidor utilizando el ESP, básicamente nos permite configurar dos modos los cuales trabajan de forma independiente o combinados, estos modos son el access point o el estación; en qué casos debo utilizar uno o el otro, en qué se diferencian y cómo configurarlos es lo que vamos a entender en el siguiente contenido:
Access point (punto de acceso)
En este modo el dispositivo crea su propia red local y el microcontrolador actúa como un punto de acceso para la red, esto permite que varios dispositivos clientes puedan conectarse por medio de está red local al punto que se ha creado con el ESP, adicionalmente en esta red local se puede configurar el nombre de red, su identificador y la contraseña para que los dispositivos que se conecten puedan acceder de forma segura.
Estación
El modo estación consiste en que el ESP conectado a una red, ya sea por un router o por algún dispositivo que genere una red local o por medio de un access point.
Cuando el ESP a esta conectado a la red local lo que hace es obtener una dirección IP y con está podemos configurar un punto de entrada donde se da acceso a los servicios que ofrecer el dispocitivo y cualquier cliente que tenga acceso a la IP podra accesar a dichos servicios.
Ahora como hemos mencionado anteriormente cuando hicimos la explicación de la arquitectura cliente-servidor, el servidor cuenta con una serie de protocolos los cuales permiten realizar dicha comunicación, el ESP tiene la capacidad de poseer estos protocolos para poder crear los puntos de acceso, poder procesar la petición de entrada y salida de un cliente.