Formation PUB420 : Système domotique DIY, 2020 Jeedom

5.43 Lancer un script Python avec le plugin Script


Le plugin Script, comme son nom le laisse entendre, permet de lancer à partir de Jeedom des scripts présents sur le Raspberry Pi.

Les possibilités offertes par ces scripts sont quasi illimitées. On s'en servira, notamment, de contrôler les ports du GPIO du Raspberry Pi.

Installation du plugin

Pour installer le plugin Script, rendez-vous dans Plugins / Gestion des plugins / Market.

Dans la zone de recherche, entrez script.

Cliquez sur le plugin Script - officiel par Jeedom SAS.

Plugin Script

Activation du plugin

Dans l'interface de Jeedom, rendez-vous dans le menu Plugins / Programmation / Script puis cliquez sur l'icône Configuration.

Pour activer le plugin, cliquez sur le bouton Activer dans la zone État.

Édition d'un script

Bien entendu, pour que le plugin exécute un script, il faut éditer ce script.

Plusieurs types de scripts sont supportés :

  • Script : Python ou Bash
  • HTTP
  • HTML
  • XML
  • JSON

Pour lancer une commande ou une série de commandes qui contrôlent une LED, un script Python est un excellent choix.

Pour éditer ce script, vous avez le choix entre :

  • écrire le fichier directement sur le Pi par exemple avec l'éditeur nano
  • l'écrire directement dans Jeedom
  • l'écrire sur votre ordinateur personnel puis de le copier sur le Pi Conseil.

Attention : si vous éditez le script sur un ordinateur Windows, les caractères de fin de ligne ne sont pas reconnus par Linux et Jeedom réagira en vous disant que le fichier n'existe pas.

Vous devez absolument changer l'encodage des fins de lignes afin que Linux puisse utiliser le fichier.

Dans le cas d'un script Python 3, le nom du fichier doit se terminer par .PY en majuscules (ou autre extension de votre choix) car l'extension .py est automatiquement interprétée par Jeedom comme du Python 2.

Emplacement des scripts

Le script Python peut être placé n'importe où sur le Raspberry Pi.

Sachez que si le script est placé dans le dossier /var/www/html ou dans un de ses sous-dossiers, il fera automatiquement partie de la copie de sécurité de Jeedom.

Mais j'avoue que pour fins de simplicité, je place souvent mes scripts sous /home/pi (le dossier personnel de l'usager pi) puisque c'est le dossier qui apparaît lorsqu'on accède au Terminal à partir d'un clavier et d'un écran branchés au Pi ou via SSH.

À ce moment, je suis responsable d'effectuer mes copies de sécurité.

Il revient à chacun d'assumer ses choix!

Remarquez que sous Plugins / Programmation / Script / Configuration, la case Chemin des scripts utilisateur indique l'emplacement où seront enregistrés les scripts qui sont créés directement dans Jeedom.

Chemin des scripts utilisateur

Lancement du script à partir de Jeedom

Pour lancer le script, il faut ajouter un équipement (ce sera en fait une commande vers le script).

Rendez-vous dans le menu Plugins / Programmation / Script puis cliquez sur le +.

Donnez un nom à l'équipement, par exemple « Allumer LED ».

Cochez la case Activer pour que le script puisse être utilisé.

Si désiré, activez la case Visible pour rendre l'équipement visible sur le Dashboard.

Équipement dans le plugin Script

Cliquez ensuite sur l'onglet Commandes puis sur Ajouter une commande script.

Donnez un nom à la commande (ex : Lancer).

Le type doit être à Action.

Il est possible d'éditer le script directement dans Jeedom en cliquant sur l'icône Nouveau ou de faire référence à un script existant.

Dans la case Requête, entrez une commande sous la forme sudo python3 /chemin/nom_du_script.PY.

Vous devez préciser le chemin complet du script.

Après avoir sauvegardé, vous pouvez cliquer sur le bouton Tester afin de voir si tout fonctionne.

Onglet Commandes

Quelques erreurs courantes

Extension .PY

Dans le cas d'un script Python 3, il faut changer l'extension du fichier pour .PY (en majuscules).

Si le nom se termine par .py, il sera considéré par Jeedom comme étant un fichier Python 2 et Jeedom ajoutera automatiquement la commande python devant la commande entrée. Vous obtiendrez alors un message d'erreur du genre « Erreur sur python sudo python3 /home/pi/allumer_led.py 2>&1 valeur retournée : 2. Détails : python: can't open file 'sudo': [Errno 2] No such file or directory ».

can't open file 'sudo': [Errno 2] No such file or directory

sudo

Pour qu'un script Python puisse interagir avec le GPIO, vous devez précéder la commande par sudo.

Si vous ne le faites pas, vous obtiendrez un message du genre « Erreur sur python3 /home/pi/allumer_led.PY 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last): File "/home/pi/allumer_led.PY", line 23, in GPIO.setup(led, GPIO.OUT) RuntimeError: No access to /dev/mem Try running as root! ».

RuntimeError: No access to /dev/mem Try running as root!

Chemin du script

Vous devez spécifier le chemin complet du script.

Si vous ne le faites pas, vous obtiendrez un message du genre « Erreur sur sudo python3 allumer_led.PY 2>&1 valeur retournée : 2. Détails : python3: can't open file 'allumer_led.PY': [Errno 2] No such file or directory ».

can't open file 'allumer_led.PY': [Errno 2] No such file or directory

Droits d'exécution ou python3

Un script Python peut être exécuté de deux façons : en faisant précéder son nom par python3 ou en donnant des droits d'exécution au fichier.

Si l'usager courant n'a pas les droits d'exécution sur le fichier et que vous n'avez pas fait précéder son nom par python3 dans la commande sous Jeedom, vous obtiendrez un message du genre « Erreursur sudo /home/pi/allumer_led.PY 2>&1 valeur retournée : 1. Détails :sudo /home/pi/allumer_led.PY: command not found ».

(image)

Lancer le script à partir d'un scénario

Le script, qui est un équipement au yeux de Jeedom, peut désormais être utilisé au même titre que n'importe quel autre équipement dans vos scénarios Jeedom!

Scénario qui lance un script

Pour plus d'information

« Plugin Script ». Plugin Script. https://doc.jeedom.com/fr_FR/plugins/programming/script/

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre