Contrôlez votre Raspberry Pi à distance à l'aide de PiControl

PiControl de PiCockpit est une fonctionnalité puissante qui vous permet de contrôler votre Raspberry Pi à distance depuis n'importe quel navigateur web, en cliquant simplement sur des boutons. Vous verrez l'état et la sortie de la commande. De nouvelles commandes peuvent être ajoutées en éditant simplement un fichier JSON sur votre Raspberry Pi - nous allons vous montrer comment faire, et vous donner quelques idées de ce que vous pouvez construire en utilisant PiControl !

Comment ça se présente ?

Par défaut, trois commandes sont incluses et immédiatement disponibles pour votre Raspi : ( power off, reboot, upgrade client )

Commandes de base pour contrôler votre Pi à distance à l'aide d'une interface web - depuis n'importe quel navigateur.
Cette capture d'écran du PiCockpit PiControl montre comment les commandes se présentent

Que puis-je faire avec un Raspberry Pi et PiControl ?

Voici quelques éléments que vous pouvez construire avec lui. Ces idées nécessiteront quelques recherches, et éventuellement des connaissances en matière de codage et/ou de matériel de votre part. Dans tous les cas, le PiControl de PiCockpit vous aidera à réaliser la partie interface web facile à utiliser de votre projet et vous fera gagner beaucoup de temps pour faire fonctionner le tout sur Internet 🙂 ...

  • prendre un cliché à l'aide du module caméra de Raspberry Pi et le recevoir par la poste
  • démarrer votre serveur Minecraft Raspberry Pi, et l'arrêter également
  • Lisez une vidéo en utilisant omxplayer (vous pouvez également configurer une boucle infinie pour la vidéo, et arrêter la boucle vidéo si vous voulez passer à une autre vidéo)
  • créer un contrôle facile pour une caméra d'animation stop-motion, en utilisant le module caméra du Raspberry Pi
  • réveiller un ordinateur local dans le même réseau que votre Raspberry Pi avec la fonctionnalité Wake on LAN (réveil sur le réseau local)
  • jouer un son (comme une farce pour Halloween, par exemple)
  • ouvrir une porte, par exemple une porte de garage, en envoyant des commandes appropriées via Z-Wave, etc.
  • démarrer le service SSH sur votre Raspberry Pi, puis l'arrêter - une approche "frapper pour ouvrir" pour une meilleure sécurité
  • contrôler les trains miniatures
  • allumer et éteindre un relais (nécessite deux boutons, ou peut être fait en utilisant un bouton "toggle")
  • commander le téléviseur (changer de chaîne, modifier le volume, ...) à l'aide d'une LED IR, par exemple pour simuler une activité pendant que vous êtes en voyage.
  • Lancer une fusée à partir de l'interface web

Nous publierons des instructions étape par étape pour certaines de ces idées de projets, afin que vous disposiez d'un guide facile pour démarrer avec PiControl et contrôler à distance votre Raspberry Pi.

Comment puis-je ajouter des boutons de commande à distance supplémentaires pour le Raspberry Pi avec PiControl ?

Vous pouvez facilement et en toute sécurité définir vos propres commandes, en éditant simplement des fichiers JSON sur votre Raspberry Pi. Ceci est fait pour des raisons de sécurité - j'aurais pu écrire PiCockpit de manière à vous permettre d'ajouter des commandes depuis l'interface web, mais si quelqu'un connaissait votre mot de passe PiCockpit, il pourrait créer n'importe quelle commande qu'il souhaiterait. Par conséquent, veuillez suivre ces instructions simples pour créer un nouveau fichier JSON sur votre Pi.

Remarque : ces instructions sont délibérément rédigées de manière à ce que les utilisateurs qui n'ont pas d'expérience de la ligne de commande puissent les suivre. Si vous savez comment utiliser la ligne de commande, vous trouverez peut-être plus facile/rapide de simplement créer le fichier et de l'éditer avec nano.

Tout d'abord, vous devez ouvrir le navigateur de fichiers en mode super utilisateur (cette étape permet de protéger les fichiers de configuration du PiCockpit PiControl contre tout utilisateur ou application souhaitant les modifier). Cliquez sur le menu Raspberry Pi OS, et ici cliquez sur la commande "Run ..." :

