HowTo: Nodo Rojo - Leer el estado de UPS

Eine dieser Schwachstellen eines SmartHome-Systems die einem erst so richtig bewusst wird, wenn etwas schief läuft ist „Energie“. Die ganzen Sensoren, Aktoren und die steuernde Intelligenz dahinter laufen ja nun leider nicht mit Luft und Liebe. Und auch wenn die von dem System genutzte Energie nicht sehr hoch und generell die Ersparnis dadurch sicherlich höher als die „verbrauchte“ Energie ist, so ist die Versorgungsenergie doch essenziell. Sprich: Kein Strom-> kein 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.

Für den RaspberryPi gibt es dazu das Programm „Apcupsd“, welches es Euch ermöglicht den Status Eurer USV einzulesen. Diesen Status könnt Ihr dann ebenfalls dazu nutzen um per NodeRed darauf zu reagieren.

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

Bevor Ihr allerdings den Status Eurer USV in NodeRed auslesen könnt, muss zunächst „apcupsd“ installiert werden.


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.

„apcupsd“ auf dem RaspberryPi installieren

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

Ein Programm dass direkt mit Eurer über USB angeschlossenen USV kommunizieren kann ist das Programm „apcupsd“, welches Ihr mit folgendem Befehl installiert.
sudo apt-get install apcupsd
Eventuelle Nachfragen, dass durch das Programm zusätzlicher Speicher belegt wird, bestätigt Ihr mit „J“.
La instalación tarda unos dos minutos.

Configurar Appupsd

Bevor Ihr „apcupsd“ nutzen könnt, muss dieses zunächst natürlich noch konfiguriert werden. Dazu müssen ein paar Konfigurationsdateien bearbeitet werden.

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…
…bis zur dargestellten Zeile navigieren. Dort wird festgelegt, über welchen Kabeltyp die USV mit Eurem RaspberryPi verbunden ist. Sehr wahrscheinlich ist Eure USV über den USB-Anschluss mit Eurem RaspberryPi verbunden. Deshalb stellt Ihr hier auch „UPSCABLE usb“ ein.
USB UPSCABLE
Como ha conectado un cable USB, por supuesto también debe configurar UPSTYPE en USB.
tipo ups usb
Damit die Verbindung zur USV über USB funktioniert, müsst Ihr nun noch den Parameter „DEVICE“ bearbeiten. Diesem darf kein Wert zugewiesen werden. Entfernt dazu also den abgebildeten Teil „/dev/ttsyS0“ neben „DEVICE“.
Esto debería verse así.
Nun könnt Ihr noch ein paar Einstellungen vornehmen, wie sich apcupsd im Fall eines Stromausfalls verhalten soll. Mit dem Parameter „BATTERYLEVEL“ lässt sich zum Beispiel einstellen, dass der RaspberryPi bei einem verbleibenden Ladezustand der USV von 5% heruntergefahren wird.
Der Parameter „MINUTES“ gibt dabei an bei welcher Restlaufzeit in Minuten der RaspberryPi heruntergefahren werden soll.
Mit dem Parameter „NETSERVER“ könnt Ihr einen Nertzwerkserver aktivieren, der die Informationen der USV über das Netzwerk zur Verfügung stellt. So können auch andere Netzwerkteilnehmer im Falle eines Stromausfalls ebenfalls auf diesen reagieren und zum Beispiel herunterfahren. Um den Netzwerkserver zu aktivieren müsst Ihr den Parameter auf „NETSERVER on“ einstellen.
Mithilfe des Parameters „NISIP“ könnt Ihr einstellen auf welche IP-Adresse der Server „höhrt“. Dies ist nur dann nötig, wenn Ihr mehr als eine Netzwerkinterface an dem betreffendem System habt. An einem RaspberryPi könntet Ihr damit zum Beispiel einstellen, dass der Server nur anfragen Beantwortet die er über das WLAN-Interface und nicht über das LAN-Interface erhält. In den meisten Fällen könnt Ihr diesen Parameter allerdings auf „NISIP 0.0.0.0“ einstellen. Dies bedeutet, dass alle Anfragen, unabhängig vom Netzwerk-Interface, beantwortet werden.
Durch den Parameter „NISPORT“ wird der Port festgelegt unter dem die Informationen des Servers abgerufen werden können. Diesen solltet Ihr unverändert auf dem Wert „3551“ eingestellt lassen.
Diese Konfiguration speichert Ihr dann mit einem Druck auf „STRG-X“ und „J“…
…und „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
Stellt den Parameter „ISCONFIGURED“ dazu auf…
…“yes“ ein.
Diese Konfiguration speichert Ihr dann wieder mit einem Druck auf „STRG-X“ und „J“…
…und „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í.
Mit dem Befehl „apcaccess status“ lässt sich dann der aktuelle Status der USV anzeigen. Sollte keine Verbindung zur USV hergestellt werden können sieht die Antwort wie abgebildet aus.
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.
Solltet Ihr „apcupsd“ mal neustarten müssen reicht die Eingabe des folgenden Befehls.
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)...
… und zur Kategorie „Hardware & Energie“. Dort klickt Ihr auf die Karteikarte „USV“.
Dort sollte die angeschlossene USV bereits konfiguriert sein. In diesem Fall wird das NAS nach dem Auftreten eines Stromausfalls nach 3 Minuten automatisch heruntergefahren. Um nun den Netzwerk-USV-Server zu aktivieren, setzt Ihr einen Haken bei „Netzwer-USV-Server aktivieren“ und klickt auf den Button „Zugelassene DiskStation Geräte“.
In dem sich nun öffnendem Fenster könnt Ihr mehrere IP-Adressen von Geräten in Eurem Netzwerk eintragen, denen es erlaubt ist auf die Informationen des Netzwerk-USV-Servers zuzugreifen. Dieses so genannte „Whitelist“-Verfahren stellt sicher, dass nur berechtigte Netzwerkteilnehmer diese Informationen erhalten können. In diesem Feld tragt Ihr wie abgebildet die IP-Adresse Eures RaspberryPi’s ein von dem Ihr per NodeRed den USV-Status einlesen wollt. Wie Ihr die IP-Adresse der Geräte in Eurem Netzwerk herausfindet ist im Artikel Mostrar/averiguar la dirección IP de los dispositivos en la red beschrieben. Habt ihr die IP-Adresse eingetragen klickt Ihr auf „OK“…
…und im darauffolgenden Fenster auf „Übernehmen“.

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

