Page 1 sur 1
lancer scipt python en sudo a partir programme python
Posté : dim. 11 oct. 2015 10:13
par ttitoupoulpe
Bonjour ,
Je suis débutant avec python et je cherche a commander une LED a partir d'un interface graphique (enfin juste un bouton).
Le probleme est que ma led s'allume sans meme avoir cliqué sur le bouton ,des que le programme demarre la led s'allume .
J'ai vraiment besoin d'aide sur ce truc
voici mon code button.py :
Code : Tout sélectionner
from Tkinter import*
import os
cmd= ' sudo python /home/pi/Desktop/allumer.py
fenetre = Tk()
button = Button(fenetre, text = 'allumer' ,command= os.system(cmd))
button.pack
button.mainloop()
et voici mon code allumer.py :
Code : Tout sélectionner
import Rpi as GPIO
GPIO.setmode(BCM)
GPIO.setup(25,GPIO.OUT)
GPIO.output(25,GPIO.HIGH)
je vous remercie par avance pour l'aide que vous pourrez m'apporter
Re: lancer scipt python en sudo a partir programme python
Posté : lun. 12 oct. 2015 08:54
par zeverybest
En quel langage est ton interface graphique?
Est ce un interface WEB?
Le PHP fonctionne tres bien pour ça
Re: lancer scipt python en sudo a partir programme python
Posté : lun. 12 oct. 2015 18:40
par ComteZera
Bonjour,
Est-ce que tu commences ton programme par éteindre la LED ?
Si le programme que tu as fait contient uniquement les lignes du dessus, tu ne l'éteins jamais ...
Sinon, c'est très bien de programmer en Python, cela fait très longtemps que j'en ai pas fait, mais de mémoire l'interface graphique avec TKinter était relativement simple pour commencer
Re: lancer scipt python en sudo a partir programme python
Posté : lun. 12 oct. 2015 20:35
par ttitoupoulpe
Bonjour
merci pour votre aide
mon interface graphique est en python j'utilise le module Tkinter.
non je n’éteins pas la LED mais elle ne devrait pas s'allumer non plus tant que je n'ai pas appuyé sur le bouton ,non ? mais je ne sais pas ou insérer une commande pour éteindre la led.
Merci
Re: lancer scipt python en sudo a partir programme python
Posté : mar. 13 oct. 2015 19:00
par vague nerd
Bonjour.
non je n’éteins pas la LED mais elle ne devrait pas s'allumer non plus tant que je n'ai pas appuyé sur le bouton ,non ?
Si je ne m'abuse, les gpio sont à HIGH au démarrage du pi. Il faut donc commencer par les passer à LOW (eteindre la led, quoi!)
mais je ne sais pas ou insérer une commande pour éteindre la led.
Au début du programme, au moment d'initialiser les GPIO en sortie.Avant la boucle.
Pour ma part, j'aurai commencé le programme par :
Code : Tout sélectionner
GPIO.setmode(BCM)
GPIO.setup(25,GPIO.OUT)
GPIO.output(25,GPIO.LOW)
Le code exécuté par le bouton ne reprenant que :
Sinon, vous pouvez passer au Toggle Button (un bouton qui reste enfoncé jusqu'a ce que l'on re-clique dessus) : bouton enfoncé, led allumée, bouton relevé, led eteinte.
En provenance de
ça:
Code : Tout sélectionner
def toggle_button_callback(widget, data):
if widget.get_active():
# If control reaches here, the toggle button is down
else:
# If control reaches here, the toggle button is up
Cdt.
Re: lancer scipt python en sudo a partir programme python
Posté : mar. 13 oct. 2015 21:30
par ttitoupoulpe
Bonjour vague nerd et merci
Au démarrage du pi les GPIO sont sur low, la LED est éteinte si je lance juste :
Code : Tout sélectionner
import RPi.GPIO as GPIO
GPIO.setmode (GPIO.BCM)
GPIO.setup(25,GPIO.OUT)
or si je rajoute la ligne
Ma LED s'allume dés le lancement du programme avant même de d'actionner le bouton, c'est bien que le programme effectue le code même
avant que j'actionne le bouton ?
cdt
Re: lancer scipt python en sudo a partir programme python
Posté : mar. 13 oct. 2015 22:00
par vague nerd
Bonsoir.
Je vous proposai de lancer
non pas dans le script lancé par le bouton, mais au début du programme.
Le code lancé par le bouton ne serais que :
Explication : Il est possible que la commande
passe le pin à HIGH... je ne suis plus sûr, mais c'est facile à vérifier ![/strike]
EDIT : peu importe. En relisant le thread, je me rend compte que je me suis fourvoyé (m'enfin si vous pouvez me confirmer/infirmer le coup du HIGH par défaut en configurant un pin en sortie, ça m'évite une recherche !).
Cette ligne de code n'aurait pas un soucis de ' et/ou de " '?
Du coup, le sudo serait exécuté directement et non stocké dans la variable cmd qui est finalement passée au bouton...
Cdt.
Re: lancer scipt python en sudo a partir programme python
Posté : mer. 14 oct. 2015 22:47
par ttitoupoulpe
Bonsoir
je confirme que si je paramètre une GPIO en sortie elle est par défaut sur LOW .
pour ma variable cmd si je la rentre directement dans la commande du bouton comme ceci :
button = Button(fenetre, text = 'allumer' ,command= os.system(' sudo /home/pi/desktop/allumer.py))
le problème reste le meme.
Merci
cordialement
Re: lancer scipt python en sudo a partir programme python
Posté : jeu. 15 oct. 2015 19:04
par Manfraid
Salut
Ceci est un comportement normal la fonction os.système appelle directement la commande
Il faut faire comme ceci
Code : Tout sélectionner
Def allume():
os.system(' sudo /home/pi/desktop/allumer.py')
button = Button(fenetre, text = 'allumer' ,command= allume)
Re: lancer scipt python en sudo a partir programme python
Posté : jeu. 15 oct. 2015 20:37
par ttitoupoulpe
Salut Manfred
Merci beaucoup pour l'info ,ça fonctionne parfaitement
cordialement