Menu OS Raspberry Pi, montrant la commande run.
Le menu du système d'exploitation du Raspberry Pi. La commande Exécuter est près du bas

Exécutez pcmanfm en tant que root (sudo pcmanfm) en tapant "sudo pcmanfm" (sans les guillemets) dans la boîte de dialogue qui s'ouvre, puis cliquez sur OK :

Dialogue de commande d'exécution sur le système d'exploitation Raspberry Pi
La commande run, préparant l'exécution de pcmanfm en tant que root

Une nouvelle fenêtre s'ouvre, vous montrant le contenu du répertoire /home/pi :

Capture d'écran de pcmanfm avec des droits de super utilisateur
pcmanfm, le gestionnaire de fichiers fonctionnant en tant que super utilisateur

Note : vous devriez voir cette icône, juste sous le menu "File". Elle indique que vous utilisez pcmanfm en tant qu'utilisateur root, et que vous devez donc être très prudent (puisque root peut modifier / supprimer / déplacer n'importe quel fichier ! même les fichiers qui sont critiques pour le fonctionnement normal du système).

Indicateur du mode racine

Pas d'inquiétude, nous ne toucherons que les fichiers dont vous avez besoin ici 🙂 .

Ouvrez le répertoire suivant sur votre Raspberry Pi :

/etc/picockpit-client/apps/com.picockpit/picontrol/modules

Affichage du répertoire de configuration pour le PiControl de PiCockpit. Notez que si vous avez une nouvelle installation de PiCockpit, vous ne verrez que core.json. Les autres modules ont été créés par moi à des fins de test et de démonstration (expériences de contrôle à distance).

Astuce : vous pouvez également copier et coller le chemin que j'ai donné ci-dessus, et appuyer sur la touche entrée pour naviguer dans le répertoire.

Les conseils utiles de Raspi Berry sur les Raspberry Pi

cliquez avec le bouton droit de la souris dans la zone vide à côté des fichiers existants, et sélectionnez "Nouveau fichier...".

Créer un nouveau fichier avec l'OS Raspbian
Menu de l'OS Raspberry Pi pour un clic droit pour créer un nouveau fichier

Appelez le nouveau fichier ssh-server.json :

Une boîte de dialogue demande le nom du nouveau fichier.
création d'un nouveau fichier en tant qu'utilisateur root avec pcmanfm
ssh-server.json est maintenant créé dans ce dossier.

Cliquez avec le bouton droit de la souris sur le nouveau fichier, pour faire apparaître le menu contextuel. Choisissez "Geany" :

Menu contextuel montrant Geany l'éditeur du programmeur sur Raspberry Pi OS
Geany est un éditeur avec lequel vous pouvez modifier le fichier.
Capture d'écran de l'éditeur de programmes Geany
Geany montre le fichier ssh-server.json - rien dedans pour le moment.

Vous pouvez maintenant voir le nouveau fichier que nous venons de créer. Il est vide pour l'instant.

Créons deux nouvelles commandes, une pour arrêter le service du serveur SSH, et une pour le démarrer. Entrez ce qui suit dans le champ de texte que Geany vous présente :

{
  "nom" : "Commandes SSH",
  "icon" : "mdi-ssh",
  "handle" : "ssh",
  "description" : "Contrôle le serveur SSH",
  "commandes" : {
    "ssh-stop" : {
      "name" : "Arrêt du serveur SSH",
      "icon" : "mdi-server-minus",
      "description" : "Désactiver le service SSH",
      "confirm" : true,
      "utilisateur" : "root",
      "command" : ["service", "ssh", "stop"]
    },
    "ssh-start" : {
      "name" : "Serveur SSH activé",
      "icon" : "mdi-server-plus",
      "description" : "Démarre le service SSH",
      "utilisateur" : "root",
      "commande" : ["service", "ssh", "start"]
    }
  }
}
Ajout du texte dans Geany. Faites attention aux parenthèses, à la structure du document et aux mots qui doivent être correctement orthographiés pour que cela fonctionne.

A ce stade, nous devons enregistrer le fichier. Vous pouvez le faire à partir du menu fichier de Geany, par exemple, en sélectionnant Enregistrer. (Ou utilisez Ctrl + S) :

Le menu des fichiers de Geany

