HowTo : Node Red - Lire l'état de l'UPS

L'un de ces points faibles d'un système SmartHome dont on ne prend vraiment conscience qu'en cas de problème est "l'énergie". Malheureusement, tous les capteurs, actionneurs et l'intelligence de contrôle derrière eux ne fonctionnent pas avec de l'air et de l'amour. Et même si l'énergie utilisée par le système n'est pas très élevée et, en général, les économies sont certainement supérieures à l'énergie "consommée", l'énergie d'approvisionnement est toujours essentielle. En d'autres termes : pas d'électricité -> pas de SmartHome.

Mais partager cela est un problème de luxe avec lequel vous pourriez vivre. Bien pire, je trouve l'idée que mon RaspberryPi ou n'importe quel ordinateur en général pourrait s'étouffer lors d'une panne de courant soudaine de telle sorte qu'il pourrait ne pas démarrer par la suite.
Car si votre système SmartHome (RaspberryPi, BeagleBone, PC Windows, etc.) est interrompu au moment même où il écrit des données (système) importantes, il est possible qu'il ne démarre plus correctement après coupure de l'alimentation été restauré. Dans les cas extrêmes, cela conduit à une perte douloureuse de données et donc souvent à une perte de temps considérable. Parce que dans les cas extrêmes, vous n'avez pas de sauvegarde du système et vous devez ensuite réinstaller et configurer l'ensemble du système, y compris tous les composants du système.

Mais : En fait, d'autres personnes semblent avoir trébuché sur ce problème. Pour ce cas, des alimentations sans coupure (UPS) ont été inventées. Ces appareils sont connectés entre la prise et le consommateur (dans ce cas votre RaspberryPi, etc.) et surveillent en permanence la qualité de votre tension secteur à partir de là. Cela signifie qu'il est surveillé en permanence si la tension AC entrante et la fréquence se situent dans la plage autorisée. En cas de sous-tension ou de surtension, ou si quelque chose d'autre ne va pas avec la tension d'alimentation, l'onduleur coupe l'entrée de tension en quelques millisecondes et passe à une batterie tampon interne. Celui-ci prend alors en charge l'alimentation des consommateurs raccordés jusqu'à ce que la batterie tampon soit vide.

Les onduleurs sont quant à eux disponibles sous toutes sortes de formes. Les plus petits ressemblent à des multiprises un peu maladroites. D'autres - ou leurs batteries - peuvent remplir une pièce entière.

Pour l'utilisateur normal de SmartHome, les versions plus petites sont certainement suffisantes. Tel que …

Cet article explique comment vous intégrez finalement votre propre onduleur dans NodeRed et réagissez aux changements.


Consignes de sécurité

Je sais que les notes suivantes sont toujours un peu ennuyeuses et semblent inutiles. Malheureusement, de nombreuses personnes qui savaient "mieux" ont perdu des yeux, des doigts ou d'autres choses à cause d'une négligence ou se sont blessées. La perte de données est presque négligeable en comparaison, mais même celles-ci peuvent être vraiment ennuyeuses. Par conséquent, veuillez prendre cinq minutes pour lire les consignes de sécurité. Parce que même le projet le plus cool ne vaut pas une blessure ou d'autres problèmes.
https://www.nerdiy.de/sicherheitshinweise/

Liens d'affiliation/publicitaires

Les liens vers des boutiques en ligne répertoriés ici sont des liens dits d'affiliation. Si vous cliquez sur un tel lien d'affiliation et effectuez un achat via ce lien, Nerdiy.de recevra une commission de la boutique en ligne ou du fournisseur concerné. Le prix ne change pas pour vous. Si vous effectuez vos achats via ces liens, vous aidez Nerdiy.de à pouvoir proposer d'autres projets utiles à l'avenir. 🙂 


Conditions préalables

Articles utiles :
Pour que vous puissiez contrôler/configurer votre onduleur via votre RaspberryPi et NodeRed, il faut bien sûr le préparer pour que NodeRed tourne dessus et que vous puissiez y accéder via SSH.

RaspberryPi - configuration pour les nerdiys !
RaspberryPi – La première configuration !
RaspberryPi - Contrôlez le RaspberryPi via SSH
NodeRed – Installer NodeRed sur le RaspberryPi
NodeRed - importer et exporter le code du nœud
NodeRed - Envoyer des messages pushbullet sur les événements
NodeRed - Créer une interface utilisateur avec des nœuds de tableau de bord

Matériel requis :

Dans la liste suivante, vous trouverez toutes les pièces dont vous avez besoin pour mettre en œuvre cet article.


Lecture d'un onduleur connecté au RaspberryPi

L'inconvénient d'une alimentation sans coupure est que le RaspberryPi ne remarque rien dès que quelque chose ne va pas avec l'alimentation (plus). En fait, c'est ce que vous voulez qu'il soit. En revanche, le RaspberryPi ne peut pas non plus réagir à ce changement.

Car même si la batterie d'un onduleur est assez volumineuse par rapport à la consommation d'un RaspberryPi : La capacité de la batterie est finie. Pour cette raison, le RaspberryPi devrait, par exemple, s'éteindre automatiquement avant que la batterie ne soit complètement épuisée. Cela minimise le risque de perte de données et vous permet de réagir de manière contrôlée à la panne de courant.

Pour que le RasperryPi puisse être informé des changements de l'UPS, il doit être connecté au RasperryPi via une connexion USB ou série.

Pour le RaspberryPi il existe le programme « Apcupsd », qui permet de lire l'état de votre onduleur. Vous pouvez ensuite également utiliser ce statut pour y réagir via NodeRed.

Par exemple, il serait également possible d'éteindre certains composants ou d'arrêter d'autres RaspberryPi - dans la mesure où ils ne sont pas tombés en panne de toute façon en raison de la panne de courant.

Cependant, avant de pouvoir lire l'état de votre onduleur dans NodeRed, "apcupsd" doit d'abord être installé.


Connectez-vous au RaspberryPi via SSH

Pour commencer, vous devez d'abord vous connecter au Rasp Pi avec Putty via SSH. Comment faire cela est dans l'article RaspberryPi - Contrôlez le RaspberryPi via SSH décrites.

Après avoir entré votre nom d'utilisateur et votre mot de passe, vous pouvez entrer les premières commandes.

Mettre à jour la gestion des packages

La gestion des packages sous Linux est un "lieu central" à travers lequel divers packages logiciels peuvent être installés. Pour que cela fonctionne de manière fiable, les listes et les sources de la gestion des packages doivent être mises à jour avant chaque installation de nouveaux packages.

Pour démarrer la mise à jour de la gestion des packages, vous devez entrer la commande suivante.
sudo apt-get mise à jour && sudo apt-get mise à niveau
Selon la date de votre dernière mise à jour de la gestion des packages, ce processus peut maintenant prendre un certain temps. Les listes qui font référence aux sources de packages individuelles sont mises à jour en premier.
Après cela, les packages eux-mêmes sont mis à jour. Étant donné que de la mémoire supplémentaire est occupée, votre consentement vous sera à nouveau demandé. Vous devez le confirmer avec un "J" et "Entrée".
Une fois la mise à jour terminée, vous verrez un petit résumé de la durée et de la portée de la mise à jour.

Installez "apcupsd" sur le RaspberryPi

Pour que votre RaspberryPi puisse communiquer avec l'onduleur connecté, vous devez d'abord installer quelques packages.

Un programme qui peut communiquer directement avec votre onduleur connecté via USB est le programme "apcupsd", que vous installez avec la commande suivante.
sudo apt-get install apcupsd
Toutes les questions que le programme occupe de la mémoire supplémentaire, vous confirmez avec "Y".
L'installation prend environ deux minutes.

Configurer Apcupsd

Avant de pouvoir utiliser "apcupsd", il faut bien sûr d'abord le configurer. Pour ce faire, quelques fichiers de configuration doivent être modifiés.

