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?
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.
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)
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.