Utiliser dans un scenario la valeur de espace disque libre dans Santé

Bonjour à tous,

Je suis bloqué depuis quelques jours par un pb et je n’arrive pas à trouver de solution sur le forum. Mon Jeedom, depuis bientôt 10 ans ( août 2016), tourne comme une horloge sur un petit NUC de récupération basé sur un Céléron ( seule appli sur ce NUC). Je suis depuis 2 ans sous Debian 11 et avec la version 4.5.2 de Jeedom depuis 10 jours :wink:

Lors de mon dernier upgrade de version Debian j’ai fait la bêtise d’installer var, home, … sur des partitions différentes en choisissant les tailles par défaut.

Ce qui fait qu’à deux reprises ma partition var s’est trés vite remplie à cause des log de z2m que j’avais laissés involontairement sur Debug.

A la suite du premier incident j’ai mis une surveillance sur la place disque disponible en utilisant « espace libre disque " du plugin " monitoring » mais ceci ne fonctionne pas car c’est la place dispo dans var qui compte, celle que l’on voit dans « espace disque libre » dans Santé.

J’en arrive à ma question certainement basique pour les pros de Jeedom. Comment récupérer cette valeur , « espace disque libre » , ou celle de la commande linux "df -k /var " pour l’utiliser dans un scénario ?

J’ai essayé de regarder dans le code du scenario génial de @ngrataloup (https://community.jeedom.com/u/ngrataloup)** pour monitorer la taille de la DB mais je n’ai pas les compétences pour l’adapter. ( Je précise que je suis un bille en php, juste capable de faire un copier/coller de lignes de code)

J’ai vraiment l’impression que je passe à côté d’une évidence et que je vais être rouge de honte quand j’aurais la réponse :hot_face:

Merci d’avance

Bonsoir,

Un bloc code dans un scénario pour créer des variables correspondant aux données de la page santé :

foreach (jeedom::health() as $datas) {
  $scenario->setLog($datas['name'].':'.$datas['result']);
  $scenario->setData($datas['name'], $datas['result']);
}
``
`

Ou pour créer une seule variable avec le % d’ espace disque libre

foreach (jeedom::health() as $datas) {
  if ($datas['name'] == 'Espace disque libre') {
     $scenario->setData('Espace disque libre',$datas['result'] );
     }
}
1 « J'aime »

Bonsoir Bonjour !!

Et Merci; ça marche. Je récupére une chaine de caractéres mais je sais ensuite faire.

Génial!!

Pour faire simple il suffit de créer une commande info virtuelle de type numérique et la valeur sera automatiquement convertie

Hum perso je pense que j’aurais évité de passer par une variable mais j’aurais directement mis à jour la commande info historisée d’un virtuel en php.

Ca ne sert à rien d’écrire dans une variable si elle ne sert qu’à mettre à jour une commande autant le faire directement :slight_smile:

1 « J'aime »

Salut,

Je ne sais pas quel plugin monitoring tu utilises plugin-monitoring ou plugin-monitoring2 mais normalement dans les deux cas tu peux passer une commande linux personnalisée.

Perso j’ai une commande qui me permet de suivre l’occupation du home de jeedom /var/www/html/

1 « J'aime »

Quelque chose comme ça ?

foreach (jeedom::health() as $datas) {
  if ($datas['name'] == 'Espace disque libre') {
  	 cmd::byString('#[Accessoires][TITI][Libre]#')->event($datas['result']);
     }
}
1 « J'aime »

Yep pas testé mais ça doit le faire :wink:

Ca évite les lectures/écritures inutiles surtout sur les stockages type carte SD.

Merci à vous deux.
J’ai maintenant deux solutions pour résoudre mon problème.

1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.