Vous ouvrez le premier fichier de configuration avec la commande suivante.
sudo nano /etc/apcupsd/apcupsd.conf
Dans le fichier de configuration ouvert, vous devez d'abord utiliser les touches fléchées...
...naviguez jusqu'à la ligne affichée. Là, il est déterminé quel type de câble est utilisé pour connecter l'onduleur à votre RaspberryPi. Votre onduleur est très probablement connecté à votre RaspberryPi via le port USB. C'est pourquoi vous définissez également "UPSCABLE usb" ici.
UPSCÂBLE usb
Puisque vous avez connecté un câble USB, vous devez bien sûr également régler l'UPSTYPE sur usb.
usb de type supérieur
Pour que la connexion à l'UPS fonctionne via USB, vous devez maintenant modifier le paramètre "DEVICE". Aucune valeur ne peut lui être attribuée. Pour cela, supprimez la partie "/dev/ttsyS0" à côté de "DEVICE".
Cela devrait alors ressembler à ceci.
Vous pouvez maintenant définir quelques paramètres sur la manière dont apcupsd doit se comporter en cas de panne de courant. Le paramètre "BATTERYLEVEL" peut être utilisé, par exemple, pour régler le RaspberryPi pour qu'il s'éteigne lorsque l'onduleur 5% a un niveau de charge restant.
Le paramètre "MINUTES" spécifie le temps restant en minutes auquel le RaspberryPi doit être arrêté.
Avec le paramètre "NETSERVER", vous pouvez activer un serveur de réseau qui rend les informations de l'UPS disponibles sur le réseau. En cas de panne de courant, d'autres participants au réseau peuvent également réagir et s'arrêter, par exemple. Pour activer le serveur de réseau, vous devez régler le paramètre sur "NETSERVER on".
À l'aide du paramètre "NISIP", vous pouvez définir l'adresse IP sur laquelle le serveur "écoute". Ceci n'est nécessaire que si vous avez plus d'une interface réseau sur le système en question. Sur un RaspberryPi, par exemple, vous pouvez le configurer pour que le serveur ne réponde qu'aux requêtes qu'il reçoit via l'interface WLAN et non via l'interface LAN. Dans la plupart des cas, cependant, vous pouvez définir ce paramètre sur "NISIP 0.0.0.0". Cela signifie que toutes les demandes, quelle que soit l'interface réseau, recevront une réponse.
Le paramètre "NISPORT" définit le port sous lequel les informations du serveur peuvent être récupérées. Vous devez le laisser inchangé à la valeur "3551".
Vous enregistrez ensuite cette configuration en appuyant sur "CTRL-X" et "J"...
...et entrez.
Vous devez maintenant indiquer à apcupsd qu'une configuration est disponible. Pour ce faire, ouvrez un autre fichier de configuration avec la commande suivante.
sudo nano /etc/default/apcupsd
Réglez le paramètre "ISCONFIGURED" sur...
..."oui" activé.
Vous enregistrez ensuite à nouveau cette configuration en appuyant sur "CTRL-X" et "J"...
...et entrez.
Le service apcupsd peut ensuite être démarré avec la commande suivante.
sudo /etc/init.d/apcupsd start
Si le programme a démarré avec succès, le tout devrait ressembler à ceci.
L'état actuel de l'UPS peut alors être affiché avec la commande « apcaccess status ». Si aucune connexion à l'onduleur ne peut être établie, la réponse ressemble à celle indiquée.
état d'accès apc
Dans le cas où la connexion à l'UPS peut être établie et les informations peuvent être lues, les informations affichées vous seront alors affichées.
Si vous avez besoin de redémarrer "apcupsd", entrez simplement la commande suivante.
sudo /etc/init.d/apcupsd redémarrage

Vous avez maintenant la possibilité d'afficher les informations de l'onduleur sur le RaspberryPi. Pour utiliser ces informations pour votre SmartHome, vous pouvez utiliser le NodeCode suivant.


Importer le code du nœud

Avec le NodeCode suivant, vous pouvez afficher quelques détails sur l'état actuel de votre onduleur. Ainsi, vous pouvez réagir individuellement à certaines propriétés.

Par exemple, il serait possible d'être averti d'une panne de courant via push bullet ou, comme dans l'exemple ci-dessous, d'afficher les données les plus importantes sur le tableau de bord. Pour que des messages push bullet puissent être envoyés en cas de panne de courant, vous devez bien sûr vous assurer que toute votre infrastructure réseau est également protégée par l'onduleur. Si la panne de courant est très étendue, bien sûr, cela n'aide pas non plus. Par conséquent, la communication via Internet en cas de panne de courant n'est bien sûr pas garantie.

Comment importer votre NodeCode dans votre configuration NodeRed est dans l'article NodeRed - importer et exporter le code du nœud décrit. Après l'importation, vous devrez peut-être également configurer le nœud pushbullet. Vous trouverez des informations à ce sujet dans l'article NodeRed - Envoyer des messages pushbullet sur les événements. Les nœuds du tableau de bord sont utilisés pour afficher les données de l'onduleur. Vous trouverez des informations à ce sujet dans l'article NodeRed - Créer une interface utilisateur avec des nœuds de tableau de bord.

