[contourné] Réattribuer la led pwr pour surveiller un processus

Salut!
Nouveau sur RPI, quelques connaissances en programmation, notamment en python, et connaissances linux, pour situer.
Je voudrais réattribuer la led pwr pour surveiller un processus: si l’appli est lancée, elle est allumée, sinon pas.

J’ai trouvé comment passer la led en gpio:

echo gpio | sudo tee /sys/class/leds/led1/trigger
ou mettre [gpio] entre crochet à la main dans le fichier

J’ai aussi un script fonctionnel qui détecte si le processus est lancé ou non:

import psutil
exists = False
for p in psutil.process_iter():
    try:
        pi = p.as_dict(attrs=['pid', 'name'])
    except:
        pass
 
    else:
        if pi['name'] == 'nom_processus':
            exists = True
            print("led on")
            break
 
if not exists:
    print("led off")

Déjà, je ne connais pas l’adresse gpio de la led.

Et surtout, je ne sais pas comment créer un observateur en python pour surveiller ce processus. Vous avez une piste?

Bonjour,

Faire clignoter la led PWR semble possible que depuis le RPI3B+. Perso, je ne trouve pas très judicieux d’utiliser cette led alors qu’il y a une floppée de ports GPIO disponibles.

Pour faire un obervateur, inclure la boucle « for » du script dans une boucle « while true » avec une temporisation (time.sleep) par exemple. A la place du print envoyer une commande GPIO.

A+

merci jelopo:
c’est juste que je ne voulais pas avoir un sapin de noël, et du moment qu’une led est allumée, autant qu’elle m’indique que tout est lancé, d’autant que j’ai quelques souci de boot, parfois il ne démarre pas. Je soupçonne un manque de courant, il y a un HDD branché, mais mon alim est à 2A tout de même. Enfin, autre sujet…

je vais faire le truc du sleep, très bien. J’imaginais un observateur objet, réflexe de scriptage javascript/java que j’utilise parfois.

j’ai trouvé ça pour attribuer un gpio à une des leds (pour pi3, à insérer dans /boot/config.txt):

dtoverlay=pi3-act-led,gpio=25

j’imagine que ça marche en remplaçant ‹ act › par ‹ pwr ›.

ah ben non:
en fait dtovelay attribue l’act-led à un GPIO si j’ai bien compris.
Donc il doit suffire de mettre [gpio] dans le trigger. Sauf que je ne connais pas le no GPIO pour la commander…
Par contre, ça ne fonctionne pas avec la pwr_led: si je change le trigger pour -> gpio, ça revient à [input] au démarrage.

bon, j’abandonne l’idée d’utiliser une des leds ACT ou PWR. Le système a changé sur le PI3 et c’est plus compliqué apparemment, même si c’est juste pour éteindre une des led, (ce qui m’arrangerais):

Je vais donc utiliser un GPIO standard.

Par contre, j’ai corrigé le script et il fonctionne bien, sauf que le processus n’apparaît plus dans la liste, alors que le deamon est bien lancé (deluged). Il n’est pas dans la liste psutils de python, ni dans la liste des processus (gestionnaire des tâches).
Etrange…

import psutil
import time
import RPi.GPIO as GPIO

LED = 17

GPIO.setmode(GPIO.BCM)
GPIO.setup(LED, GPIO.OUT)

while True:
    exists = False
    for p in psutil.process_iter():
        try:
            pi = p.as_dict(attrs=['pid', 'name'])
        except:
            pass
        else:
            #print(p) 
            if pi['name'] == 'deluged':
                exists = True
                break
    if exists:
        print("led on")
        GPIO.output(LED, True)
    if not exists:
        print("led off")
        GPIO.output(LED, False)

    time.sleep(2)

Bonjour,

Si il n’est pas dans la listes du gestionnaire de tâches, ce n’est pas la peine de le chercher dans Python.

Passer les lignes de commande, pour vérifier que le processus est bien en machine.

ps -aef | grep deluged
systemctl status deluged 

A+

merci jelopo. En fait je pense avoir compris:
la ligne du local.rc était:

sudo -u pi /usr/bin/python /usr/bin/deluged

donc le processus était python, et non deluged. Pourtant, au lancement, le processus deluged existait bel et bien quelques secondes.
j’essaye avec une LED sur un GPIO tout à l’heure.

Pour aller plus loin, il serait intéressant d’utiliser un script python avec deluged directement, histoire d’avoir plus d’infos, genre connexion, erreurs, etc.:

Bonjour,

C’est déja bien.
C’est vrai, avec UIClient il y aura des infos en plus sur l’état du processus.

A+

la nouvelle led fonctionne, tout va bien!
et j’ai éteint la PWR avec ça dans rc.local:

sudo sh -c 'echo 0 > /sys/class/leds/led1/brightness'

merci!

petit retour après quelques années d’utilisation: ce script fonctionne littéralement une fois sur deux, allez savoir pourquoi…