Además de los datos interesantes que genera un SmartHome, también debes prestar un poco de atención al estado del corazón del SmartHome. Si ha instalado su instalación de NodeRed en una Raspberry Pi (u otro sistema Linux), puede utilizar el siguiente ejemplo para mostrar parte de la información más importante sobre la Raspberry Pi en el tablero.
Lo que tienes que hacer se explica en el siguiente artículo.
Instrucciones de seguridad
Sé que las siguientes notas siempre son un poco molestas y parecen innecesarias. Desafortunadamente, muchas personas que sabían "mejor" han perdido ojos, dedos u otras cosas debido a un descuido o se lesionaron. La pérdida de datos es casi insignificante en comparación, pero incluso estos pueden ser realmente molestos. Por lo tanto, tómese cinco minutos para leer las instrucciones de seguridad. Porque incluso el proyecto más genial no vale la pena lesionarse u otros problemas.
https://www.nerdiy.de/sicherheitshinweise/
Enlaces afiliados / enlaces publicitarios
Los enlaces a las tiendas en línea enumerados aquí son los llamados enlaces de afiliados. Si hace clic en dicho enlace de afiliado y realiza una compra a través de este enlace, Nerdiy.de recibirá una comisión de la tienda en línea o el proveedor correspondiente. El precio no cambia para usted. Si realiza sus compras a través de estos enlaces, ayuda a Nerdiy.de a poder ofrecer otros proyectos útiles en el futuro. 🙂
Requisitos
Artículos útiles:
Para que pueda instalar nuevos nodos, por supuesto, NodeRed ya debería estar instalado.
En los siguientes artículos se describe cómo preparar una RaspberryPi y luego instalar NodeRed en ella.
Los siguientes tres artículos describen lo que se debe hacer para preparar la RaspberryPi:
RaspberryPi: ¡configuración para nerdiys!
RaspberryPi – ¡La primera configuración!
RaspberryPi: controle el RaspberryPi a través de SSH
NodeRed: instalación de NodeRed en RaspberryPi
NodeRed – Instalar nuevos nodos
NodeRed: cree una interfaz de usuario con nodos de tablero
Material requerido:
-No-
Material requerido:
En la siguiente lista encontrará todas las piezas que necesita para implementar este artículo.
Inicie sesión en la interfaz de configuración de NodeRed
Antes de que pueda editar su configuración de NodeRed, debe, si está activado, primero iniciar sesión en la interfaz de configuración de NodeRed.
código de nodo
Además del nodo del panel de control, para esta pantalla solo se utilizan nodos estándar y los comandos de Linux correspondientes. Simplemente agregue el siguiente código de nodo y luego no olvide colocar los elementos del tablero correctamente en su tablero.
También puede encontrar información al respecto en el artículo NodeRed: cree una interfaz de usuario con nodos de tablero.
Código de nodo:
[{ "id": "fbbafb8d.8c3818", "type": "exec", "z": "ae220e4a.3c49d", "command": "vcgencmd medida_temp", "addpay": false, "append": " ", "useSpawn": "", "timer": "", "oldrc": false, "name": "Temperatura RPi", "x": 440, "y": 200, "wires": [ [" 17fa85a3.c0a5fa"], [], [] ] }, { "id": "610a759f.da34ec", "type": "inject", "z": "ae220e4a.3c49d", "name": "update 10sec ", "topic": "", "payload": "", "payloadType": "fecha", "repeat": "10", "crontab": "", "once": false, "onceDelay": " ", "x": 200, "y": 200, "cables": [ ["fbbafb8d.8c3818", "6b5302eb.fe0fbc", "f8494c08.39fe8"] ] }, { "id": "17fa85a3.c0a5fa ", "tipo": "función", "z": "ae220e4a.3c49d", "nombre": "cutString", "func": "str = msg.payload\r\nmsg.payload = str.substring(5 ,9);\r\nreturn msg;", "outputs": 1, "noerr": 0, "x": 660, "y": 200, "wires": [ ["e8f154dc.299398", "71f38a1c .ca6f64"] ] }, { "id": "4070b9bd.5796b8", "type": "exec", "z": "ae220e4a.3c49d", "command": "sudo reboot", "addpay": false , "append": "", "useSpawn": "", "timer": "", "oldrc": false, "name": "Reiniciar", "x": 430, "y": 540, "cables ": [ [], [], [] ] }, { "id": "77a93271.11eabc", "type": "exec", "z": "ae220e4a.3c49d", "command": "sudo Shutdown -h ahora", "addpay": false, "append": "", "useSpawn": "", "timer": "", "oldrc": false, "name": "Apagar", "x": 440, "y": 620, "cables": [ [], [], [] ] }, { "id": "6b5302eb.fe0fbc", "type": "exec", "z": "ae220e4a. 3c49d", "comando": "arriba -d 1 -b -n2 | grep ", "s": "|cola -n 1 | awk '{print $2 + $4}'", "addpay": false, "append": "", "useSpawn": "", "timer": "", "oldrc": false, "name": "CPU Último", "x": 420, "y": 280, "cables": [ ["97612f41.a7f6e"], [], [] ] }, { "id": "f8494c08.39fe8", "tipo" : "exec", "z": "ae220e4a.3c49d", "command": "gratis | meme grep | awk '{print 100*(($3+$5)/$2)}'", "addpay": false, "append": "", "useSpawn": "", "timer": "", "oldrc": falso, "nombre": "RAM", "x": 410, "y": 360, "cables": [ ["6ce43c7.2c89bc4"], [], [] ] }, { "id": "7b744c14 .050354", "type": "exec", "z": "ae220e4a.3c49d", "command": "df -h", "addpay": false, "append": "", "useSpawn": " ", "timer": "", "oldrc": false, "name": "Espacio de almacenamiento", "x": 440, "y": 440, "wires": [ ["403e1890.2fbab8"], [ ] , [] ] }, { "id": "403e1890.2fbab8", "type": "function", "z": "ae220e4a.3c49d", "name": "modifyString", "func": "var re = /([0-9]{2})%/\r\nvar idx = msg.payload.search(re);\r\nvar str = msg.payload;\r\nif (idx >=0) { \r\n str = msg.payload.substring(idx, idx + 2);\r\n}\r\nmsg.payload = str;\r\nreturn msg;", "salidas": 1, "noerr " : 0, "x": 670, "y": 440, "cables": [ ["f574e160.da0f1"] ] }, { "id": "da61973.d30f268", "type": "inject", " z": "ae220e4a.3c49d", "nombre": "actualización 1min", "tema": "", "carga útil": "", "tipo de carga útil": "fecha", "repetición": "60", " crontab ": "", "once": false, "onceDelay": "", "x": 200, "y": 440, "wires": [ ["7b744c14.050354"] ] }, { "id" : "37bde909.05a676", "tipo": "ui_button", "z": "ae220e4a.3c49d", "nombre": "", "grupo": "5fe5a9b.a8a6158", "orden": 3, "ancho " : 0, "altura": 0, "passthru": false, "label": "Reiniciar", "color": "", "bgcolor": "", "icon": "", "payload": " ", "payloadType": "str", "topic": "", "x": 230, "y": 540, "wires": [ ["4070b9bd.5796b8"] ] }, { "id": " 12fa2be3.80e824", "tipo": "ui_button", "z": "ae220e4a.3c49d", "nombre": "", "grupo": "5fe5a9b.a8a6158", "orden": 4, "ancho": 0, "altura": 0, "passthru": falso, "etiqueta": "Apagar", "color": "", "bgcolor": "rojo", "icono": "", "carga útil": "" , "payloadType": "str", "topic": "", "x": 240, "y": 620, "wires": [ ["77a93271.11eabc"] ] }, { "id": "e8f154dc .299398", "tipo": "ui_gauge", "z": "ae220e4a.3c49d", "nombre": "", "grupo": "5fe5a9b.a8a6158", "orden": 1, "ancho": 0 , "altura": 0, "gtype": "medidor", "título": "temperatura de la CPU", "etiqueta": "C", "formato": "{{valor}}", "min": 0, "max": "100", "colores": ["#00b500", "#e6e600", "#ca3838"], "seg1": "", "seg2": "", "x": 910, "y": 180, "cables": [] }, { "id": "638024a7.6ca05c", "tipo": "ui_gauge", "z": "ae220e4a.3c49d", "nombre": "", "grupo": "6b432a4a.06ad54", "orden": 1, "ancho": 0, "alto": 0, "gtype": "calibrador", "título": "CPU", "etiqueta": "CPU", "formato ": "{{value}}%", "min": 0, "max": "100", "colores": ["#00b500", "#e6e600", "#ca3838"], "seg1": "", "seg2": "", "x": 870, "y": 300, "wires": [] }, { "id": "d80d6326.88202", "type": "ui_gauge", "z": "ae220e4a.3c49d", "nombre": "", "grupo": "6b432a4a.06ad54", "orden": 1, "ancho": 0, "alto": 0, "gtipo": "calibrador", " title": "Memoria", "label": "RAM", "format": "{{value}}%", "min": 0, "max": "100", "colors": ["#00b500" , "#e6e600", "#ca3838"], "seg1": "", "seg2": "", "x": 880, "y": 360, "wires": [] }, { "id": " f574e160.da0f1", "tipo": "ui_gauge", "z": "ae220e4a.3c49d", "nombre": "", "grupo": "6b432a4a.06ad54", "orden": 1, "ancho": 0, "altura": 0, "gtype": "medidor", "título": "Disco", "etiqueta": "Almacenamiento", "formato": "{{valor}}%", "min": 0 , "max": "100", "colores": ["#00b500", "#e6e600", "#ca3838"], "seg1": "", "seg2": "", "x": 870, "y" : 440, "cables": [] }, { "id": "71f38a1c.ca6f64", "tipo": "ui_chart", "z": "ae220e4a.3c49d", "nombre": "", "grupo" : "5fe5a9b.a8a6158", "order": 2, "width": 0, "height": 0, "label": "Historial de temperatura de la CPU", "chartType": "line", "legend": "false" , "xformat": "HH:mm:ss", "interpolate": "linear", "nodata": "", "dot": false, "ymin": "", "ymax": "", "removeOlder ": "24", "removeOlderPoints": "", "removeOlderUnit": "3600", "cutout": 0, "useOneColor": false, "colors": ["#1f77b4", "#aec7e8", "#ff7f0e", "#2ca02c", "#98df8a", "#d62728", "#ff9896", "#9467bd", "#c5b0d5"], "useOldStyle": true, "x": 930, "y": 240, "wires": [ [] , [] ] }, { "id": "6ce43c7.2c89bc4", "type": "function", "z": "ae220e4a.3c49d", "name": "deleteWhitespace", "func": "var str = msg.payload\r\nstr = str.trim();\r\nvar nr=parseInt(str);\r\nmsg.payload = nr.toFixed(1);\r\nreturn msg;", "salidas ": 1, "noerr": 0, "x": 690, "y": 360, "cables": [ ["d80d6326.88202"] ] }, { "id": "97612f41.a7f6e", "tipo ": "función", "z": "ae220e4a.3c49d", "nombre": "deleteWhitespace", "func": "str = msg.payload\r\nmsg.payload = str.trim();\r\ nreturn msg;", "outputs": 1, "noerr": 0, "x": 690, "y": 280, "wires": [ ["638024a7.6ca05c"] ] }, { "id": " 75f679fd.1125a8", "type": "inject", "z": "ae220e4a.3c49d", "name": "Shutdown", "topic": "", "payload": "", "payloadType": " date", "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "x": 260, "y": 680, "wires": [ ["77a93271. 11eabc"] ] }, { "id": "5fe5a9b.a8a6158", "type": "ui_group", "z": "ae220e4a.3c49d", "name": "2", "tab": "7e8708a2. 0fc408", "order": 2, "disp": false, "width": "6", "collapse": false }, { "id": "6b432a4a.06ad54", "type": "ui_group", " z": "ae220e4a.3c49d", "name": "1", "tab": "7e8708a2.0fc408", "order": 1, "disp": false, "width": "6", "collapse" : false }, { "id": "7e8708a2.0fc408", "type": "ui_tab", "z": "ae220e4a.3c49d", "name": "Raspi data", "icon": "dashboard", "orden": 1 }]
Diviértete con el proyecto.
Espero que todo te haya funcionado como se describe. Si no es así, o si tiene alguna pregunta o sugerencia, hágamelo saber en los comentarios. Si es necesario, lo añadiré al artículo.
Las ideas para nuevos proyectos siempre son bienvenidas. 🙂
PS Muchos de estos proyectos, especialmente los proyectos de hardware, cuestan mucho tiempo y dinero. Por supuesto que hago esto porque lo disfruto, pero si crees que es genial que comparta la información contigo, me encantaría hacer una pequeña donación al fondo del café. 🙂
Hola, muy buen flujo. Soy un principiante con node-red y puedo aprender mucho con él.
Ejecutando la temperatura y el historial de la CPU. Para la RAM del nodo reemplacé “mem” por “memoria” (Raspian alemán :-), también funciona. Pero los comandos de “espacio de almacenamiento” y “CPU” no funcionan y lamentablemente mis conocimientos no son suficientes para realizar un cambio. ¿Podrías adaptar esto para una versión alemana?
Gracias y saludos, Hajo.
hola jajo,
Acabo de probar todo de nuevo. “Desafortunadamente” todo me funciona. ¿Puedes darme más información sobre lo que no te funciona? 🙂
Atentamente
Fabian
13/2/2023, 9:04:19 a. m. nodo: modificarCadena
función: (error)
"TypeError: msg.payload.search no es una función"
???
Hola nerd,
Descargué e instalé el flujo (también soy un principiante).
Funcionó muy bien...
Ahora que he transferido el sistema de la tarjeta SD a un disco duro, ya no se muestran valores en la CPU, la memoria ni el disco...
La temperatura de la CPU funciona.
tal vez tengas ¿un consejo para mí?
Atentamente
jürgen
Hola Juergen,
Sí, lo más probable es que eso se deba a que el disco duro tiene un punto/ruta de montaje diferente al de la tarjeta SD.
¿Puedes enviarme el resultado de “df -h” (simplemente escríbelo en la consola)? Luego puedo decirles cuál es el punto de montaje actual y podemos adaptar el código de NodeRed en consecuencia. 🙂
Atentamente
Fabian
Hola, lamentablemente se ha producido un error en el nodo de carga de la CPU:
El comando correcto en el nodo exec debe tener este aspecto:
top -d 1 -b -n2 | grep "%Cpu" | tail -n 1 | awk '{print $2 + $4}'
Así funcionaba el anuncio