Nun wo der Server zur Bereitstellung der USV Informationen eingerichtet ist, muss natürlich auch die Client-Seite(also Euer RaspberryPi) entsprechend konfiguriert werden. Denn dieser muss natürlich auch Kontakt zu dem Netzwerk-USV-Server auf Eurem NAS aufnehmen können. Ein Programm dass dies ermöglicht ist das „NetworkUpsTool“, welches wie folgt installiert werden kann.

Zum installieren der Anwendung „NUT“ müsst Ihr folgenden Befehl eingeben.
Tuerca de instalación de sudo aptitude

Una noticia: Für die Installation von „NUT“ benötigt Ihr die Erweiterung „aptitude“ für die Paketverwaltung „APT“. Diese lässt sich – falls nicht bereits vorhanden – mit folgendem Befehl installieren.

sudo apt-get install aptitude

Eventuelle Fragen während der Installation bestätigt Ihr mit einem „y“ und „Enter“. Meistens(wie auch in diesem Beispiel) beziehen sich diese Fragen darauf, ob durch die zu installierenden Tools zusätzlicher Speicherplatz belegt und ob auch weitere (benötigte) Pakete installiert werden dürfen.

Nach der Installation muss „NUT“ noch konfiguriert werden. Dazu öffnet Ihr die Konfigurationsdatei mit dem folgenden Befehl.
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.
Dort angekommen ändert Ihr die Zeile von „Mode=none“ zu „Mode=netclient“. Dies teil „NUT“ mit, dass es als Netzwerk-Client für einen Netzwerk-USV-Server fungieren soll.
modo=netclient
Diese Konfiguration speichert Ihr mit einem Druck auf „STRG-X“ und „J“…
…und letztendlich auf „Enter“.
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
Navigiert dann mit den Pfeiltasten bis Ihr in der angegebenen Zeile angekommen seid. Dort muss die Zeile „MONITOR ups@*IP-ADRESSE-EURER-NAS* 1 monuser secret slave“ eingefügt werden. Dabei muss *IP-ADRESSE-EURER-NAS* natürlich durch die IP-Adresse Eures Netzwerk-USV-Servers also Eurer NAS ersetzt werden. Nur so weiß NUT woher es die USV-Informationen beziehen kann.
MONITOR ups@*IP-ADDRESS-YOUR-NAS* 1 monousuario esclavo secreto
Diese Konfiguration speichert Ihr dann wieder mit einem Druck auf „STRG-X“ und „J“…
…und letztendlich auf „Enter“.
Damit die Änderungen an der Konfigurationsdatei übernommen werden müsst Ihr den NUT-Clienten nun nur noch neu starten. Dies geht mit dem Befehl „sudo service nut-client restart“.
reinicio del cliente de tuerca del servicio sudo
Mithilfe des Befehls „sudo upsc ups@*IP-ADRESSE-EURER-NAS*“ könnt Ihr nun die aktuellen Informationen zu Eurer USV vom Netzwerk-USV-Server abrufen. Dabei muss *IP-ADRESSE-EURER-NAS* natürlich wieder durch die IP-Adresse Eures Netzwerk-USV-Servers also Eurer NAS ersetzt werden.
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.