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

L’un des points faibles d’un système SmartHome dont on ne se rend vraiment compte qu’en cas de problème est « l’énergie ». Malheureusement, tous les capteurs, actionneurs et l'intelligence de contrôle qui les sous-tendent ne fonctionnent pas sur l'air et l'amour. Et même si l’énergie consommée par le système n’est pas très élevée et que les économies sont généralement supérieures à l’énergie « utilisée », l’alimentation en énergie reste indispensable. Autrement dit : 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.

Il existe le programme « Apcupsd » pour le Raspberry Pi, qui permet de lire l'état de votre UPS. Vous pouvez alors é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 UPS 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 Raspberry Pi

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

Un programme pouvant communiquer directement avec votre UPS connecté via USB est le programme « apcupsd », que vous installez avec la commande suivante.
sudo apt-get install apcupsd
Si vous demandez que le programme utilise de la mémoire supplémentaire, confirmez avec « Y ».
L'installation prend environ deux minutes.

Configurer Apcupsd

Avant de pouvoir utiliser « apcupsd », il faut bien entendu 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...
… accédez à la ligne affichée. Cela détermine le type de câble avec lequel l'onduleur est connecté à votre Raspberry Pi. Votre UPS est probablement connecté à votre Raspberry Pi via le port USB. C'est pourquoi vous définissez également ici « UPSCABLE usb ».
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'onduleur fonctionne via USB, vous devez maintenant éditer le paramètre « DEVICE ». Aucune valeur ne peut lui être attribuée. Pour ce faire, supprimez la partie affichée « /dev/ttsyS0 » à côté de « DEVICE ».
Cela devrait alors ressembler à ceci.
Vous pouvez maintenant définir quelques paramètres sur la façon dont apcupsd doit se comporter en cas de panne de courant. Par exemple, le paramètre « BATTERYLEVEL » peut être utilisé pour configurer le RaspberryPi pour qu'il s'éteigne lorsque l'onduleur a une charge restante de 5%.
Le paramètre « MINUTES » indique le temps de fonctionnement restant en minutes auquel le RaspberryPi doit être arrêté.
Avec le paramètre « NETSERVER », vous pouvez activer un serveur réseau qui met à disposition les informations de l'onduleur via le réseau. Cela signifie qu'en cas de panne de courant, d'autres participants au réseau peuvent également réagir et, par exemple, s'arrêter. Pour activer le serveur réseau, vous devez définir le paramètre sur « NETSERVER on ».
Vous pouvez utiliser le paramètre « NISIP » pour définir l'adresse IP que le serveur « écoute ». Cela n'est nécessaire que si vous disposez de plusieurs interfaces réseau sur le système en question. Par exemple, sur un Raspberry Pi, vous pouvez le configurer pour que le serveur réponde uniquement 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 recevront une réponse, quelle que soit l'interface réseau.
Le paramètre « NISPORT » précise le port sous lequel les informations du serveur sont accessibles. Vous devez laisser cela inchangé à la valeur « 3551 ».
Vous sauvegardez ensuite cette configuration en appuyant sur « CTRL-X » et « J »…
…et « Entrer ».
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
Pour cela, réglez le paramètre « ISCONFIGURED » sur…
…"Oui".
Vous pouvez ensuite sauvegarder à nouveau cette configuration en appuyant sur « CTRL-X » et « J »…
…et « Entrer ».
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'onduleur peut ensuite être affiché à l'aide de la commande « apcaccess status ». Si une connexion à l'onduleur ne peut pas ê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 devez 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 « Matériel & Énergie ». 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 « Activer le serveur UPS réseau » et cliquez sur le bouton « Périphériques DiskStation approuvés ».
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. Ce processus dit de « liste blanche » garantit que seuls les participants autorisés au réseau peuvent recevoir ces informations. Dans ce champ, vous saisissez l'adresse IP de votre RaspberryPi à partir de laquelle vous souhaitez lire l'état de l'UPS via NodeRed, comme indiqué. Comment connaître l'adresse IP des appareils de votre réseau se trouve dans l'article Afficher/connaître l'adresse IP des appareils du réseau décrit. Une fois l’adresse IP renseignée, 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 est configuré pour fournir les informations UPS, 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 réseau UPS de 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 la gestion des packages « APT ». Celui-ci peut être installé – s’il n’est pas déjà disponible – avec la commande suivante.

sudo apt-get install aptitude

Si vous avez des questions lors de l'installation, confirmez avec « y » et « Enter ». La plupart du temps (comme dans cet exemple), ces questions portent sur la question de savoir si un espace de stockage supplémentaire est requis par les outils à installer et si des packages supplémentaires (obligatoires) 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 sur place, remplacez la ligne « Mode=none » par « Mode=netclient ». Cela indique à « NUT » d'agir en tant que client réseau pour un serveur UPS réseau.
mode=netclient
Vous sauvegardez cette configuration en appuyant sur « CTRL-X » et « J »…
…et enfin cliquez sur « Entrer ».
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
Naviguez ensuite avec les touches fléchées jusqu'à arriver à la ligne spécifiée. La ligne « MONITOR ups@*IP-ADDRESS-EURER-NAS* 1 monuser secret slave » doit y être insérée. Bien entendu, *IP-ADDRESS-EURER-NAS* doit être remplacé par l'adresse IP de votre serveur UPS réseau, c'est à dire de votre NAS. C'est le seul moyen pour NUT de savoir où obtenir les informations UPS.
MONITOR ups@*IP-ADDRESS-YOUR-NAS* 1 esclave secret monuser
Vous pouvez ensuite sauvegarder à nouveau cette configuration en appuyant sur « CTRL-X » et « J »…
…et enfin cliquez sur « Entrer ».
Pour que les modifications du fichier de configuration soient appliquées, il 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
À l'aide de la commande « sudo upsc ups@*IP-ADDRESS-EURER-NAS* », vous pouvez désormais récupérer les informations actuelles sur votre UPS à partir du serveur UPS du réseau. Bien entendu, *IP-ADDRESS-EURER-NAS* doit être remplacé par l'adresse IP de votre serveur UPS réseau, c'est à dire de 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 indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.