HowTo: Nodo Rojo - Leer el estado de UPS

Uno de los puntos débiles de un sistema SmartHome, del que sólo nos damos cuenta cuando algo va mal, es la "energía". Por desgracia, todos los sensores, actuadores y la inteligencia de control que hay detrás no funcionan con aire y amor. Y aunque la energía utilizada por el sistema no sea muy alta y el ahorro general sea sin duda superior a la energía "consumida", la energía de suministro es esencial. En otras palabras: sin electricidad -> no hay 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.

Para la RaspberryPi existe el programa "Apcupsd", que te permite leer el estado de tu SAI. A continuación, también puede utilizar este estado para reaccionar ante él 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 SAI en NodeRed, "apcupsd" debe estar instalado.


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.

Instalar "apcupsd" en la RaspberryPi

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

Un programa que puede comunicarse directamente con su SAI conectado vía USB es el programa "apcupsd", que se instala con el siguiente comando.
sudo apt-get install apcupsd
Si se le pregunta si el programa utiliza memoria adicional, confirme con "Y".
La instalación tarda unos dos minutos.

Configurar Appupsd

Por supuesto, antes de poder utilizar "apcupsd", hay que configurarlo. Para ello, 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. Allí se especifica el tipo de cable utilizado para conectar el SAI a su RaspberryPi. Lo más probable es que su SAI esté conectado a su RaspberryPi a través del puerto USB. Es por eso que también establece "UPSCABLE usb" aquí.
USB UPSCABLE
Como ha conectado un cable USB, por supuesto también debe configurar UPSTYPE en USB.
tipo ups usb
Para que funcione la conexión al SAI vía USB, ahora debe editar el parámetro "DISPOSITIVO". No se puede asignar ningún valor a este parámetro. Para ello, elimine la parte "/dev/ttsyS0" que aparece junto a "DEVICE".
Esto debería verse así.
Ahora puedes hacer algunos ajustes para saber cómo apcupsd debe comportarse 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 si el SAI tiene un nivel de carga restante de 5%.
El parámetro "MINUTOS" especifica el tiempo de ejecución restante en minutos en el que la RaspberryPi debe apagarse.
Puede utilizar el parámetro "NETSERVER" para activar un servidor de red que ponga a disposición la información del SAI a través de la red. En caso de fallo de alimentación, otros participantes de la red también pueden reaccionar y apagarse, por ejemplo. Para activar el servidor de red, debe ajustar el parámetro a "NETSERVER on".
Puede utilizar el parámetro "NISIP" para establecer en qué dirección IP "escucha" el servidor. Esto sólo es necesario si tienes más de una interfaz de red en el sistema en cuestión. En una RaspberryPi, por ejemplo, podrías usar esto para configurar el servidor para que sólo responda a las peticiones que reciba a través de la interfaz WLAN y no a través de la interfaz LAN. En la mayoría de los casos, sin embargo, puedes establecer este parámetro en "NISIP 0.0.0.0". Esto significa que se responderán todas las solicitudes, independientemente de la interfaz de red.
El parámetro "NISPORT" define el puerto bajo el cual se puede recuperar la información del servidor. Debe dejarlo sin cambios en el valor "3551".
A continuación, puede guardar esta configuración pulsando "CTRL-X" y "J"...
...y "Enter".
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
Ajuste el parámetro "ISCONFIGURED" a...
... "sí".
A continuación, puede volver a guardar esta configuración pulsando "CTRL-X" y "J"...
...y "Enter".
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 SAI puede visualizarse con el comando "apcaccess status". Si no se puede establecer ninguna conexión con el SAI, la respuesta tendrá el aspecto 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 alguna vez necesitas reiniciar "apcupsd", simplemente introduce 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í, haz clic en la pestaña "SAI".
El SAI conectado ya debería estar configurado allí. En este caso, el NAS se apagará automáticamente transcurridos 3 minutos si se produce un fallo de alimentación. Para activar el servidor SAI de red, marque la casilla "Activar servidor SAI de red" y haga clic en el botón "Dispositivos DiskStation autorizados".
En la ventana que se abre ahora, puede introducir varias direcciones IP de dispositivos de su red que estén autorizados a acceder a la información del servidor SAI de red. Este procedimiento denominado "lista blanca" garantiza que sólo los participantes autorizados de la red puedan recibir esta información. En este campo introduzca la dirección IP de su RaspberryPi desde la que desea leer el estado del SAI a través de NodeRed como se muestra. Cómo averiguar la dirección IP de los dispositivos de su red se describe en el artículo Mostrar/averiguar la dirección IP de los dispositivos en la red descrito anteriormente. Una vez introducida 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 se ha configurado para proporcionar la información del SAI, el lado del cliente (es decir, su RaspberryPi) también debe configurarse en consecuencia. Esto se debe a que, por supuesto, también debe ser capaz de ponerse en contacto con el servidor SAI de red en 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", introduzca el siguiente comando.
Tuerca de instalación de sudo aptitude

Una noticia: Para instalar "NUT", necesita la extensión "aptitude" para el gestor de paquetes "APT". Esto se puede instalar - si no está ya presente - con el siguiente comando.

sudo apt-get install aptitude

Confirme cualquier pregunta durante la instalación con un "y" y "Enter". En la mayoría de los casos (como en este ejemplo), estas preguntas se refieren a si las herramientas que se van a instalar requieren memoria adicional y si se pueden instalar paquetes adicionales (necesarios).

Después de la instalación, "NUT" todavía necesita ser configurado. Para ello, 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 dice a "NUT" que debe actuar como un cliente de red para un servidor UPS de red.
modo=netclient
Puede guardar esta configuración pulsando "CTRL-X" y "J"...
...y, por último, pulse "Intro".
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
A continuación, navegar con las teclas de flecha hasta llegar a la línea especificada. La línea "MONITOR ups@*IP-ADRESS-EURER-NAS* 1 monuser secret slave" debe insertarse allí. Por supuesto, *IP-ADRESS-EURER-NAS* debe sustituirse por la dirección IP de su servidor SAI de red, es decir, su NAS. Esta es la única manera de que NUT sepa de dónde obtener la información del SAI.
MONITOR ups@*IP-ADDRESS-YOUR-NAS* 1 monousuario esclavo secreto
A continuación, puede volver a guardar esta configuración pulsando "CTRL-X" y "J"...
...y, por último, pulse "Intro".
Para aplicar los cambios en el archivo de configuración, ahora sólo tiene que reiniciar el cliente NUT. Esto se puede hacer con el comando "sudo service nut-client restart".
reinicio del cliente de tuerca del servicio sudo
Utilizando el comando "sudo upsc ups@*IP-ADRESS-EURER-NAS*", ahora puede recuperar la información actual sobre su SAI del servidor SAI de red. Por supuesto, *IP-ADRESS-EURER-NAS* debe sustituirse por la dirección IP de su servidor SAI 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 utiliza Akismet para reducir el spam. Conozca cómo se procesan los datos de sus comentarios.