Affichage de l'indicateur d'état de l'onduleur dans le tableau de bord.
Présentation de la configuration NodeCode dans l'interface de configuration 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"}]

Lecture d'un onduleur connecté à un Synology NAS

Si vous possédez un NAS Synology ou un NAS en général, la question de la perte de données est encore plus importante. Après tout, les photos de famille (ou une partie d'entre elles) ne doivent pas disparaître dans le nirvana des données en cas de panne de courant. C'est pourquoi de nombreux fabricants proposent la fonction de protection de leur propre NAS contre les pannes de courant avec un onduleur. L'onduleur est alors également connecté au NAS via USB afin de pouvoir informer d'un changement d'état. Si une panne de courant se produit alors, le NAS le reconnaît et s'éteint automatiquement et de manière contrôlée. Pratique et bon pour les données stockées sur le NAS. Dans le même temps, cependant, il n'est pas pratique que les autres participants au réseau n'apprennent rien de la situation (sauf que l'alimentation est coupée).

Au moins le NAS de Synology offre une solution pour cela : via un serveur UPS réseau intégré, l'état de l'UPS connecté au NAS peut également être enregistré par d'autres participants au réseau. De cette façon, vous pouvez finalement enregistrer l'état sur le RaspberryPi et donc aussi dans NodeRed.

Pour que le serveur UPS du réseau fonctionne, il doit d'abord être configuré. Pour ce faire, passez au Panneau de configuration de l'interface DiskStationManager(DSM)...
... et à la catégorie "Hardware & Energy". Là, vous cliquez sur l'onglet "UPS".
L'onduleur connecté doit déjà y être configuré. Dans ce cas, le NAS s'éteindra automatiquement 3 minutes après une panne de courant. Pour activer le serveur UPS réseau, cochez la case « Enable network UPS server » et cliquez sur le bouton « Approved DiskStation devices ».
Dans la fenêtre qui s'ouvre maintenant, vous pouvez saisir plusieurs adresses IP d'appareils de votre réseau autorisés à accéder aux informations du serveur UPS du réseau. Cette procédure dite de "liste blanche" garantit que seuls les participants autorisés au réseau peuvent recevoir ces informations. Dans ce champ, vous entrez l'adresse IP de votre RaspberryPi à partir de laquelle vous souhaitez lire l'état de l'onduleur via NodeRed, comme indiqué. Comment connaître l'adresse IP des appareils de votre réseau est dans l'article Afficher/connaître l'adresse IP des appareils du réseau décrit. Une fois que vous avez entré l'adresse IP, cliquez sur "OK"...
...et dans la fenêtre suivante, cliquez sur "Appliquer".

Installez le NetworkUpsTools(NUT) sur le RaspberryPi pour pouvoir récupérer les données UPS d'un serveur UPS

Maintenant que le serveur a été configuré pour fournir les informations sur l'onduleur, le côté client (c'est-à-dire votre RaspberryPi) doit bien sûr également être configuré en conséquence. Bien entendu, celui-ci doit également pouvoir contacter le serveur UPS du réseau sur votre NAS. Un programme qui rend cela possible est le "NetworkUpsTool", qui peut être installé comme suit.

Pour installer l'application "NUT", vous devez entrer la commande suivante.
écrou d'installation sudo aptitude

Un avis: Pour installer "NUT", vous avez besoin de l'extension "aptitude" pour le gestionnaire de packages "APT". S'il n'est pas déjà disponible, vous pouvez l'installer avec la commande suivante.

sudo apt-get install aptitude

Vous confirmez toutes les questions lors de l'installation avec un "y" et "Entrée". La plupart du temps (comme dans cet exemple), ces questions portent sur l'espace de stockage supplémentaire occupé par les outils à installer et si d'autres packages (requis) peuvent également être installés.

Après l'installation, "NUT" doit encore être configuré. Pour ce faire, ouvrez le fichier de configuration avec la commande suivante.
sudo nano /etc/nut/nut.conf
Dans le fichier de configuration qui est maintenant ouvert, utilisez les touches fléchées pour naviguer jusqu'à la ligne affichée.
Une fois là-bas, changez la ligne de "Mode=none" à "Mode=netclient". Cela indique à "NUT" d'agir en tant que client réseau pour un serveur UPS réseau.
mode=netclient
Vous enregistrez cette configuration en appuyant sur "CTRL-X" et "J"...
...et enfin "Entrée".
Maintenant, bien sûr, vous devez encore configurer l'adresse sous laquelle le serveur UPS du réseau peut être atteint. Pour ce faire, ouvrez un autre fichier de configuration avec la commande suivante.
sudo nano /etc/nut/upsmon.conf
Ensuite, utilisez les touches fléchées pour naviguer jusqu'à ce que vous atteigniez la ligne spécifiée. La ligne « MONITOR ups@*IP-ADRESSE-EURER-NAS* 1 monuser secret slave » doit y être insérée. Bien entendu, *IP-ADDRESS-YOUR-NAS* doit être remplacé par l'adresse IP de votre serveur UPS réseau, c'est-à-dire votre NAS. C'est le seul moyen pour NUT de savoir où obtenir les informations de l'UPS.
MONITOR ups@*IP-ADDRESS-YOUR-NAS* 1 esclave secret monuser
Vous enregistrez ensuite à nouveau cette configuration en appuyant sur "CTRL-X" et "J"...
...et enfin "Entrée".
Pour que les modifications apportées au fichier de configuration prennent effet, il vous suffit de redémarrer le client NUT. Cela peut être fait avec la commande "sudo service nut-client restart".
redémarrage du client nut du service sudo
En utilisant la commande "sudo upsc ups@*IP-ADDRESS-YOUR-NAS*", vous pouvez maintenant récupérer les informations actuelles sur votre UPS à partir du serveur UPS du réseau. Bien entendu, *IP-ADDRESS-YOUR-NAS* doit être remplacé par l'adresse IP de votre serveur UPS réseau, c'est-à-dire votre NAS.
sudo upsc ups@*IP-ADDRESS-YOUR-NAS*
Les informations vous seront alors affichées selon le modèle spécifié. Par exemple, l'état de charge, le modèle et différentes tensions sont affichés.

Importer le code du nœud

Avec le NodeCode suivant, vous pouvez afficher quelques détails sur l'état actuel de votre onduleur connecté à votre Synology NAS. Ainsi, vous pouvez réagir individuellement à certaines propriétés.

Par exemple, il serait possible d'être averti d'une panne de courant via push bullet ou, comme dans l'exemple ci-dessous, d'afficher les données les plus importantes sur le tableau de bord. Pour que des messages push bullet puissent être envoyés en cas de panne de courant, vous devez bien sûr vous assurer que toute votre infrastructure réseau est également protégée par l'onduleur. Si la panne de courant est très étendue, bien sûr, cela n'aide pas non plus. Par conséquent, la communication via Internet en cas de panne de courant n'est bien sûr pas garantie.

Comment importer votre NodeCode dans votre configuration NodeRed est dans l'article NodeRed - importer et exporter le code du nœud décrit. Après l'importation, vous devrez peut-être également configurer le nœud pushbullet. Vous trouverez des informations à ce sujet dans l'article NodeRed - Envoyer des messages pushbullet sur les événements. Les nœuds du tableau de bord sont utilisés pour afficher les données de l'onduleur. Vous trouverez des informations à ce sujet dans l'article NodeRed - Créer une interface utilisateur avec des nœuds de tableau de bord.

Affichage de l'indicateur d'état de l'onduleur dans le tableau de bord.
Présentation de la configuration NodeCode dans l'interface de configuration 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"}]

Informations Complémentaires

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


Amusez-vous avec le projet

J'espère que tout a fonctionné comme décrit. Si ce n'est pas le cas ou si vous avez des questions ou des suggestions, faites-le moi savoir dans les commentaires. Je les ajouterai à l'article si nécessaire.
Les idées de nouveaux projets sont toujours les bienvenues. 🙂

PS Beaucoup de ces projets - en particulier les projets matériels - coûtent beaucoup de temps et d'argent. Bien sûr, je le fais parce que j'aime ça, mais si vous pensez que c'est cool que je partage l'information avec vous, je serais heureux d'un petit don au fonds du café. 🙂

Achetez-moi un café sur ko-fi.com       

Kommentar hinterlassen

Votre adresse e-mail ne sera pas publiée. Erforderliche Felder sind mit * markiert

Ce site utilise Akismet pour réduire les spams. Découvrez comment les données de vos commentaires sont traitées.