Introducción
HTTP significa protocolo de transferencia de hipertexto. Es un protocolo que permite la comunicación entre diferentes sistemas. Lo más habitual es que se utilice para transferir datos desde un servidor web a un navegador para ver páginas web.
En este post, aprenderás a crear un endpoint HTTP para utilizarlo con el cliente HTTP y el servidor HTTP, y con el PLC basado en Raspberry Pi.
Enlaces relacionados
Requisitos
- Industrial Raspberry Pi PLC controller >>>
- Fuente de alimentación >>>
- Cable Ethernet o monitor y teclado externos para acceder al PLC de código abierto Raspberry Pi.
HTTP
Según MDN, HTTP es un protocolo que permite obtener recursos, como documentos HTML. Es la base de cualquier intercambio de datos en la Web y es un protocolo cliente-servidor, lo que significa que las solicitudes son iniciadas por el destinatario, normalmente el navegador web. Un documento completo se reconstruye a partir de los diferentes subdocumentos obtenidos, por ejemplo, el texto, la descripción del diseño, las imágenes, los vídeos, los scripts, etc.
Los clientes y los servidores se comunican mediante el intercambio de mensajes individuales (en lugar de un flujo de datos). Los mensajes enviados por el cliente, normalmente un navegador web, se denominan peticiones, y los mensajes enviados por el servidor en respuesta se denominan respuestas.
Inicio
Si es la primera vez que desarrollas una aplicación con Node-RED, echa un vistazo a la página web de Node-RED para aprender a crear tu primer flujo. >>>
Problema
Lo que quieres hacer es crear un endpoint HTTP que responda a las peticiones GET con algún contenido estático, como una página HTML o una hoja de estilos CSS.
Solución
Para ello, utilizarás el nodo HTTP In para escuchar las peticiones, un nodo Template para incluir el contenido estático, y un nodo HTTP Response para responder a la petición.
HTTP Nodos
Como vas a crear un ejemplo muy básico, solo añadirástres nodos:
1. El primero, un nodo HTTP IN para crear un endpoint HTTP. Establece un método GET a tu URL personalizada. En este caso: /test.
2. El segundo será un nodo de plantilla de función para establecer la propiedad: msg.payload basado en la plantilla proporcionada, donde escribirás tus entidades HTML.
<html>
<head></head>
<body>
<h1>YOUR-MESSAGE-HERE</h1>
</body>
</html>
3. El tercero será el nodo HTTP Response para enviar respuestas a las peticiones recibidas del nodo HTTP Input.
Así es como se verá este flujo:
[{"id":"f2c95db5.ba59a","type":"tab","label":"Flow 1","disabled":false,"info":"Examples of how to scan for devices"},{"id":"59ff2a1.fa600d4","type":"http in","z":"f2c95db5.ba59a","name":"","url":"/test","method":"get","upload":false,"swaggerDoc":"","x":340,"y":100,"wires":[["54c1e70d.ab3e18"]]},{"id":"54c1e70d.ab3e18","type":"template","z":"f2c95db5.ba59a","name":"page","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<html>\n <head></head>\n <body>\n <h1>Hi everyone from Industrial Shields!</h1>\n </body>\n</html>","x":550,"y":100,"wires":[["266c286f.d993d8"]]},{"id":"266c286f.d993d8","type":"http response","z":"f2c95db5.ba59a","name":"","statusCode":"","headers":{},"x":770,"y":100,"wires":[]}]
Finalmente, despliega el flujo, y añade la misma URL que establecistes en el primer nodo justo después del localhost:1880. En tu caso, /test. Por lo tanto, ve a:
localhost:1880/testy comprueba el mensaje HTTP que acabas de recibir!
Recetas HTTP
¿Quieres saber más? Echa un vistazo a: Recetas HTTP >>> de Node-RED y aprende a servir contenido JSON, publicar datos sin procesar en un flujo u obtener una respuesta JSON analizada, entre otras cosas.
Tutorial de Node-RED: Cómo utilizar los nodos HTTP con el PLC industrial Raspberry