Bonjour
Ayant acheté un onduleur APC, j’étudie en ce moment ce pluging et le programme apcupsd.
La documentation d’ apcupsd est très riche : APCUPSD User Manual.
J’ ai connecté l’onduleur en USB sur mon NUC Proxmox qui heberge Jeedom et Nexcloud.
Sur ma Free Delta j’ai 2 VM Debian, Adguard home et Heimdall.
Sur chacune des VM j’ai installé apcupsd sauf sur Nexcloud.
l’apcupsd du Proxmox est le serveur, les apcupsd des autres VM sont paramétrés en client (slave) et en serveur ce qui permet de les superviser sous Jeedom.
L’ordre d’arrêt des VM et du NUC Proxmox est déclenché dès q’une des 3 conditions est vraie:
- Le pourcentage de capacité restante de la batterie en %
- Le temps estimé de fonctionnement restant de l’onduleur en minutes
- Un temps de fonctionnement maximum sur batterie paramétré en secondes
J’ai donc paramétrer ces 3 paramètres dans chaque /etc/apcups.conf des VM et Proxmox.
Il faut donc séquencer l’arrêt des machines, le NUC Proxmox en dernier.
J’utilise le dernier paramètre pour les tests, en fonctionnement le temps est à 0.
N’ayant pas la remontée de ces 3 paramètres dans Jeedom j’ai modifié le plugin :
Désactiver le plugin avant modification.
Sauvegarder tout le plugin.
Le répertoire du plugin est : /var/www/html/plugins/apcups/
Fichier modifié : /core/class/apcups.class.php
Après le bloc de code suivant:
public function postSave() {
$apcupsCmd = $this->getCmd(null, 'status');
if (!is_object($apcupsCmd)) {
log::add('apcups', 'debug', 'Création status');
$apcupsCmd = new apcupsCmd();
$apcupsCmd->setName(__('Statut', __FILE__));
$apcupsCmd->setEqLogic_id($this->id);
$apcupsCmd->setLogicalId('status');
$apcupsCmd->setType('info');
$apcupsCmd->setSubType('string');
$apcupsCmd->save();
}
Ajout de :
$apcupsCmd = $this->getCmd(null, 'mbattchg');
if (!is_object($apcupsCmd)) {
log::add('apcups', 'debug', 'Création mbattchg');
$apcupsCmd = new apcupsCmd();
$apcupsCmd->setName(__('Trigger charge batterie', __FILE__));
$apcupsCmd->setEqLogic_id($this->id);
$apcupsCmd->setLogicalId('mbattchg');
$apcupsCmd->setType('info');
$apcupsCmd->setSubType('numeric');
$apcupsCmd->setUnite('%');
$apcupsCmd->save();
}
$apcupsCmd = $this->getCmd(null, 'mintimel');
if (!is_object($apcupsCmd)) {
log::add('apcups', 'debug', 'Création mintimel');
$apcupsCmd = new apcupsCmd();
$apcupsCmd->setName(__('Trigger temps sur batterie', __FILE__));
$apcupsCmd->setEqLogic_id($this->id);
$apcupsCmd->setLogicalId('mintimel');
$apcupsCmd->setType('info');
$apcupsCmd->setSubType('numeric');
$apcupsCmd->setUnite('mn');
$apcupsCmd->save();
}
$apcupsCmd = $this->getCmd(null, 'maxtime');
if (!is_object($apcupsCmd)) {
log::add('apcups', 'debug', 'Création maxtime');
$apcupsCmd = new apcupsCmd();
$apcupsCmd->setName(__('Trigger temps fonctionnement batterie', __FILE__));
$apcupsCmd->setEqLogic_id($this->id);
$apcupsCmd->setLogicalId('maxtime');
$apcupsCmd->setType('info');
$apcupsCmd->setSubType('numeric');
$apcupsCmd->setUnite('s');
$apcupsCmd->save();
}
fichier : /core/il8n/tr.json
Après la ligne : « Puissance fournie »: « Puissance fournie »,
Ajout de :
"Trigger charge batterie": "Trigger charge batterie",
"Trigger temps sur batterie": "Trigger temps sur batterie",
"Trigger temps fonctionnement batterie": "Trigger temps fonctionnement batterie",
fichier : /core/il8n/fr_FR.json
Après la ligne : « Puissance fournie »: « Puissance fournie »,
Ajout de :
"Trigger charge batterie": "Trigger charge batterie",
"Trigger temps sur batterie": "Trigger temps sur batterie",
"Trigger temps fonctionnement batterie": "Trigger temps fonctionnement batterie",
Activer le plugin.
Les 3 nouvelles commandes info seront disponibles dans les commandes de l’équipement.
Pour connaitre le nom des variables disponibles en CLI: sudo apcaccess status
Les 3 commandes rajoutées: MBATTCHG, MINTIMEL, MAXTIME
Attention, un minimum de savoir faire sous Linux est conseillé, ces modifications sont expérimentales.
Je conseille aussi de lire le manuel d’apcupsd, c’est toujours intéressant de connaitre ce qu’il y a sous le capot.
Je tiens à remercier Lunarok pour ce plugin.