lancer scipt python en sudo a partir programme python

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Répondre
ttitoupoulpe
Messages : 12
Enregistré le : lun. 7 sept. 2015 21:01

lancer scipt python en sudo a partir programme python

Message par ttitoupoulpe » dim. 11 oct. 2015 10:13

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

zeverybest
Raspinaute
Messages : 136
Enregistré le : sam. 18 oct. 2014 19:09

Re: lancer scipt python en sudo a partir programme python

Message par zeverybest » lun. 12 oct. 2015 08:54

En quel langage est ton interface graphique?

Est ce un interface WEB?

Le PHP fonctionne tres bien pour ça

Avatar du membre
ComteZera
Messages : 40
Enregistré le : dim. 10 mai 2015 18:49
Localisation : BZH (29)

Re: lancer scipt python en sudo a partir programme python

Message par ComteZera » lun. 12 oct. 2015 18:40

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 :)

ttitoupoulpe
Messages : 12
Enregistré le : lun. 7 sept. 2015 21:01

Re: lancer scipt python en sudo a partir programme python

Message par ttitoupoulpe » lun. 12 oct. 2015 20:35

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

Avatar du membre
vague nerd
Modérateur
Messages : 1471
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: lancer scipt python en sudo a partir programme python

Message par vague nerd » mar. 13 oct. 2015 19:00

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 :

Code : Tout sélectionner

GPIO.output(25,GPIO.HIGH)
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.
Cordialement,

Vague Nerd

ttitoupoulpe
Messages : 12
Enregistré le : lun. 7 sept. 2015 21:01

Re: lancer scipt python en sudo a partir programme python

Message par ttitoupoulpe » mar. 13 oct. 2015 21:30

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

Code : Tout sélectionner

GPIO.output(25,HIGH)
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

Avatar du membre
vague nerd
Modérateur
Messages : 1471
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: lancer scipt python en sudo a partir programme python

Message par vague nerd » mar. 13 oct. 2015 22:00

Bonsoir.

Je vous proposai de lancer

Code : Tout sélectionner

GPIO.setmode (GPIO.BCM)
GPIO.setup(25,GPIO.OUT)
non pas dans le script lancé par le bouton, mais au début du programme.
Le code lancé par le bouton ne serais que :

Code : Tout sélectionner

GPIO.output(25,HIGH)
Explication : Il est possible que la commande

Code : Tout sélectionner

GPIO.setup(25,GPIO.OUT)
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 " '?

Code : Tout sélectionner

cmd= ' sudo python /home/pi/Desktop/allumer.py
Du coup, le sudo serait exécuté directement et non stocké dans la variable cmd qui est finalement passée au bouton...
Cdt.
Cordialement,

Vague Nerd

ttitoupoulpe
Messages : 12
Enregistré le : lun. 7 sept. 2015 21:01

Re: lancer scipt python en sudo a partir programme python

Message par ttitoupoulpe » mer. 14 oct. 2015 22:47

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

Avatar du membre
Manfraid
Modérateur
Messages : 1402
Enregistré le : ven. 3 oct. 2014 14:50
Contact :

Re: lancer scipt python en sudo a partir programme python

Message par Manfraid » jeu. 15 oct. 2015 19:04

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)

NAS : DIY OS Debian: DD250Go + 3x2To + 6To
Raspberry pi : 2B OS : Raspbian
Se tromper est humain, Vraiment foutre la merde nécessite le mot de passe de root.

ttitoupoulpe
Messages : 12
Enregistré le : lun. 7 sept. 2015 21:01

Re: lancer scipt python en sudo a partir programme python

Message par ttitoupoulpe » jeu. 15 oct. 2015 20:37

Salut Manfred

Merci beaucoup pour l'info ,ça fonctionne parfaitement

cordialement :D

Répondre

Retourner vers « Python »