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

Raspberry Pi Discussion :

Télécommandes centralisées par le Raspberry pi Zero W


Sujet :

Raspberry Pi

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Points : 8
    Points
    8
    Par défaut Télécommandes centralisées par le Raspberry pi Zero W
    Bonjour,

    Je suis complètement nouveau sur ce forum et j'aurai 74 ans ce mois ci...
    Pardonnez moi si l'endroit n'est peut-être pas le plus approprié.

    Voici où j'en suis et ce qu'il me reste à faire.

    Mon Raspberry pi 0 W doté de cet accessoire : http://www.framboise314.fr/carte-pha...-raspberry-pi/ est maintenant parfaitement capable de remplacer plusieurs télécommandes infrarouges (Téléviseur, récepteur du câble, lecteur BluRay et switch HDMI pour choisir l'entrée appropriée et l'afficher sur la télé).

    Actuellement, je tape par exemple "tv" et "cnn" pour afficher CNN sur le téléviseur ou encore "dvd" et "play" pour lancer la lecture d'un DVD, "vup" ou "vdown" ou encore "mute" pour ajuster le volume sonore. Ces ordres sont en fait le nom de scripts bash qu'il suffit de taper sur le terminal du Raspberry que je vois sur les pc de mon réseau comme sur divers smartphones ou tablettes android à l'aide de JuiceSSH, une application gratuite qui fonctionne parfaitement pour cela.

    L'ennui, c'est que laisser taper n'importe quelle ligne de commande par des enfants ou des personnes peu initiées n'est évidemment pas très prudent...

    J'ai donc conçu une page html accessible par tout PC, smartphone ou tablette connecté sur mon réseau local. Cette page affiche tous les éléments de mon menu prédéterminé et eux seuls, sous forme cliquable. Il s'agit d'une page statique assez simple avec une série d'images illustrant mon menu.

    Pour l'heure, je voudrais qu'en cliquant sur une de ces images, cela lance le script bash approprié.

    C'est là que je suis bloqué, tout simplement par manque de connaissance de la programmation nécessaire.
    J'imagine que Python devrait apporter une solution mais il y a peut être plus simple encore.

    Merci de tout éclairage, simple si possible, pour construire ce dernier chaînon manquant.

    Merci aussi de m'avoir lu jusqu'ici.

    PS Dans une future étape, je verrais bien un message du genre "OK Google, mets CNN" ou encore "lance DVD" pour obtenir le même résultat...

  2. #2
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Salut,
    Comme tu as un serveur installé, est ce que PHP est pris en charge ?

    Je suis très rouillé dans tout ce qui est Web mais ça, ça doit fonctionner :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    // Affiche le nom d'utilisateur qui fait tourner le processus php/http
    // (sur un système ayant "whoami" dans le chemin d'exécutables)
    echo exec('whoami');
    ?>

    whoami est une commande shell connue de ton Raspberry. Si ça fonctionne, tu n'as plus qu'à mettre le chemin absolu de ton script shell.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  3. #3
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 617
    Points : 56 722
    Points
    56 722
    Billets dans le blog
    40
    Par défaut
    Hello,

    PHP, JavaScript, node.js... ou tout langage/framework permettant le développement web peut convenir (en python avec Flask, bottle ou CherryPy).

    Une solution intéressante serait d'utiliser la plateforme node-red qui est installée par défaut sur Raspbian. En rajoutant le module node-red-dashboard, on peut créer des interfaces web (graphiques, zones de texte, boutons, sliders, formulaires, sélecteurs, templates html et autres widgets...) à la souris avec peu de programmation (en JavaScript). Et il y a un nœud "exec" pour lancer des commandes.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Vincent PETIT Voir le message
    Salut,
    Comme tu as un serveur installé, est ce que PHP est pris en charge ?

    Je suis très rouillé dans tout ce qui est Web mais ça, ça doit fonctionner :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    // Affiche le nom d'utilisateur qui fait tourner le processus php/http
    // (sur un système ayant "whoami" dans le chemin d'exécutables)
    echo exec('whoami');
    ?>

    whoami est une commande shell connue de ton Raspberry. Si ça fonctionne, tu n'as plus qu'à mettre le chemin absolu de ton script shell.
    Merci Vincent,
    Effectivement PHP est bien installé sur mon système et phpinfo() me renvoie tous les détails de ma configuration.
    La ligne de commande whoami, comme d'ailleurs mon script bash tv fonctionnent bien sur l'ensemble des dossiers de mon système.

    Par contre, au risque de paraître un peu stupide , je ne vois pas bien comment intégrer ta suggestion dans ma page web. Dans le but d'appeler mon script bash tv, j'ai essayé diverses variantes du genre :
    "<a href=<?php echo exec('tv') ?><img src="tv.jpg"></a>" (où il semble manquer un caractère ">") et bien sûr "<a href=<?php echo exec('whoami') ?><img src="tv.jpg"></a>" mais cela m'indique à chaque fois "Votre fichier est introuvable".

    Bien sûr, je poursuis mes investigations mais l'éclairage d'un expert me sera sûrement d'un grand secours.

    Citation Envoyé par f-leb Voir le message
    Hello,

    PHP, JavaScript, node.js... ou tout langage/framework permettant le développement web peut convenir (en python avec Flask, bottle ou CherryPy).

    Une solution intéressante serait d'utiliser la plateforme node-red qui est installée par défaut sur Raspbian. En rajoutant le module node-red-dashboard, on peut créer des interfaces web (graphiques, zones de texte, boutons, sliders, formulaires, sélecteurs, templates html et autres widgets...) à la souris avec peu de programmation (en JavaScript). Et il y a un nœud "exec" pour lancer des commandes.
    Merci f-leb
    Je poursuis aussi mes investigations sur les pistes que tu recommandes.
    De toute façon, je posterai un message dès que le problème sera résolu.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut
    Salut,

    PHP est un langage qui s'execute sur un serveur. Il faut donc créer une page php avec ton code. Par exemple tv.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
      exec('./mon_dossier/mon_script_bash');
    ?>

    Et dans ta page html, tu dois appeler cette page, comme une autre page.

    Mais si tu veux gérer cela depuis une page web, tu va devoir mettre un peu les main dedans...

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Points : 8
    Points
    8
    Par défaut
    Merci Tepaze,

    J'ai suivi tes recommandations en créant le fichier tv.php et en l'appelant depuis ma page web comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="tv.php"><img src="tv.jpg"></a>
    Pour simplifier, tout le contenu (html, images et scripts) est dans le même dossier.
    Quand je clique sur l'image tv.jpg cela provoque le téléchargement du fichier tv.php mais pas son exécution

    Bien sûr, j'ai aussi essayé de suivre la syntaxe proposée par Vincent en mettant echo exec('tv.php') au lieu de exec('tv.php') mais cela ne va pas non plus.

    Par ailleurs, j'ai abordé les autres pistes souvent très intéressantes comme node-red mais cela réclame un investissement de formation non négligeable au regard de mon petit problème.

    Je reste donc à l'écoute de toute suggestion. Grand merci à tous.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Points : 8
    Points
    8
    Par défaut Début de solution
    Re-Bonjour,

    Après de multiples recherches, je commence à avoir quelque chose qui marche sur les bases suivantes :

    Appel par la page web en cliquant sur l'image tv.jpg :
    <a href="/ph/tv.php"><img src="tv.jpg"></a>

    Fichier tv.php :
    <?php
    pclose(popen(tv . ' &', 'r'))
    ?>

    Fichier bash dont le nom est tv qui envoie les impulsions infrarouges :
    #!/bin/bash
    irsend SEND_ONCE /home/pi/lircd.conf KEY_POWER
    exit

    Pour le moment l'exécution de tv.php m'indique le message d'erreur suivant "PHP Notice: Use of undefined constant tv - assumed 'tv' in /monweb/tv.php on ligne 2" mais cela marche !

    Par ailleurs le clic sur l'image tv.jpg de la page web m'amène à une page blanche dont l'adresse est 192.168.1.216/ph/tv.php alors que j'aimerais bien sûr rester sur la page initiale ou y revenir.

    Toute suggestion ou remarque sera toujours très appréciée même si l'objectif semble désormais à portée de la main.

    Merci encore !

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Points : 8
    Points
    8
    Par défaut Suite et fin
    Merci à ceux qui m'ont mis sur la piste.

    Finalement, voici le contenu de mon fichier tv.php qui fonctionne parfaitement en revenant sur la page index de mon menu général :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $metarefresh = '<meta http-equiv="refresh" content="0; url=/" />';
    ?>
    <html>
        <head>
           <?php
            // affichage du meta de redirection 
            echo $metarefresh;
    pclose(popen(tv . ' &', 'r'))
            ?>
        </head>
    </html>

    J'ai comme cela une douzaine de fichiers php appelés par leur image respective et lançant autant de fichiers bash pour envoyer ce qu'il faut comme code infrarouge.

    Sur mon Raspberry pi zero, cela semble parfaitement réactif et remplace avantageusement plusieurs télécommandes.

    Le problème est donc résolu.


  9. #9
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Merci d'être revenu donner la solution cela pourra servir à d'autres personnes.
    Tu as un bouton "Résolu" à côté du bouton "Répondre", clique dessus comme ça si d'autres personnes rencontrent un problème similaire ou si ton projet les intéressent alors ils seront qu'une solution a été trouvé

    A bientôt.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 21/12/2016, 16h51
  2. Réponses: 1
    Dernier message: 07/11/2016, 19h31
  3. Installation de bibliothèques sur Raspberry PI ZERO
    Par T.a.t dans le forum Raspberry Pi
    Réponses: 3
    Dernier message: 21/05/2016, 19h23
  4. accès à des données centralisées par une appli
    Par SpaceFrog dans le forum SharePoint
    Réponses: 3
    Dernier message: 07/01/2011, 08h31

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