HowTo: Nodo Rojo - Leer el estado de UPS

Uno de los puntos débiles de un sistema SmartHome del que sólo te das cuenta cuando algo va mal es la “energía”. Desafortunadamente, todos los sensores, actuadores y la inteligencia controladora detrás de ellos no funcionan con aire y amor. E incluso si la energía utilizada por el sistema no es muy elevada y los ahorros son generalmente superiores a la energía “utilizada”, el suministro de energía sigue siendo esencial. En otras palabras: sin electricidad -> sin SmartHome.

Pero compartir eso es un problema de lujo con el que se podría vivir. Lo que me parece mucho peor es la idea de que mi Raspberry Pi o cualquier computadora en general pueda ahogarse tanto por un corte repentino de energía que es posible que ya no arranque después.
Si su sistema SmartHome (RaspberryPi, BeagleBone, PC con Windows, etc.) se interrumpe en el mismo momento en que está escribiendo datos importantes (del sistema), es posible que ya no se inicie correctamente después de que se restablezca el suministro de energía. En casos extremos, esto provoca una dolorosa pérdida de datos y, a menudo, mucho tiempo. En casos extremos, no tiene una copia de seguridad del sistema y luego tiene que reinstalar y configurar todo el sistema, incluidos todos los componentes del sistema.

Pero, de hecho, otras personas también parecen haberse topado con este problema. Para este caso se inventaron los sistemas de alimentación ininterrumpida (UPS). Estos dispositivos se conectan entre el enchufe y el consumidor (en este caso su Raspberry Pi, etc.) y a partir de ahí controlan continuamente la calidad de la tensión de red. Esto significa que se controla continuamente si la tensión alterna entrante y la frecuencia se encuentran dentro del rango permitido. Si se produce una subtensión o una sobretensión, o si hay algún otro problema con la tensión de alimentación, el UPS desconecta la entrada de tensión en milisegundos y la conmuta a una batería de respaldo interna. Este se encarga entonces del suministro de los consumidores conectados hasta que se agota la batería tampón.

Los UPS ahora vienen en todo tipo de formas. Los más pequeños parecen enchufes múltiples algo torpes. Otros –o sus baterías– pueden llenar una habitación entera.

Para el usuario normal de SmartHome, las versiones más pequeñas son ciertamente suficientes. Como por ejemplo …

En este artículo se explica cómo integrar en última instancia su propio UPS en NodeRed y reaccionar ante los cambios.


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 controlar/configurar su UPS a través de su RaspberryPi y NodeRed, por supuesto debe estar preparado para que NodeRed se ejecute en él y pueda acceder a él a través de SSH.

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 - código de nodo de importación y exportación
NodeRed: envía mensajes Pushbullet sobre eventos
NodeRed: cree una interfaz de usuario con nodos de tablero

Material requerido:

En la siguiente lista encontrará todas las piezas que necesita para implementar este artículo.


Lectura de un SAI conectado a la RaspberryPi

La desventaja de una fuente de alimentación ininterrumpida es que la Raspberry Pi no nota nada en cuanto hay algún problema con la fuente de alimentación. En realidad, eso es lo que quieres. Por otro lado, la RaspberryPi no puede reaccionar a este cambio.

Porque aunque la batería de un UPS es bastante grande en comparación con el consumo de una Raspberry Pi, la capacidad de la batería es finita. Por eso, la RaspberryPi debería, por ejemplo, apagarse automáticamente antes de que la batería se agote por completo. Esto minimiza el riesgo de pérdida de datos y permite una respuesta controlada al corte de energía.

Para que el RasperryPi sea informado sobre los cambios del UPS, debe estar conectado al RasperryPi mediante una conexión USB o serie.

Existe el programa “Apcupsd” para Raspberry Pi, que te permite leer el estado de tu UPS. Luego también puedes usar este estado para reaccionar a través de NodeRed.

Por ejemplo, sería posible apagar ciertos componentes o apagar otras Raspberry Pis, siempre que no hayan fallado debido al corte de energía.

Sin embargo, antes de que pueda leer el estado de su UPS en NodeRed, primero debe instalar "apcupsd".


Inicie sesión en RaspberryPi a través de SSH

Para comenzar, primero debe iniciar sesión en Rasp Pi con Putty a través de SSH. Cómo hacer esto está en el artículo. RaspberryPi - Controle el RaspberryPi a través de SSH descrito.

Después de ingresar su nombre de usuario y contraseña, puede ingresar los primeros comandos.

Gestión de paquetes de actualización

La gestión de paquetes en Linux es un "lugar central" a través del cual se pueden instalar varios paquetes de software. Para que esto funcione de manera confiable, las listas y fuentes de administración de paquetes deben actualizarse antes de cada instalación de nuevos paquetes.

Para iniciar la actualización de la gestión de paquetes, debe ingresar el siguiente comando.
sudo apt-obtener actualización && sudo apt-obtener actualización
Dependiendo de cuánto tiempo hace que fue la última actualización de la administración de paquetes, este proceso ahora puede demorar un tiempo. Las listas que hacen referencia a las fuentes de paquetes individuales se actualizan primero.
Después de eso, los paquetes en sí se actualizan. Dado que la memoria adicional está ocupada, se le pedirá nuevamente su consentimiento. Tienes que confirmar esto con una "J" y "Enter".
Una vez que se complete la actualización, verá un pequeño resumen de la duración y el alcance de la actualización.

Instale "apcupsd" en la Raspberry Pi

Para que su RaspberryPi se comunique con el UPS conectado, primero debe instalar algunos paquetes.

Un programa que puede comunicarse directamente con tu UPS conectado vía USB es el programa “apcupsd”, que instalas con el siguiente comando.
sudo apt-get install apcupsd
Si solicita que el programa utilice memoria adicional, confirme con “Y”.
La instalación tarda unos dos minutos.

Configurar Appupsd

Antes de poder utilizar “apcupsd”, por supuesto, primero debe configurarse. Para hacer esto, es necesario editar algunos archivos de configuración.

Abre el primer archivo de configuración con el siguiente comando.
sudo nano /etc/apcupsd/apcupsd.conf
En el archivo de configuración abierto primero debes usar las teclas de flecha…
…navegue hasta la línea que se muestra. Esto determina con qué tipo de cable está conectado el UPS a su Raspberry Pi. Lo más probable es que su UPS esté conectado a su Raspberry Pi a través del puerto USB. Es por eso que también configuras aquí "UPSCABLE usb".
USB UPSCABLE
Como ha conectado un cable USB, por supuesto también debe configurar UPSTYPE en USB.
tipo ups usb
Para que la conexión al SAI funcione vía USB ahora hay que editar el parámetro “DEVICE”. No se le puede asignar ningún valor. Para hacer esto, elimine la parte que se muestra "/dev/ttsyS0" junto a "DISPOSITIVO".
Esto debería verse así.
Ahora puede realizar algunas configuraciones sobre cómo debe comportarse appupsd en caso de un corte de energía. Por ejemplo, el parámetro "BATTERYLEVEL" se puede utilizar para configurar la RaspberryPi para que se apague cuando el UPS tenga una carga restante de 5%.
El parámetro “MINUTOS” indica el tiempo de funcionamiento restante en minutos en el que se debe apagar la RaspberryPi.
Con el parámetro “NETSERVER” se puede activar un servidor de red que pone a disposición la información del SAI a través de la red. Esto significa que, en caso de un corte de energía, otros participantes de la red también pueden reaccionar y, por ejemplo, apagarse. Para activar el servidor de red debe configurar el parámetro en “NETSERVER on”.
Puede utilizar el parámetro "NISIP" para establecer qué dirección IP "escucha" el servidor. Esto sólo es necesario si tiene más de una interfaz de red en el sistema en cuestión. Por ejemplo, en una Raspberry Pi puede configurarlo para que el servidor solo responda las consultas que recibe a través de la interfaz WLAN y no a través de la interfaz LAN. Sin embargo, en la mayoría de los casos, puede configurar este parámetro en "NISIP 0.0.0.0". Esto significa que todas las solicitudes serán respondidas, independientemente de la interfaz de red.
El parámetro “NISPORT” especifica el puerto bajo el cual se puede acceder a la información del servidor. Debes dejar esto sin cambios en el valor "3551".
Luego guarda esta configuración presionando “CTRL-X” y “J”…
...y “Entrar”.
Ahora tienes que decirle a appupsd que existe una configuración. Para hacer esto, abra otro archivo de configuración usando el siguiente comando.
sudo nano /etc/default/apcupsd
Para hacer esto, configure el parámetro “ISCONFIGURED” en…
…"Sí".
Luego puede guardar esta configuración nuevamente presionando “CTRL-X” y “J”…
...y “Entrar”.
Luego, el servicio apcupsd se puede iniciar con el siguiente comando.
sudo /etc/init.d/apcupsd inicio
Si el programa se ha iniciado con éxito, todo debería verse así.
El estado actual del UPS se puede mostrar usando el comando "apcaccess status". Si no se puede establecer una conexión con el UPS, la respuesta es la que se muestra.
estado de acceso apc
Si se establece la conexión con el UPS y se puede leer la información, se mostrará la información mostrada.
Si necesita reiniciar “apcupsd”, simplemente ingrese el siguiente comando.
sudo /etc/init.d/apcupsd reiniciar

Ahora tiene la opción de mostrar la información del UPS en la RaspberryPi. Para utilizar esta información para su SmartHome puede utilizar el siguiente NodeCode.


Importar código de nodo

Con el siguiente NodeCode puede mostrar algunos detalles del estado actual de su UPS. Esto significa que puedes reaccionar individualmente ante determinadas características.

Por ejemplo, sería posible recibir una notificación de un corte de energía mediante un mensaje push o, como en el ejemplo siguiente, mostrar los datos más importantes en el tablero. Para que se puedan enviar mensajes push en caso de un corte de energía, por supuesto debe asegurarse de que toda su infraestructura de red también esté protegida por el UPS. Por supuesto, si el corte de energía afecta a un área muy grande, esto ya no ayuda. Por lo tanto, por supuesto, la comunicación a través de Internet no está garantizada en caso de un corte de energía.

Cómo importar su NodeCode en su configuración de NodeRed está en el artículo NodeRed - código de nodo de importación y exportación descrito. Después de la importación, es posible que también necesite configurar el nodo Pushbullet. Puedes encontrar información sobre esto en el artículo. NodeRed: envía mensajes Pushbullet sobre eventos. Los nodos del tablero se utilizan para mostrar datos de UPS. Puedes encontrar información al respecto en el artículo NodeRed: cree una interfaz de usuario con nodos de tablero.

