Introducción
En los blogs anteriores:
I. Tutorial sobre InfluxDB, Node-RED y MQTT: Cómo instalar InfluxDB >>>
II. Tutorial sobre InfluxDB, Node-RED y MQTT: Envío de datos a InfluxDB >>>
Hemos aprendido a instalar InfluxDB, y a enviar cualquier número desde un nodo de inyección a la base de datos de Influx que hemos creado. ¡En este blog, aprenderemos cómo obtener datos de MQTT, y enviarlos a la base de datos!
Enlaces relacionados
Conexiones
En primer lugar, tenemos que asegurarnos de las conexiones. Ahora mismo tenemos nuestro portátil conectado a través de Ethernet y SSH al PLC industrial Raspberry, y tenemos un monitor extra para trabajar mejor con la información del PLC basado en Raspberry Pi.
Publicar un mensaje MQTT desde el PC
Lo que vamos a hacer ahora, es publicar un mensaje MQTT desde nuestro PC. Y nos suscribiremos a él desde el PLC industrial Raspberry Pi.
1. Lo primero que vamos a hacer es abrir Node-RED desde tu PC:
localhost:1880
Importa nuestro flujo para compararlo con el suyo yendo a: Menú > Importar > Pegar este JSON > Hacer clic en Importar
[{"id":"f04655a6.2e0548","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"18eca158.c30bef","type":"ui_spacer","name":"spacer","group":"","order":3,"width":3,"height":1},{"id":"66b1ac62.f204c4","type":"ui_spacer","name":"spacer","group":"","order":5,"width":2,"height":1},{"id":"57e7a054.1d3d","type":"ui_spacer","name":"spacer","group":"","order":6,"width":1,"height":1},{"id":"3d2f0a19.b50e16","type":"ui_spacer","name":"spacer","group":"","order":7,"width":3,"height":1},{"id":"2818fa86.78b246","type":"ui_spacer","name":"spacer","group":"","order":8,"width":2,"height":1},{"id":"b7071d44.aac77","type":"ui_spacer","name":"spacer","group":"","order":9,"width":14,"height":1},{"id":"76d851d4.191b1","type":"ui_spacer","name":"spacer","group":"","order":10,"width":1,"height":1},{"id":"2b8a21d5.7e913e","type":"ui_spacer","name":"spacer","group":"","order":12,"width":1,"height":1},{"id":"8ff507a5.bebcf8","type":"ui_spacer","name":"spacer","group":"","order":13,"width":1,"height":1},{"id":"4e0db42.3a7d74c","type":"ui_spacer","name":"spacer","group":"","order":14,"width":1,"height":1},{"id":"6ef46fcc.54f8d","type":"ui_spacer","name":"spacer","group":"","order":15,"width":14,"height":1},{"id":"ff69b32a.fafbb","type":"ui_spacer","name":"spacer","group":"","order":16,"width":1,"height":1},{"id":"a4c5a26b.0ba75","type":"ui_spacer","name":"spacer","group":"","order":18,"width":1,"height":1},{"id":"aba323e0.729b9","type":"ui_spacer","name":"spacer","group":"","order":19,"width":1,"height":1},{"id":"caa68f8b.b56ca","type":"ui_spacer","name":"spacer","group":"","order":20,"width":1,"height":1},{"id":"a9e2309bbb6821ba","type":"ui_spacer","name":"spacer","group":"","order":2,"width":1,"height":1},{"id":"21ea384a01fa887e","type":"ui_spacer","name":"spacer","group":"","order":3,"width":1,"height":1},{"id":"d5d81a9f0d428697","type":"ui_spacer","name":"spacer","group":"","order":4,"width":1,"height":1},{"id":"da4a771ac31dcf3d","type":"ui_spacer","name":"spacer","group":"","order":5,"width":1,"height":1},{"id":"fe4d904b8bb40878","type":"ui_spacer","name":"spacer","group":"","order":6,"width":1,"height":1},{"id":"6b3d8da4e9a96852","type":"ui_spacer","name":"spacer","group":"","order":7,"width":1,"height":1},{"id":"74821225a7ca51ca","type":"ui_spacer","name":"spacer","group":"","order":8,"width":1,"height":1},{"id":"e91dbd2767a763f6","type":"ui_spacer","name":"spacer","group":"","order":9,"width":1,"height":1},{"id":"93d3502802dcc1a4","type":"ui_spacer","name":"spacer","group":"","order":7,"width":2,"height":1},{"id":"9fc8c3278ee9b9c1","type":"ui_spacer","name":"spacer","group":"","order":10,"width":1,"height":1},{"id":"f774fbfaae54eb0e","type":"ui_spacer","name":"spacer","group":"","order":12,"width":10,"height":1},{"id":"08e6b009b586964d","type":"ui_spacer","name":"spacer","group":"","order":17,"width":1,"height":1},{"id":"b6232aa234a57cb1","type":"ui_spacer","name":"spacer","group":"","order":20,"width":1,"height":1},{"id":"a60378ac9f87fc5e","type":"ui_spacer","name":"spacer","group":"","order":8,"width":1,"height":1},{"id":"260c6340f6f14ad3","type":"ui_spacer","name":"spacer","group":"","order":12,"width":9,"height":1},{"id":"2b980305848cfeef","type":"ui_spacer","name":"spacer","group":"","order":19,"width":1,"height":1},{"id":"22a9f72987124d95","type":"ui_spacer","name":"spacer","group":"","order":5,"width":5,"height":1},{"id":"5e9d977e96083094","type":"ui_spacer","name":"spacer","group":"","order":9,"width":9,"height":1},{"id":"9110a4597689ae8b","type":"ui_spacer","name":"spacer","group":"","order":10,"width":9,"height":1},{"id":"459ab95d2d2a5ddb","type":"ui_spacer","name":"spacer","group":"","order":11,"width":9,"height":1},{"id":"90e1410acc8c38b9","type":"ui_spacer","name":"spacer","group":"","order":16,"width":5,"height":1},{"id":"7ad2d307c987a7df","type":"ui_spacer","name":"spacer","group":"","order":18,"width":2,"height":1},{"id":"e5e9feb0763ec81e","type":"ui_spacer","name":"spacer","group":"","order":20,"width":1,"height":1},{"id":"093ef67678864b13","type":"ui_spacer","name":"spacer","group":"","order":1,"width":6,"height":1},{"id":"b94afa82cf8ecc1f","type":"ui_spacer","name":"spacer","group":"","order":3,"width":6,"height":1},{"id":"faf9e9fde02df27d","type":"ui_spacer","name":"spacer","group":"","order":4,"width":2,"height":1},{"id":"a8cbdcf68248d1b9","type":"ui_spacer","name":"spacer","group":"","order":6,"width":2,"height":1},{"id":"1dfce3d8addd0131","type":"ui_spacer","name":"spacer","group":"","order":7,"width":2,"height":1},{"id":"add5f326020a30a1","type":"ui_spacer","name":"spacer","group":"","order":8,"width":2,"height":1},{"id":"0c6c63f5118690bf","type":"ui_spacer","name":"spacer","group":"","order":9,"width":2,"height":1},{"id":"73f373a14ff151ec","type":"ui_spacer","name":"spacer","group":"","order":11,"width":2,"height":1},{"id":"ce026db7ddc0b2d0","type":"ui_spacer","name":"spacer","group":"","order":13,"width":2,"height":1},{"id":"f8b17415c15a6072","type":"ui_spacer","name":"spacer","group":"","order":15,"width":2,"height":1},{"id":"8f4603f38cd344ad","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":2,"width":1,"height":1},{"id":"562468767aea6755","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":4,"width":2,"height":1},{"id":"6a6113cdfd6d877e","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":6,"width":2,"height":1},{"id":"4d89a801118d61ef","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":7,"width":2,"height":1},{"id":"72e7fd9dec97d5ce","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":8,"width":2,"height":1},{"id":"4a4b3e4669027be4","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":9,"width":2,"height":1},{"id":"79bd20907ddb50c4","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":10,"width":3,"height":1},{"id":"c1fed531493ab6fe","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":12,"width":3,"height":1},{"id":"3e3030c3709fe31c","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":13,"width":3,"height":1},{"id":"bf367c6bb97ffc0a","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":14,"width":3,"height":1},{"id":"79689c89c65ac453","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":15,"width":3,"height":1},{"id":"26078b1caf5a4049","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":17,"width":3,"height":1},{"id":"03d10337489964ad","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":18,"width":3,"height":1},{"id":"a3a820bc7fb53497","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":19,"width":3,"height":1},{"id":"9f9ae7141861e1c8","type":"ui_spacer","name":"spacer","group":"","order":2,"width":1,"height":1},{"id":"d9cb8337360336d6","type":"ui_spacer","name":"spacer","group":"","order":3,"width":1,"height":1},{"id":"a86c41aef3f1182e","type":"ui_spacer","name":"spacer","group":"","order":4,"width":1,"height":1},{"id":"9666ccbf2e136ba9","type":"ui_spacer","name":"spacer","group":"","order":5,"width":1,"height":1},{"id":"d6403fae75f2ce72","type":"ui_spacer","name":"spacer","group":"","order":6,"width":1,"height":1},{"id":"1577da1ad00267c8","type":"ui_spacer","name":"spacer","group":"","order":7,"width":1,"height":1},{"id":"85a6633f734a397f","type":"ui_spacer","name":"spacer","group":"","order":8,"width":1,"height":1},{"id":"6d0451543273b8e9","type":"ui_spacer","name":"spacer","group":"","order":9,"width":1,"height":1},{"id":"a096632e7e8c7fcc","type":"ui_spacer","name":"spacer","group":"","order":7,"width":2,"height":1},{"id":"01c034e071a22d06","type":"ui_spacer","name":"spacer","group":"","order":10,"width":1,"height":1},{"id":"a41773576044e9e2","type":"ui_spacer","name":"spacer","group":"","order":12,"width":10,"height":1},{"id":"38b3ea45b44de95a","type":"ui_spacer","name":"spacer","group":"","order":17,"width":1,"height":1},{"id":"4f7c5bfb900e811b","type":"ui_spacer","name":"spacer","group":"","order":20,"width":1,"height":1},{"id":"2bf13987b7d07c68","type":"ui_spacer","name":"spacer","group":"","order":8,"width":1,"height":1},{"id":"925897d6382cfc1e","type":"ui_spacer","name":"spacer","group":"","order":12,"width":9,"height":1},{"id":"f9dbd340829a20ab","type":"ui_spacer","name":"spacer","group":"","order":19,"width":1,"height":1},{"id":"84efe78acd668123","type":"ui_spacer","name":"spacer","group":"","order":5,"width":5,"height":1},{"id":"7403c4408d998eb9","type":"ui_spacer","name":"spacer","group":"","order":9,"width":9,"height":1},{"id":"a72cd60a04683869","type":"ui_spacer","name":"spacer","group":"","order":10,"width":9,"height":1},{"id":"27a841b63ebf78df","type":"ui_spacer","name":"spacer","group":"","order":11,"width":9,"height":1},{"id":"2507a7e17f059640","type":"ui_spacer","name":"spacer","group":"","order":16,"width":5,"height":1},{"id":"dd648ea2b4fc993e","type":"ui_spacer","name":"spacer","group":"","order":18,"width":2,"height":1},{"id":"f6f18b0119a0c7a8","type":"ui_spacer","name":"spacer","group":"","order":20,"width":1,"height":1},{"id":"6f20eee74019c663","type":"ui_spacer","name":"spacer","group":"","order":1,"width":6,"height":1},{"id":"7e797c689f839bd5","type":"ui_spacer","name":"spacer","group":"","order":3,"width":6,"height":1},{"id":"159875d396fd2e1d","type":"ui_spacer","name":"spacer","group":"","order":4,"width":2,"height":1},{"id":"09f15455e01dc3bd","type":"ui_spacer","name":"spacer","group":"","order":6,"width":2,"height":1},{"id":"00b530d543c6533d","type":"ui_spacer","name":"spacer","group":"","order":7,"width":2,"height":1},{"id":"9b68b46d65334e55","type":"ui_spacer","name":"spacer","group":"","order":8,"width":2,"height":1},{"id":"2b103ab7680be12c","type":"ui_spacer","name":"spacer","group":"","order":9,"width":2,"height":1},{"id":"a45e230894b860f4","type":"ui_spacer","name":"spacer","group":"","order":11,"width":2,"height":1},{"id":"d96da445e3f00f3b","type":"ui_spacer","name":"spacer","group":"","order":13,"width":2,"height":1},{"id":"8c8b1dc3d2ecd22e","type":"ui_spacer","name":"spacer","group":"","order":15,"width":2,"height":1},{"id":"ad65b0982b9515d2","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":2,"width":1,"height":1},{"id":"8572d6bead68d3fd","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":4,"width":2,"height":1},{"id":"7535d92b622832e2","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":6,"width":2,"height":1},{"id":"acc331cf74b68edf","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":7,"width":2,"height":1},{"id":"d8a017de905c275c","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":8,"width":2,"height":1},{"id":"30e75722341fe68d","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":9,"width":2,"height":1},{"id":"b1a10de362b4fc16","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":10,"width":3,"height":1},{"id":"6edfbbcaa60fa199","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":12,"width":3,"height":1},{"id":"15600e26f2233629","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":13,"width":3,"height":1},{"id":"90ddb4d963776480","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":14,"width":3,"height":1},{"id":"43c7e25f67aadcb1","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":15,"width":3,"height":1},{"id":"dd2ed8c042a0b788","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":17,"width":3,"height":1},{"id":"d3b14202340ff557","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":18,"width":3,"height":1},{"id":"da0c9031a45eeb31","type":"ui_spacer","name":"spacer","group":"78426f95.8f95a","order":19,"width":3,"height":1},{"id":"a4e70dca39a11812","type":"ui_tab","name":"Home","icon":"dashboard","disabled":false,"hidden":false},{"id":"6902ce18c912334f","type":"ui_base","theme":{"name":"theme-light","lightTheme":{"default":"#0094CE","baseColor":"#0094CE","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif","edited":true,"reset":false},"darkTheme":{"default":"#097479","baseColor":"#097479","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif","edited":false},"customTheme":{"name":"Untitled Theme 1","default":"#4B7930","baseColor":"#4B7930","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"},"themeState":{"base-color":{"default":"#0094CE","value":"#0094CE","edited":false},"page-titlebar-backgroundColor":{"value":"#0094CE","edited":false},"page-backgroundColor":{"value":"#fafafa","edited":false},"page-sidebar-backgroundColor":{"value":"#ffffff","edited":false},"group-textColor":{"value":"#1bbfff","edited":false},"group-borderColor":{"value":"#ffffff","edited":false},"group-backgroundColor":{"value":"#ffffff","edited":false},"widget-textColor":{"value":"#111111","edited":false},"widget-backgroundColor":{"value":"#0094ce","edited":false},"widget-borderColor":{"value":"#ffffff","edited":false},"base-font":{"value":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"}},"angularTheme":{"primary":"indigo","accents":"blue","warn":"red","background":"grey","palette":"light"}},"site":{"name":"Node-RED Dashboard","hideToolbar":"false","allowSwipe":"false","lockMenu":"false","allowTempTheme":"true","dateFormat":"DD/MM/YYYY","sizes":{"sx":48,"sy":48,"gx":6,"gy":6,"cx":6,"cy":6,"px":0,"py":0}}},{"id":"0a51eb25daf41663","type":"mqtt-broker","name":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"sessionExpiry":""},{"id":"5b73900a1aadda9c","type":"mqtt out","z":"f04655a6.2e0548","name":"","topic":"/industrial/shields","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"0a51eb25daf41663","x":470,"y":100,"wires":[]},{"id":"36cdcf455932b604","type":"inject","z":"f04655a6.2e0548","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"2","payloadType":"num","x":180,"y":100,"wires":[["5b73900a1aadda9c"]]}]
Suscribirse al mensaje MQTT desde el controlador PLC Raspberry Pi
Como queremos suscribirnos al tema MQTT /industrial/shields desde el PLC industrial Raspberry Pi, vamos a abrir una nueva pestaña en nuestro navegador y escribimos:
10.10.10.20:1880
Ahora, sigue estos pasos para suscribirse al tema MQTT y enviar la información a la base de datos de Influx:
1. Añade un nodo MQTT IN, configura el servidor con la dirección IP de tu PC, en nuestro caso 10.10.10.60, y el puerto MQTT por defecto: 1883. Deja el resto de los parámetros por defecto. Actualiza. Y suscríbete al topic: /industrial/shields
2. Si añadimos un nodo de depuración justo después del nodo MQTT, te darás cuenta de que el mensaje que recibe es una cadena, no un número. Así que ahora, vamos a parsearlo a un número añadiendo un change node y estableciendo el msg.payload a una expresión: $number(payload)
3. Cablea un debug node después del change node, haz clic en el inject node en el flujo de nuestro portátil para publicar el mensaje MQTT. Y comprueba que ahora recibes la información como un número, no como una cadena.
4. Conecta esto al nodo de salida influxdb que ya hemos configurado y envía la información directamente a la base de datos.
5. Por último, vuelve a la ventana del terminal y comprueba que tienes la información en la base de datos.
Tu flujo debe ser algo así como la imagen de abajo.
Ahora, ¡es tu momento! ¡Importa el flujo y empieza a jugar con Node-RED!
[{"id":"b716fdc48724e610","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"d50d0c9f.31e858","type":"tls-config","name":"","cert":"","key":"","ca":"","certname":"","keyname":"","caname":"","servername":"","verifyservercert":false},{"id":"bc4ab5cb2a050021","type":"influxdb","hostname":"127.0.0.1","port":"8086","protocol":"http","database":"test","name":"test","usetls":true,"tls":"d50d0c9f.31e858","influxdbVersion":"2.0","url":"http://localhost:8086","rejectUnauthorized":false},{"id":"562ec1085cc9dbf1","type":"mqtt-broker","name":"","broker":"10.10.10.60","port":"1883","clientid":"","usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"sessionExpiry":""},{"id":"0e17644c4b3628b4","type":"influxdb out","z":"b716fdc48724e610","influxdb":"bc4ab5cb2a050021","name":"","measurement":"test","precision":"","retentionPolicy":"","database":"","retentionPolicyV18Flux":"","org":"Industrial Shields","bucket":"test","x":680,"y":80,"wires":[]},{"id":"0c42600975da386c","type":"debug","z":"b716fdc48724e610","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":670,"y":120,"wires":[]},{"id":"65e33f58d20fee33","type":"mqtt in","z":"b716fdc48724e610","name":"","topic":"/industrial/shields","qos":"2","datatype":"auto","broker":"562ec1085cc9dbf1","nl":false,"rap":true,"rh":0,"x":160,"y":80,"wires":[["69f73915a01982c3","1ba5715c13107a23"]]},{"id":"69f73915a01982c3","type":"change","z":"b716fdc48724e610","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload)\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":80,"wires":[["0e17644c4b3628b4","0c42600975da386c"]]},{"id":"1ba5715c13107a23","type":"debug","z":"b716fdc48724e610","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":390,"y":120,"wires":[]}]
III. Tutorial de InfluxDB, Node-RED y MQTT: Obtención de datos desde MQTT