IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Python sur page web php


Sujet :

Réseau/Web Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Python sur page web php
    Bonjour à tous,

    Je suis novice en Python et j'aimerais exécuter un script Python sur une page web en PHP. Ce script me permet de lire les données envoyées par ma Arduino Uno sur le port USB de mon PC. Lorsque je l'exécuter sur le terminal Ubuntu ça fonctionne parfaitement.

    J'ai crée un répertoire dans var/www en localhost pour tester le script python sur une interface web. J'ai mis à l'intérieur le script PHP + Python. Je leur est donné les droits chmod 777.

    Script PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <html> 
    <body> 
     
    <?php
    $output = shell_exec('python humidite.py');
    echo "<pre>$output</pre>";
    ?>
     
    </body> 
    </html>
    Script Python :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #!/usr/bin/python
     
    import serial
    import time
     
    locations=['/dev/ttyACM0']
     
    for device in locations:
        try:
            ser = serial.Serial(device, baudrate=9600, timeout=1, writeTimeout=1)
            while True:
                ligne = ser.readline()
                print ligne
     
        except:
            print "Echec de connexion sur", device
    Mais ça m'affiche sur ma page web : Echec de connexion sur /dev/ttyACM0

    D'où vient le problème svp ?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    L'erreur est remontée par le script Python: c'est une bonne nouvelle, il s'exécute!
    Si vous vous êtes assuré que ce script fonctionne depuis une console, ce n'est plus un problème de codage mais de contexte d'exécution de "serial.Serial(device, baudrate=9600, timeout=1, writeTimeout=1)".
    "except" devrait retourner une erreur beaucoup plus précise: si vous ne l'affichez pas, çà n'aide pas a comprendre "pourquoi" çà plante.

    Faites attention aussi au "while True" qui suit.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Désolé wiztricks je n'ai pas compris ce que vous vouliez me dire. J'ai trouvé ce script Python sur internet. C'est la 1ère fois que j'utilise le Python donc je ne connais pas du tout ce code.

    "except" devrait retourner une erreur beaucoup plus précise: si vous ne l'affichez pas, çà n'aide pas a comprendre "pourquoi" çà plante.

    Faites attention aussi au "while True" qui suit.

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Cela veut dire que l'erreur affichée est le texte écrit dans le code et non pas la cause de l'erreur.

    essaye en modifiant comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        except Exception as why:
            print "Echec de connexion : %s" % why
    et copie-colle ici le texte complet de l'erreur.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Ça m'affiche donc maintenant :

    Echec de connexion : could not open port /dev/ttyACM0: [Errno 13] Permission denied: '/dev/ttyACM0'

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    J'ignore si ça a un rapport mais j'ai le même cas.

    Sur une machine et celle-là seulement, je connecte mon gps et pour lire son contenu avec gpsbabel je dois d'abord faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sudo chown vincent /dev/ttyUSB0
    et uniquement avec ce gps jamais avec d'autres appareils.

    Je n'ai jamais cherché à savoir pourquoi.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    C'est bon j'ai réussi à afficher les 15 premières mesures de mon capteurs d'humidité sur ma page web en PHP. J'ai résolu le problème de permission

    Mais j'aimerais que ça m'affiche que sur une seule ligne les mesures et que ça défile continuellement. Par exemple je ferais un script PHP où il y aura écris Humidité=....... et sur ces pointillés les mesures changeront. J'espère que je me suis fait comprendre :p A votre avis c'est faisable en modifiant le script Python ou PHP ?

    Voici mon nouveau script Python :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #!/usr/bin/python
     
    import serial
    import time
     
    locations=['/dev/ttyACM0']
     
    for device in locations:
        try:
            ser = serial.Serial(device, baudrate=9600, timeout=1, writeTimeout=1)
            for _ in range(15):
                ligne = ser.readline()
                print ligne
     
        except Exception as why:
            print "Echec de connexion : %s" % why

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Il faut utiliser stdout.flush

    Comme indiqué ici:
    http://www.developpez.net/forums/d14...t/#post7770331

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Il faut utiliser stdout.flush

    Comme indiqué ici:
    http://www.developpez.net/forums/d14...t/#post7770331
    Voila donc mon nouveau Script Python avec stdout.flush :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #!/usr/bin/python
     
    import serial
    import time
     
    locations=['/dev/ttyACM0']
     
    for device in locations:
        try:
            ser = serial.Serial(device, baudrate=9600, timeout=1, writeTimeout=1)
            from sys import stdout
            import time
            for i in range(100):
                ligne = ser.readline()
                print "\r.............%s" %i,
                stdout.flush()
                time.sleep(0.1)
     
        except Exception as why:
                import pwd, os
                print "Echec de connexion : %s" % why
                print "whoami:", pwd.getpwuid(os.getuid())[0]
    Mais ça m'affiche sur 100 lignes sur ma page en PHP :

    .............0
    .............1
    .............2
    .............3
    .............4
    .............5
    .............6
    .............7
    .............8
    .............9
    .............10
    .............11
    .............12
    .............13
    .............14
    .............15
    .............16
    .............17
    .............18
    .............19
    .............20

  10. #10
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Peu pas le reproduire.

    Je suppose que la différence vient du fait que la syntaxe est conçue pour un shell et que tu l'utilises dans une page php.

    Voir la doc de php.

  11. #11
    Membre averti
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Points : 413
    Points
    413
    Par défaut
    Bonjour,
    Je suis novice en HTML et php (enfin tout ce qui touche directement aux pages web) mais j'ai quelques bases. Je suis étonné que ce soit possible de lancer un fichier (tel qu'un script python) depuis un script php dans un html qui sera lancée par un navigateur. Comment fait-on exactement ? Je serais assez intéressé de voir comment c'est possible d'exécuter un script python, j'ai testé ces méthodes mais avec Google Chrome et Firefox ça ne marchait pas, on dirait les commandes ne s'exécutaient pas.
    Merci d'avance de vos réponses !
    Bouddha : Tout n'est qu'illusion en ce bas monde.
    Jésus : Tout est amour divin.
    Einstein : Tout est relatif dans cet espace-temps.
    Moi : Tout est binaire sur ce forum.

Discussions similaires

  1. Applet python sur page web
    Par atalon1 dans le forum Réseau/Web
    Réponses: 25
    Dernier message: 12/03/2009, 16h38
  2. Réponses: 2
    Dernier message: 12/02/2006, 18h43
  3. Lecteur Multimedia sur page Web
    Par beegeesman dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 17/01/2006, 00h15
  4. ShellExecute - Access Denied sur page web
    Par Neilos dans le forum C++Builder
    Réponses: 7
    Dernier message: 03/10/2005, 12h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo