Atenuador de luz DONOFF iot
Colocado enel firmware
Que necesitasPara compilar y transferir el firmware DONOFF a un ESP-01 necesitará:
- El IDE Arduino
- La extensión del núcleo ESP8266 (2.4.2 o 2.5.0)
- Se instaló la 'Herramienta de carga de bocetos ESP8266'
- El parche PUYA (para el núcleo ESP8266 versión 2.4.2)
Muchas placas ESP-01 que puedes comprar ahora tienen un chip flash que causa problemas para leer el contenido de la memoria flash (tienen un chip Flash de la marca PUYA). Para solucionar los problemas, hay un parche temporal para la versión 2.4.2 (mira aquí) disponible (probablemente este parche esté incluido en la versión 2.5.0 de la extensión ESP8266). Para la versión 2.4.2 (y anteriores), es imperativo que aplique este parche en la cadena de herramientas.
WebSockets: una breve introducción
La red mundial se creó con la idea de que un cliente (un navegador, por ejemplo) realiza una solicitud a un servidor y que el servidor cumple con esta solicitud enviando una página web (modelo de solicitud-respuesta). La desventaja de este método es que el servidor solo puede enviar algo a un cliente si el cliente lo solicita específicamente. Pero, ¿qué pasa si un servidor tiene nueva información que quiere enviar al cliente? Para hacer frente a este problema, se han desarrollado varias estrategias que permiten que el servidor "envíe" datos al cliente. Una de las estrategias más populares (fuera de AJAX) fue la votación larga. El servidor y el cliente mantienen abierta la conexión HTTP hasta que el servidor tenga datos para enviar al cliente.El problema con todas estas soluciones es que involucran la sobrecarga del protocolo HTTP. Cada 'solicitud HTTP' envía una montaña de encabezados y cookies al servidor. Y eso se convierte rápidamente en una gran montaña de datos que deben enviarse por la línea, lo que a su vez provoca retrasos (latencia). Si desea construir algo como un sistema en tiempo REAL basado en un navegador, desea el menor 'retraso' posible para que todo funcione sin problemas.
¡Lo que necesita www es una conexión 'persistente' y de 'baja demora' que admita transacciones iniciadas por el cliente y/o el servidor! Y eso es exactamente lo que ofrece WebSockets y el firmware DONOFF hace un uso extensivo de esta funcionalidad.
¿Cómo funcionan los WebSockets?
WebSockets mantiene una conexión entre el cliente y el servidor que ambas partes pueden utilizar para enviarse mensajes en cualquier momento.El cliente establece la conexión WebSocket a través de un proceso conocido como 'apretón de manos WebSocket'. El proceso comienza cuando el cliente envía una solicitud HTTP normal al servidor. Esta solicitud contiene el llamado 'Encabezado de actualización' a través del cual el servidor sabe que el cliente desea establecer una conexión WebSocket.
Si el servidor admite el protocolo WebSocket, acepta la actualización y la confirma al cliente devolviendo un encabezado de actualización.
Ahora que se acordó el protocolo de enlace, la conexión HTTP utilizada hasta entonces se reemplaza por una conexión WebSocket sobre la misma conexión TCP/IP subyacente. A partir de ahora, ambas partes (cliente y servidor) pueden enviarse datos entre sí. Los datos se envían a través de WebSocket como un mensaje a través de uno o más paquetes que contienen los datos enviados (la carga útil).
Cómo funciona el firmware DONOFF
Antes de profundizar en el funcionamiento del firmware DONOFF, primero explico algunos conceptos. ¿Qué quiero decir con:- Maestro: este es el DONOFF que tiene control sobre su propio dispositivo local y sobre todos los DONOFF esclavos
- Esclavo: este es un DONOFF que controla solo su propio dispositivo local
- Servidor: este es el servidor web en un DONOFF (ya sea un Maestro o un Esclavo)
- Cliente: este es el navegador que se conecta a un servidor web DONOFF. Es la interfaz entre el hardware y el usuario.
- dispositivo local: este es el dispositivo físico al que sirve cada DONOFF (maestro o esclavo)
Después de conectar un DONOFF a la red eléctrica, se iniciará un servidor web. Si el servidor web tiene una URL como:
“http://nombre de host.local/”
del cliente, el servidor enviará la página index.html al cliente.
Este archivo index.html contiene, además del código html, también código Javascript. El código Javascript garantiza que se establezca una conexión WebSocket con el servidor web.
Una vez establecida esta conexión, el cliente envía el mensaje "getDevInfo" al servidor al que responde con un mensaje que contiene el nombre de host de este DONOFF, qué tipo de DONOFF es (maestro o esclavo) y qué firmware se está ejecutando en el DONOFF.
Luego, el cliente envía un mensaje solicitando la versión más reciente del DOM ("updateDOM"). El servidor ahora crea un DOM que contiene su dispositivo local (si es un maestro, de todos los demás DONOFFS que conoce) y lo envía de regreso al cliente.
A partir de aquí, toda la comunicación entre el cliente y el servidor se basa en eventos. Si el usuario mueve un control deslizante en la pantalla, el cliente lo notará y enviará un nuevo valor del control deslizante al servidor que, a su vez, ajustará la intensidad de su dispositivo local. Cuando el usuario hace clic en el botón Activar/Desactivar, el cliente enviará el nuevo estado al servidor, que luego tomará las medidas necesarias para cumplir con la solicitud del usuario.
Sin embargo, hay algo más que se activa cuando cambia el estado de un dispositivo:
- Si el DONOFF es un esclavo, enviará una solicitud HTTP al maestro DONOFF con el nuevo estado de su dispositivo local. El Maestro procesará esta información y el servidor (Maestro) enviará este nuevo estado a su cliente. Entonces, si mueve el control deslizante en el Esclavo, la nueva posición del control deslizante también será visible en el cliente conectado al Maestro.
- Si el DONOFF es un maestro y no es un cambio de su dispositivo local, entonces el maestro enviará una solicitud HTTP al esclavo DONOFF con el nuevo estado del dispositivo esclavo, que a su vez cambiará su dispositivo local. y el servidor (Esclavo) enviará el nuevo estado a su cliente, que luego actualizará el navegador. En resumen, cada cambio en el cliente Maestro también será visible en el cliente Esclavo.
Si el Maestro recibe una solicitud HTTP de un Esclavo que aún no conoce, incluirá los nuevos datos del Esclavo en su lista de dispositivos y creará un nuevo DOM. Luego enviará un DOM actualizado (con el nuevo dispositivo) a su cliente. El nuevo dispositivo será entonces visible en el navegador.
Esta información se envía en una solicitud HTTP:
Dirección IP // identificación única de esta etiqueta DONOFF // como se muestra en la pantalla Tipo // ¿es esto un D)immer o un S)switch minState // cuál es el valor PWM más bajo que se puede configurar maxState // cuál es el más alto Valor de PWM que se puede establecer Estado // cuál es el valor actual de PWM OnOff // ¿la lámpara está encendida o apagada? // ¿Cuándo se vio por última vez este DONOFF?
Periódicamente, cada Esclavo envía una solicitud HTTP al Maestro para informarle que todavía está en línea. Cada vez que el Maestro recibe una solicitud HTTP, restablecerá el latido del corazón del Esclavo. Si el valor del latido del corazón excede un cierto límite, el Maestro concluirá que el Esclavo ya no está en línea y eliminará los datos de este Esclavo de su lista de dispositivos, creará un nuevo DOM y lo enviará a su cliente.
Sistema de nombres de dominio de multidifusión
El firmware DONOFF hace un uso extensivo de la funcionalidad del Sistema de nombres de dominio de multidifusión (mDNS). En redes informáticas pequeñas (locales), el protocolo mDNS traduce los nombres de host en direcciones IP. Es un llamado servicio de configuración cero. Gracias a este protocolo, es posible acceder a un servidor u otro dispositivo utilizando su nombre mDNS (nombre de host) en lugar de su dirección IP. En otras palabras, si escribe "DONOFF.local" como URL en su navegador, mDNS buscará la dirección IP del dispositivo DONOFF y presentará la página web del DONOFF Master (o Slave).El firmware DONOFF en el Esclavo usa esto para encontrar la dirección IP del Maestro DONOFF y realizar un seguimiento de los cambios en la dirección IP. DONOFF no utiliza direcciones IP fijas, por lo que, de vez en cuando, la dirección IP del DONOFF Master puede cambiar. Aunque mDNS "funciona" en la mayoría de las redes, hay algunos enrutadores WiFi (más antiguos) y extensores WiFi que bloquean los paquetes mDNS. Si no puede acceder a DONOFF por su nombre de host (