Vista del indicador de estado del SAI en el salpicadero.
Descripción general de la configuración de NodeCode en la interfaz de configuración de NodeRed.
[{"id":"e2a1a48.9207858","type":"exec","z":"8c9f8f17.13eb78","command":"/sbin/apcaccess","append":"","useSpawn":"","name":"apcaccess","x":390,"y":1740,"wires":[["c5f64040.b7a32","9ef1333b.1cf96"],[],[]]},{"id":"ebe2e46e.660788","type":"inject","z":"8c9f8f17.13eb78","name":"status request","topic":"","payload":"","payloadType":"str","repeat":"","crontab":"","once":true,"onceDelay":"","x":200,"y":1740,"wires":[["e2a1a48.9207858"]]},{"id":"c5f64040.b7a32","type":"trigger","z":"8c9f8f17.13eb78","op1":"true","op2":"false","op1type":"bool","op2type":"bool","duration":"1","extend":true,"units":"min","reset":"","bytopic":"all","name":"status","x":570,"y":1700,"wires":[["c65a87d0.d60ef8"]]},{"id":"c65a87d0.d60ef8","type":"change","z":"8c9f8f17.13eb78","name":"","rules":[{"t":"change","p":"topic","pt":"msg","from":"^(.*)$","fromt":"re","to":"online","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":750,"y":1700,"wires":[["e9c65962.f1bd98"]]},{"id":"9ef1333b.1cf96","type":"function","z":"8c9f8f17.13eb78","name":"convert2Json","func":"const ans = {}

Array.prototype.map.call( msg.payload.trim().split("\n"), function(line) 
{
    if ( line.trim() === '' ) return
    let part = line.split(':')
    // Some values contain ':', when they do, we have to rejoin
    if ( part.length > 2 ) {
        let newPart = []
        newPart.push( part.shift() )
        newPart.push( part.join(':') )
        part = newPart
    }
    
    let payloadName = part[0].toLowerCase().trim()
    let payloadValue = part[1].trim()
    ans[payloadName] = payloadValue
    return
    
} )

msg.payload = ans

return msg","outputs":1,"noerr":0,"x":600,"y":1760,"wires":[["7177d00d.0f8c1","f49b6561.709b18","9cd3b15b.3aa0a","cbdff947.6252f8","9a68559b.2e0408","a998a9f0.b4c2f8","cbb1400b.8107f","4db0abb3.948d94"]]},{"id":"e9c65962.f1bd98","type":"debug","z":"8c9f8f17.13eb78","name":"online/offline-Status","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":980,"y":1700,"wires":[]},{"id":"7177d00d.0f8c1","type":"debug","z":"8c9f8f17.13eb78","name":"Data as JSON payload","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":840,"y":1760,"wires":[]},{"id":"90dd24c3.50c968","type":"ui_gauge","z":"8c9f8f17.13eb78","name":"Battery charge","group":"c8fbbc62.c288a","order":4,"width":0,"height":0,"gtype":"gage","title":"Battery charge:","label":"%","format":"{{value}}","min":0,"max":"100","colors":["#ca3838","#e6e600","#00b500"],"seg1":"","seg2":"","x":1080,"y":1800,"wires":[]},{"id":"4b7d84af.22ddfc","type":"ui_gauge","z":"8c9f8f17.13eb78","name":"Batterie-Temperature","group":"c8fbbc62.c288a","order":5,"width":0,"height":0,"gtype":"gage","title":"Batterie-Temperature:","label":"°C","format":"{{value}}","min":"20","max":"40","colors":["#00b500","#00b500","#ca3838"],"seg1":"","seg2":"","x":1100,"y":1840,"wires":[]},{"id":"c655e83c.23f538","type":"ui_gauge","z":"8c9f8f17.13eb78","name":"Batterie-Voltage","group":"c8fbbc62.c288a","order":6,"width":0,"height":0,"gtype":"gage","title":"Batterie-Voltage:","label":"V","format":"{{value}}","min":"11","max":"15","colors":["#ca3838","#00b500","#ca3838"],"seg1":"","seg2":"","x":1080,"y":1880,"wires":[]},{"id":"3ce99364.46890c","type":"ui_gauge","z":"8c9f8f17.13eb78","name":"Mains voltage","group":"c8fbbc62.c288a","order":7,"width":0,"height":0,"gtype":"gage","title":"Mains voltage:","label":"V","format":"{{value}}","min":"220","max":"240","colors":["#ca3838","#00b500","#ca3838"],"seg1":"","seg2":"","x":1080,"y":1920,"wires":[]},{"id":"810aaaf7.ec4f48","type":"ui_text","z":"8c9f8f17.13eb78","group":"c8fbbc62.c288a","order":1,"width":0,"height":0,"name":"Status","label":"Status:","format":"{{msg.payload}}","layout":"row-spread","x":1050,"y":1960,"wires":[]},{"id":"f49b6561.709b18","type":"change","z":"8c9f8f17.13eb78","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.bcharge","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":1800,"wires":[["90dd24c3.50c968"]]},{"id":"9cd3b15b.3aa0a","type":"change","z":"8c9f8f17.13eb78","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.itemp","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":1840,"wires":[["4b7d84af.22ddfc"]]},{"id":"cbdff947.6252f8","type":"change","z":"8c9f8f17.13eb78","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.battv","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":1880,"wires":[["c655e83c.23f538"]]},{"id":"9a68559b.2e0408","type":"change","z":"8c9f8f17.13eb78","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.linev","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":1920,"wires":[["3ce99364.46890c"]]},{"id":"a998a9f0.b4c2f8","type":"change","z":"8c9f8f17.13eb78","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.status","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":1960,"wires":[["810aaaf7.ec4f48"]]},{"id":"5f70becf.c02b8","type":"ui_text","z":"8c9f8f17.13eb78","group":"c8fbbc62.c288a","order":2,"width":0,"height":0,"name":"Last Update","label":"Last Update:","format":"{{msg.payload}}","layout":"row-spread","x":1070,"y":2000,"wires":[]},{"id":"cbb1400b.8107f","type":"function","z":"8c9f8f17.13eb78","name":"","func":"msg.payload=Date(Date.now());
return msg;","outputs":1,"noerr":0,"x":790,"y":2000,"wires":[["5f70becf.c02b8"]]},{"id":"4db0abb3.948d94","type":"function","z":"8c9f8f17.13eb78","name":"","func":"if (msg.payload.linev<=100)
{
    msg.payload="Power failure: UPS-Mains-voltage below 100V!";
    return msg;
}","outputs":1,"noerr":0,"x":790,"y":2040,"wires":[["f62fd4e0.66c8b8"]]},{"id":"f62fd4e0.66c8b8","type":"pushbullet","z":"8c9f8f17.13eb78","config":"e3daf163.eeb16","pushtype":"note","title":"SmartHome","chan":"","name":"","x":1070,"y":2040,"wires":[]},{"id":"622137c.74419c8","type":"inject","z":"8c9f8f17.13eb78","name":"Test Power failure","topic":"","payload":"60","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":410,"y":2040,"wires":[["4f72d77f.af5ee8"]]},{"id":"4f72d77f.af5ee8","type":"change","z":"8c9f8f17.13eb78","name":"","rules":[{"t":"set","p":"temp","pt":"flow","to":"payload","tot":"msg"},{"t":"delete","p":"payload","pt":"msg"},{"t":"set","p":"payload.linev","pt":"msg","to":"temp","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":600,"y":2040,"wires":[["4db0abb3.948d94"]]},{"id":"c8fbbc62.c288a","type":"ui_group","z":"","name":"USV2","tab":"4719e8d9.2a46f8","disp":true,"width":"6","collapse":false},{"id":"e3daf163.eeb16","type":"pushbullet-config","z":"","name":"FabsPushbullet"},{"id":"4719e8d9.2a46f8","type":"ui_tab","z":"","name":"Einstellungen","icon":"dashboard"}]

Lectura de un SAI conectado a un Synology NAS

Si tienes un Synology NAS o un NAS en general, el tema de la pérdida de datos es aún más importante. Después de todo, las fotos familiares (o algunas de ellas) no deberían desaparecer en el nirvana de los datos en caso de un corte de energía. Es por eso que muchos fabricantes ofrecen la función de proteger su propio NAS de cortes de energía con un UPS. Luego, el UPS se conecta al NAS a través de USB para poder proporcionar información sobre un cambio de estado. Si se produce un corte de energía, el NAS lo detecta y se apaga automáticamente y de forma controlada. Práctico y bueno para los datos almacenados en el NAS. Al mismo tiempo, no es práctico que los demás participantes de la red no se enteren de la situación (excepto que se ha cortado la luz).

Al menos los NAS de Synology ofrecen una solución para esto: a través de un servidor UPS de red integrado, otros participantes de la red también pueden registrar el estado del UPS conectado al NAS. Esto significa que, en última instancia, puedes registrar el estado en la RaspberryPi y, por tanto, también en NodeRed.

Para que el servidor UPS de red funcione, primero se debe configurar. Para hacer esto, vaya al Panel de control de la interfaz DiskStationManager (DSM)...
... y a la categoría “Hardware y Energía”. Allí haces clic en la pestaña “UPS”.
El UPS conectado ya debería estar configurado allí. En este caso, el NAS se apagará automáticamente después de 3 minutos después de que se produzca un corte de energía. Para activar el servidor UPS de red, marque "Activar servidor UPS de red" y haga clic en el botón "Dispositivos DiskStation aprobados".
En la ventana que ahora se abre, puede ingresar varias direcciones IP de dispositivos en su red a los que se les permite acceder a la información desde el servidor UPS de la red. Este proceso llamado "lista blanca" garantiza que sólo los participantes autorizados de la red puedan recibir esta información. En este campo ingresa la dirección IP de su RaspberryPi desde la cual desea leer el estado del UPS a través de NodeRed, como se muestra. Cómo puede averiguar la dirección IP de los dispositivos en su red está en el artículo Mostrar/averiguar la dirección IP de los dispositivos en la red descrito. Una vez que haya ingresado la dirección IP, haga clic en “Aceptar”…
...y en la siguiente ventana haga clic en “Aplicar”.

Instale NetworkUpsTools (NUT) en RaspberryPi para recuperar datos de UPS desde un servidor UPS

Ahora que el servidor está configurado para proporcionar la información del UPS, el lado del cliente (es decir, su RaspberryPi), por supuesto, también debe configurarse en consecuencia. Por supuesto, este también debe poder contactar con el servidor UPS de red de su NAS. Un programa que hace esto posible es el “NetworkUpsTool”, que se puede instalar de la siguiente manera.

Para instalar la aplicación “NUT” debes ingresar el siguiente comando.
Tuerca de instalación de sudo aptitude

Una noticia: Para instalar “NUT” necesita la extensión “aptitude” para la gestión de paquetes “APT”. Esto se puede instalar (si aún no está disponible) con el siguiente comando.

sudo apt-get install aptitude

Si tiene alguna pregunta durante la instalación, confirme con “y” y “Enter”. La mayoría de las veces (como en este ejemplo) estas preguntas se relacionan con si las herramientas que se van a instalar requieren espacio de almacenamiento adicional y si también se pueden instalar paquetes adicionales (requeridos).

Después de la instalación, aún es necesario configurar "NUT". Para hacer esto, abra el archivo de configuración con el siguiente comando.
sudo nano /etc/nut/nut.conf
En el archivo de configuración que ahora está abierto, use las teclas de flecha para navegar hasta la línea que se muestra.
Una vez allí, cambie la línea de “Mode=none” a “Mode=netclient”. Esto le indica a “NUT” que actúe como cliente de red para un servidor UPS de red.
modo=netclient
Esta configuración se guarda presionando “CTRL-X” y “J”…
…y finalmente haga clic en “Entrar”.
Ahora, por supuesto, aún debe configurar la dirección en la que se puede acceder al servidor UPS de la red. Para hacer esto, abra otro archivo de configuración con el siguiente comando.
sudo nano /etc/nut/upsmon.conf
Luego navegue con las teclas de flecha hasta llegar a la línea especificada. Allí se debe insertar la línea “MONITOR ups@*IP-ADDRESS-EURER-NAS* 1 monuser secret Slave”. Por supuesto, *IP-ADDRESS-EURER-NAS* debe ser reemplazado por la dirección IP de su servidor UPS de red, es decir, su NAS. Esta es la única manera en que NUT sabe de dónde obtener la información de UPS.
MONITOR ups@*IP-ADDRESS-YOUR-NAS* 1 monousuario esclavo secreto
Luego puede guardar esta configuración nuevamente presionando “CTRL-X” y “J”…
…y finalmente haga clic en “Entrar”.
Para que se apliquen los cambios en el archivo de configuración, todo lo que tiene que hacer es reiniciar el cliente NUT. Esto se puede hacer con el comando "sudo service nut-client restart".
reinicio del cliente de tuerca del servicio sudo
Usando el comando “sudo upsc ups@*IP-ADDRESS-EURER-NAS*” ahora puede recuperar la información actual sobre su UPS desde el servidor UPS de la red. Por supuesto, *IP-ADDRESS-EURER-NAS* debe ser reemplazado por la dirección IP de su servidor UPS de red, es decir, su NAS.
sudo upsc ups@*DIRECCIÓN-IP-SU-NAS*
A continuación, se le mostrará la información de acuerdo con el patrón especificado. Por ejemplo, se muestran el estado de carga, el modelo y varios voltajes.

Importar código de nodo

Con el siguiente NodeCode puede mostrar algunos detalles del estado actual de su UPS conectado a su Synology NAS. Esto significa que puedes reaccionar individualmente ante determinadas características.

Por ejemplo, sería posible recibir una notificación de un corte de energía mediante un mensaje push o, como en el ejemplo siguiente, mostrar los datos más importantes en el tablero. Para que se puedan enviar mensajes push en caso de un corte de energía, por supuesto debe asegurarse de que toda su infraestructura de red también esté protegida por el UPS. Por supuesto, si el corte de energía afecta a un área muy grande, esto ya no ayuda. Por lo tanto, por supuesto, la comunicación a través de Internet no está garantizada en caso de un corte de energía.

Cómo importar su NodeCode en su configuración de NodeRed está en el artículo NodeRed - código de nodo de importación y exportación descrito. Después de la importación, es posible que también necesite configurar el nodo Pushbullet. Puedes encontrar información sobre esto en el artículo. NodeRed: envía mensajes Pushbullet sobre eventos. Los nodos del tablero se utilizan para mostrar datos de UPS. Puedes encontrar información al respecto en el artículo NodeRed: cree una interfaz de usuario con nodos de tablero.

Vista del indicador de estado del SAI en el salpicadero.
Descripción general de la configuración de NodeCode en la interfaz de configuración de NodeRed.
[{"id":"b7aefd76.e8bf9","type":"comment","z":"8c9f8f17.13eb78","name":"USV-Server data request","info":"","x":170,"y":2160,"wires":[]},{"id":"66e7a9bd.eb6c58","type":"inject","z":"8c9f8f17.13eb78","name":"","topic":"status request","payload":"","payloadType":"date","repeat":"60","crontab":"","once":true,"onceDelay":0.1,"x":180,"y":2240,"wires":[["d3649b9.f1b5468"]]},{"id":"d3649b9.f1b5468","type":"exec","z":"8c9f8f17.13eb78","command":"sudo upsc ups@192.168.3.59","addpay":false,"append":"","useSpawn":"","timer":"","oldrc":false,"name":"get UPS status","x":420,"y":2240,"wires":[["22edb893.55ed38"],[],[]]},{"id":"22edb893.55ed38","type":"function","z":"8c9f8f17.13eb78","name":"convert2Json","func":"const convertData = {}

Array.prototype.map.call( msg.payload.trim().split("\n"), function(line) 
{
    if ( line.trim() === '' ) return
    let part = line.split(':')
    
    // Some values contain ':', when they do, we have to rejoin
    if ( part.length > 2 ) {
        let newPart = []
        newPart.push( part.shift() )
        newPart.push( part.join(':') )
        part = newPart
    }
    
    let payloadName = part[0].toLowerCase().trim()
    payloadName = part[0].replace(/\./g, "_")
    let payloadValue = part[1].trim()
    convertData[payloadName] = payloadValue
    return
    
} )

msg.payload = convertData

return msg","outputs":1,"noerr":0,"x":630,"y":2240,"wires":[["61f07a9c.f54824","a1504bd4.049f18","4e4d02.d85ad3","641d6b8a.a25e34","49343e5b.85218","3c698623.45215a","83b9ebee.451878","282426fe.c5650a","50224b5b.8a4164"]]},{"id":"61f07a9c.f54824","type":"debug","z":"8c9f8f17.13eb78","name":"Data as JSON payload","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":920,"y":2240,"wires":[]},{"id":"21f21239.2c2bce","type":"ui_text","z":"8c9f8f17.13eb78","group":"6f8a5651.9e0318","order":0,"width":0,"height":0,"name":"Test:","label":"Test:","format":"{{msg.payload}}","layout":"row-spread","x":1130,"y":2480,"wires":[]},{"id":"a1504bd4.049f18","type":"change","z":"8c9f8f17.13eb78","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.battery_charge","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":900,"y":2280,"wires":[["3442fea.41d6702"]]},{"id":"4e4d02.d85ad3","type":"change","z":"8c9f8f17.13eb78","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.battery_temperature","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":900,"y":2320,"wires":[["5362d4fa.9026ac"]]},{"id":"641d6b8a.a25e34","type":"change","z":"8c9f8f17.13eb78","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.battery_voltage","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":900,"y":2360,"wires":[["bd21c5da.510bc8"]]},{"id":"49343e5b.85218","type":"change","z":"8c9f8f17.13eb78","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.input_voltage","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":900,"y":2400,"wires":[["22a47d9.d019982"]]},{"id":"3c698623.45215a","type":"change","z":"8c9f8f17.13eb78","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.ups_status","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":900,"y":2440,"wires":[["6a33c3ab.06088c"]]},{"id":"83b9ebee.451878","type":"change","z":"8c9f8f17.13eb78","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.ups_test_result","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":900,"y":2480,"wires":[["21f21239.2c2bce"]]},{"id":"282426fe.c5650a","type":"function","z":"8c9f8f17.13eb78","name":"","func":"msg.payload=Date(Date.now());
return msg;","outputs":1,"noerr":0,"x":870,"y":2520,"wires":[["12142ef5.0928f1"]]},{"id":"50224b5b.8a4164","type":"function","z":"8c9f8f17.13eb78","name":"","func":"if (msg.payload.input_voltage<=100)
{
    msg.payload="Stromausfall: USV-Eingangsspannung unter 100V!";
    return msg;
}","outputs":1,"noerr":0,"x":870,"y":2560,"wires":[["b4128198.758dd"]]},{"id":"b4128198.758dd","type":"pushbullet","z":"8c9f8f17.13eb78","config":"","pushtype":"note","title":"SmartHome","chan":"","name":"","x":1150,"y":2560,"wires":[]},{"id":"88e174da.1ab6d8","type":"inject","z":"8c9f8f17.13eb78","name":"Test Power failure","topic":"","payload":"60","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":490,"y":2560,"wires":[["b7ac5f17.07bbb"]]},{"id":"b7ac5f17.07bbb","type":"change","z":"8c9f8f17.13eb78","name":"","rules":[{"t":"set","p":"temp","pt":"flow","to":"payload","tot":"msg"},{"t":"delete","p":"payload","pt":"msg"},{"t":"set","p":"payload.input_voltage","pt":"msg","to":"temp","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":680,"y":2560,"wires":[["50224b5b.8a4164"]]},{"id":"3442fea.41d6702","type":"ui_gauge","z":"8c9f8f17.13eb78","name":"Battery charge","group":"c8fbbc62.c288a","order":4,"width":0,"height":0,"gtype":"gage","title":"Battery charge:","label":"%","format":"{{value}}","min":0,"max":"100","colors":["#ca3838","#e6e600","#00b500"],"seg1":"","seg2":"","x":1160,"y":2280,"wires":[]},{"id":"5362d4fa.9026ac","type":"ui_gauge","z":"8c9f8f17.13eb78","name":"Batterie-Temperature","group":"c8fbbc62.c288a","order":5,"width":0,"height":0,"gtype":"gage","title":"Batterie-Temperature:","label":"°C","format":"{{value}}","min":"20","max":"40","colors":["#00b500","#00b500","#ca3838"],"seg1":"","seg2":"","x":1180,"y":2320,"wires":[]},{"id":"bd21c5da.510bc8","type":"ui_gauge","z":"8c9f8f17.13eb78","name":"Batterie-Voltage","group":"c8fbbc62.c288a","order":6,"width":0,"height":0,"gtype":"gage","title":"Batterie-Voltage:","label":"V","format":"{{value}}","min":"11","max":"15","colors":["#ca3838","#00b500","#ca3838"],"seg1":"","seg2":"","x":1160,"y":2360,"wires":[]},{"id":"22a47d9.d019982","type":"ui_gauge","z":"8c9f8f17.13eb78","name":"Mains voltage","group":"c8fbbc62.c288a","order":7,"width":0,"height":0,"gtype":"gage","title":"Mains voltage:","label":"V","format":"{{value}}","min":"220","max":"240","colors":["#ca3838","#00b500","#ca3838"],"seg1":"","seg2":"","x":1160,"y":2400,"wires":[]},{"id":"6a33c3ab.06088c","type":"ui_text","z":"8c9f8f17.13eb78","group":"c8fbbc62.c288a","order":1,"width":0,"height":0,"name":"Status","label":"Status:","format":"{{msg.payload}}","layout":"row-spread","x":1130,"y":2440,"wires":[]},{"id":"12142ef5.0928f1","type":"ui_text","z":"8c9f8f17.13eb78","group":"c8fbbc62.c288a","order":2,"width":0,"height":0,"name":"Last Update","label":"Last Update:","format":"{{msg.payload}}","layout":"row-spread","x":1150,"y":2520,"wires":[]},{"id":"6f8a5651.9e0318","type":"ui_group","z":"","name":"USV","tab":"fe022c7.d9788d","disp":true,"width":"6","collapse":false},{"id":"c8fbbc62.c288a","type":"ui_group","z":"","name":"USV2","tab":"4719e8d9.2a46f8","disp":true,"width":"6","collapse":false},{"id":"fe022c7.d9788d","type":"ui_tab","z":"","name":"Einstellungen","icon":"dashboard"},{"id":"4719e8d9.2a46f8","type":"ui_tab","z":"","name":"Einstellungen","icon":"dashboard"}]

Información adicional

https://wiki.ubuntuusers.de/USV/NUT/
https://flows.nodered.org/flow/cf9813fbca341607a73786c31df362c9
http://www.gtkdb.de/index_36_2203.html


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é. 🙂

Cómprame un café en ko-fi.com       

Kommentar hinterlassen

Tu dirección de correo electrónico no será publicada. Erforderliche Felder sind mit * markiert

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.