Radio Internet avec mpg123 sur PiZero et un seul bouton

Bonjour à tous. Novice en Python… Voilà j’ai un Pi zéro sur lequel j’ai câblé un bouton sur le GPIO et je veux activer à chaque appui sur le bouton la lecture d’un nouveau flux mp3 de WebRadio. LA détection du bouton est ok. Le lancement de la première WebRadio est OK. Mais quand j’appuie à nouveau sur le bouton, je ne sais pas tuer le processus mpg123 en cours sur le premier flux. J’ai pourtant utilisé le concept de « subprocess » et j’ai essayé d’obtenir le PID de ce subprocess pour le « Killer » avant de lancer le suivant. Mais rien à faire … Je bloque et mes compétences sont trop limitées alors j’ai pensé que vous pourriez m’aider.
Voici le début de mon script Python :
#!/usr/bin/python

-- coding: utf-8 --

import os, signal
import RPi.GPIO as GPIO
import subprocess
import time
GPIO.setmode(GPIO.BOARD)
butPin = 11
GPIO.setup(butPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
Niveau = GPIO.input(butPin)
i=100
try:
while 1:
if GPIO.input(butPin):
print (i)
print(« Broche 11 contact ouvert »)
else:
# print(« Broche 11 contact fermé »)
i = i+1
if (i==101):
p1=subprocess.Popen(‹ /home/shares/public/disk1/Radios/Chillout.sh ›, shell=True )
pid = p1.pid
os.system( ‹ ps aux › )
print (pid)
time.sleep(20)
else:
if (i==102):
os.kill(pid, signal.SIGSTOP)
p2=subprocess.Popen( ‹ /home/shares/public/disk1/Radios/EuropaPlus.sh ›, shell=True )
pid = p2.pid
os.system( ‹ ps aux › )
print (pid)
time.sleep(20)
else:
if (i==103):
os.kill(pid, signal.SIGSTOP)
p3=subprocess.Popen( ‹ /home/shares/public/disk1/Radios/Europe1.sh ›, shell=True )
pid = p3.pid
print (pid)
time.sleep(3)
else:
if (i==104):
os.kill(pid, signal.SIGSTOP)
p4=subprocess.Popen( ‹ /home/shares/public/disk1/Radios/FranceInfo.sh ›, shell=True )
pid = p4.pid
print (pid)
time.sleep(3)
else:
if (i==105):
os.kill(pid, signal.SIGSTOP)
p5=subprocess.Popen( ‹ /home/shares/public/disk1/Radios/FranceInter.sh ›, shell=True )

etc etc …
et les scripts bash de mes sous process sont par exemple :
#!/bin/bash

ecouter Chillout RAdio

mpg123 http://mp3channels.webradio.antenne.de/chillout&

Voilà je suis refait ! Grrr ça m’énerve …

Bonjour et bienvenue,

Sans chercher plus que ça, SIGSTOP est peut être trop gentil ? Essayer SIGKILL ?
Sinon, il a peut être un problème pour retrouver le bon numéro de process essayer avec psutil (voir réponse 217 avec PROCNAME=« mpg123 »)

A+