A ce stade, nos nouvelles commandes ne sont pas encore apparues dans l'interface web. Nous devons redémarrer picockpit-client pour cela. Cliquez sur la commande "Run ..." dans le menu du Raspberry Pi OS, et tapez "sudo service picockpit-client restart"dans la fenêtre avant de cliquer sur OK :

redémarrer le service picockpit-client en utilisant la boîte de dialogue d'exécution
redémarrer un service à partir de la boîte de dialogue Exécuter

Maintenant, jetez un coup d'œil à votre interface web PiControl :

Capture d'écran de l'interface web PiControl pour le contrôle à distance
Un nouveau bouton permettant de passer rapidement aux nouvelles commandes SSH est apparu.
Les nouvelles commandes (boutons) que nous avons ajoutées à l'interface web pour exécuter des commandes à distance sur le Raspi !

Si vous avez tout tapé correctement, les nouvelles commandes apparaîtront. Si vous avez fait une erreur dans votre fichier JSON (par exemple, vous avez oublié une accolade), PiCockpit ignorera simplement le fichier "cassé".

Vous pouvez maintenant essayer les commandes. Si vous cliquez sur le bouton SSH SERVER OFF, il vous sera demandé si vous voulez vraiment exécuter la commande. Cliquez ici aussi sur ssh server off pour exécuter la commande (ou cliquez sur cancel si vous ne voulez pas l'exécuter).

Un garde-fou pour vous empêcher d'exécuter des commandes dangereuses en cliquant accidentellement dessus.

PiCockpit va maintenant exécuter la commande, vous verrez des informations sur la progression - et une fois l'exécution terminée, vous verrez l'indicateur de succès suivant :

PiControl a exécuté avec succès "service ssh stop" sur votre Pi.

Si vous essayez de vous connecter à votre Pi maintenant en utilisant SSH, la connexion sera refusée :

PuTTYNG affiche une erreur fatale.
Erreur réseau : connexion refusée

Redémarrez le serveur SSH en cliquant sur "SSH SERVER ON". Maintenant une connexion sera à nouveau possible.

Félicitations ! Vous venez de créer votre propre ensemble de commandes que vous pouvez exécuter à partir de l'interface web.

Restez sur la page pendant que vous exécutez les commandes - l'état sera actuellement effacé si vous naviguez ailleurs. Pour déterminer si le serveur SSH est en cours d'exécution, vous pouvez construire un test PiDoctor - PiControl sert simplement à exécuter des actions à distance sur votre Pi.

Les conseils utiles de Raspi Berry concernant Raspberry Pi (et PiCockpit)

N'oubliez pas de redémarrer le picockpit-client lorsque vous ajoutez de nouvelles commandes ou que vous mettez à jour des commandes. Vous pouvez également supprimer les commandes que vous ne souhaitez pas avoir, par exemple si vous voulez supprimer la possibilité d'éteindre votre Raspberry Pi à distance.

Explication de la syntaxe de la commande à distance

Ce fichier configure un nouveau module pour PiControl. Il a une syntaxe .JSON, veuillez vous assurer que vous ouvrez et terminez par des accolades de manière correcte, comme présenté dans mon exemple.

Il y a une tête, qui configure le module lui-même, et les commandes (dans la partie "commandes"). Elles partagent certaines entrées communes :

nom

Les entrées "nom" sont des noms lisibles par l'homme qui vous sont montrés dans l'interface web.

icône

Les entrées "icon" sont facultatives pour décorer vos boutons et votre module. Il s'agit de noms d'icônes Material Design, par exemple "mdi-ssh".

Vous pouvez consulter un Liste complète des icônes Material Design ici. Il suffit de copier le nom de l'icône (y compris le mdi- au début).

Les conseils utiles de Raspi Berry concernant Raspberry Pi (et PiCockpit)

description

Les entrées "description" sont facultatives et vous permettent d'ajouter un peu plus d'informations sur la commande ou le module.

poignée

L'entrée "handle" est explicite pour le module, et doit être unique parmi les modules. Dans le cas des commandes, le handle est implicite. "ssh-stop" et "ssh-start"sont les deux poignées que j'ai utilisées pour les commandes dans mon exemple.

Vous pouvez choisir n'importe quoi comme poignée, tant que cela ne comprend pas les caractères "/", "+", "$", "*". Je recommande de s'en tenir aux caractères ASCII minuscules de base, et d'utiliser le "-". L'identifiant est requis.

Votre fichier peut d'ailleurs avoir un nom différent de celui de l'identifiant. Je vous encourage à utiliser au moins des noms apparentés pour le nom du fichier et l'identifiant, afin de pouvoir identifier facilement le fichier .JSON du module sur votre disque dur.

Les conseils utiles de Raspi Berry concernant Raspberry Pi (et PiCockpit)

Les commandes sont placées dans la section "commandes"et offrent des possibilités de configuration supplémentaires :

confirmer

Si "confirmer" est présent et défini à true, l'interface Web PiControl affichera une boîte de dialogue de confirmation avant d'exécuter la commande. Ceci est utile pour s'assurer que les commandes "dangereuses" ne sont pas exécutées par un tapotement ou un clic accidentel.

utilisateur

Si "utilisateur" est présent, la commande sera exécutée en tant que cet utilisateur particulier (en tant que racine dans notre exemple, pour s'assurer que nous disposons de privilèges suffisants).

PiControl exécutera les commandes en tant qu'utilisateur "pi"par défaut. Vous pouvez également le définir sur d'autres utilisateurs ayant moins de privilèges que "pi“.

Si vous essayez d'exécuter des commandes GPIO, ou de lire des vidéos à l'aide d'omxplayer, vous devrez peut-être donner à votre nouvel utilisateur des capacités supplémentaires. L'utilisateur pi possède ces privilèges par défaut. Habituellement, ces privilèges sont définis en ajoutant l'utilisateur à un groupe spécial.

Les conseils utiles de Raspi Berry concernant Raspberry Pi (et PiCockpit)

commande

Ceci est la commande réelle qui doit être exécutée sur votre Raspberry Pi. Notez que vous devez remplacer les espaces dans la commande comparée à comme vous le feriez sur la ligne de commande. Par exemple,

service ssh start

devrait être écrit comme suit :

["service", "ssh", "start"]

PiControl prend également en charge le chaînage d'une séquence de commandes (par exemple, la séquence habituelle apt-get update, apt-get upgrade). Consultez le fichier core.json pour un exemple de la façon dont cela est fait.

Les conseils utiles de Raspi Berry concernant Raspberry Pi (et PiCockpit)

Conclusion : PiControl pour vos besoins en télécommande de Raspberry Pi

En utilisant PiCockpit et PiControl, il est très facile d'ajouter n'importe quelle commande à distance que vous souhaitez exécuter sur votre Raspi, et de pouvoir contrôler votre Pi depuis une interface web. Pour que cela fonctionne, le Raspberry Pi a seulement besoin d'une connexion Internet. vous n'avez pas besoin d'être dans le même réseau.

Qu'aimeriez-vous construire en utilisant PiCockpit et PiControl ? Commentez ci-dessous, et j'essaierai de vous aider à réaliser votre projet 🙂 .

Capture d'écran de PiControl montrant les boutons pour contrôler à distance omxplayer et contrôler le navigateur web Chrome en utilisant l'interface web.
Cette capture d'écran de PiControl montre un module personnalisé que j'ai mis en place : contrôler Chrome (Chromium), lancer des vidéos en boucle en utilisant omxplayer, montrer des vidéos YouTube sur le Pi.

Un grand pouvoir implique une grande responsabilité - faites attention à qui vous donnez accès à votre interface PiCockpit, gardez votre mot de passe et vos clés API en sécurité. Veillez également à "protéger" les commandes dangereuses, comme indiqué ci-dessus, afin qu'elles ne soient pas exécutées en cliquant dessus par erreur.

Les conseils utiles de Raspi Berry concernant Raspberry Pi (et PiCockpit)

10 commentaires

  1. Max sur mai 12, 2021 à 5:30

    Bonjour à tous !
    Je veux exécuter la commande suivante avec un bouton picontrol : cd /home/pi/Sensoren ; python3 SCRIPT.py
    Je l'ai fait comme décrit et je peux appuyer sur le bouton mais la commande n'est pas exécutée et le processus ne peut pas être arrêté.
    Des conseils ?
    Merci

    • raspi berry sur juillet 1, 2021 à 5:22

      rappelez-vous que picontrol n'est pas un shell - toutes les commandes sont exécutées indépendamment. vous devez utiliser des chemins absolus (cd - changer de répertoire - est inutile dans le contexte de picontrol).

  2. Alex sur août 16, 2021 à 6:34

    Le lancement d'un script python fonctionne bien, par exemple :
    "commande" : ["python3", "/home/pi/do_something.pyc"]
    Mais j'ai des problèmes si le script lance ensuite une application avec une interface graphique comme Chromium ou si Chromium est lancé directement :
    "commande" : ["chromium-browser"] résulte en "Unable to open X display. ".

    Comment lancer des scripts ou des applications qui nécessitent un affichage X ?

    • PiCaptain sur août 19, 2021 à 5:08

      J'ai écrit un peu plus sur ce sujet ici :
      https://pi3g.com/2020/05/19/chromium-exit-code-5/

      En fait, vous devez indiquer à l'application quel affichage X utiliser.
      Dans le cas de Chromium, cela se fait avec un drapeau

      chromium-browser -display=:0 -kiosk https://picockpit.com

      note, -kiosk démarre le navigateur en mode kiosque. Je le mentionne juste comme information supplémentaire.
      note II : il s'agit de deux tirets pour les paramètres - WordPress les change en un seul long tiret je crois.

      Pour d'autres applications, vous devrez vérifier. Cela se fait souvent en définissant une variable d'environnement.
      Pour PiCockpit, il faudrait peut-être écrire un script bash qui définit la variable et lance ensuite l'application.
      Et ensuite exécuter le script bash.

      Si vous avez du succès avec cette méthode, partagez avec nous.

      Max

      • PiCaptain sur août 19, 2021 à 5:09

        Comme image

    • PiCaptain sur août 19, 2021 à 5:11

      Consultez également ces deux liens pour en savoir plus sur les commutateurs de ligne de commande pour Chromium :

      http://peter.sh/experiments/chromium-command-line-switches/
      https://www.chromium.org/developers/how-tos/run-chromium-with-flags

  3. Sri sur octobre 13, 2021 à 1:23

    Bonjour, je viens de mettre en place une commande en utilisant votre logiciel et votre infrastructure et c'est génial ! Merci beaucoup pour ce logiciel simple et facile à utiliser. Je voulais un petit conseil si vous êtes libre. En gros, j'ai configuré mon Pi pour réveiller mon PC de son sommeil, et votre logiciel permettant une interface web simple pour réveiller le PC avec une commande etherwake fonctionne, cependant j'aimerais un moyen plus rapide d'exécuter cette commande immédiatement. Pensez-vous qu'il existe un moyen de rendre cela possible ? Actuellement, pour réveiller mon PC, je dois me connecter, puis aller dans ma commande et ensuite choisir le bouton dans la boîte pop-up, mais s'il y avait une API ou un raccourci pour exécuter la commande en un seul clic, ce serait utile. Quoi qu'il en soit, je vous remercie beaucoup pour cela. C'est très impressionnant 🙂 .

    • PiCaptain sur octobre 23, 2021 à 1:41

      Merci pour la suggestion de fonctionnalité, je l'ai ajoutée. Nous prévoyons de faire une application de réveil sur lan un jour, cela pourrait être un peu plus pratique.

  4. Hager sur mars 31, 2022 à 12:26

    Bonjour,
    Comment puis-je, par exemple, obtenir des informations telles que (Voulez-vous continuer ? [Y/n]) sur le script avec "Y" ?

    Vielen Dank !

    • Hanno sur avril 20, 2022 à 7:30

      Hallo Herr Hager,

      C'est une très bonne question ! Einige Kommandozeilen Programme wie zum etwa apt-get haben eine bereits integrierte -assumez-oui Option, qui vous permet d'utiliser un mode non interactif. Cette option est souvent utilisée dans les scripts qui ne nécessitent pas d'ajustements manuels. Il existe une alternative à l'Unix classique.ouiProgramme avec lequel vous pouvez obtenir votre propre résultat. Par exemple, avec :
      oui | sudo apt upgrade
      En fonction de l'utilisation que vous souhaitez en faire, l'une de ces deux possibilités doit être considérée comme une bonne solution. Alors, n'hésitez pas à nous contacter !

Laissez un commentaire