J’ai commencé à investiguer les scripts avec le plugin éponyme mais j’aurais besoin d’un coup de main pour commencer…
Je précise que j’ai beaucoup programmé pendant 20 ans, mais qu’ensuite, tout en restant très proche du domaine du développement logiciel, je n’ai plus codé une ligne en 30 ans (oui, je ne suis plus de la première jeunesse, même si j’ai commencé à coder très tôt )… donc je ne suis pas étranger à la chose, loin de là, sauf que les langages et les pratiques d’aujourd’hui sont très différentes de celles de l’époque…
Donc, j’ai essayé d’écrire un (tout) petit script en Python en m’appuyant sur les infos que j’ai trouvées ici et là. Voilà ce que ça donne :
Ben la ou tu as mis le code c’est pas bon, tu dois créer un fichier, y mettre le code et appeler ce fichier de code la ou actuellement tu as mis el code !
Une fois le script déplacé dans un fichier, le prochain problème sera avec #message# et #title#; vous ne pouvez pas utiliser ces tags directement dans le script (python ne comprends pas ca)
Vous devrez les passer en arguments du script et les utiliser comme tels dans le script.
Regardez la doc et les autres sujets à propos du plugin (facile à trouver lorsque l’étiquette du plugin est mise sur le post, ce que je viens de faire pour votre post), votre question a déjà été répondue de nombreuses fois: Sujets avec l'étiquette plugin-script
Bon, c’est très laborieux mais j’avance.
Par contre (sans parler de paramètres à passer pour l’instant…) je me retrouve à présent avec une erreur sur le module requests :
Erreur exécution de la commande [Communications][Message vocal][SetMessage] : Erreur sur python /var/www/html/plugins/script/data/Test.py 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last): File « /var/www/html/plugins/script/data/Test.py », line 3, in import requests ImportError: No module named requests
Il faudrait la page santé jeedom (toujours la fournir lors d’une question, cela sert chaque fois) car en fonction de la version de debian la réponse va changer
Bon, j’ai téléchargé et installé PuTTY
Je me suis connecté sur ma Jeedom en SSH
Par contre « Python » et « Pip » il ne connait pas…
…et j’ose pas trop lancer le sudo sans être sûr au préalable de ce que je fais… pas envie de brayer ma box en faisant n’imp.
Des conseils ?
À l’avance merci !
Bizniouf
Bon… à défaut de parvenir à trouver confirmation de ce qu’il faut faire tout seul, j’ai demandé à ChatGPT…
Il me répond qu’il faut utiliser Pip3 pour installer le module requests
…et comme Pip3 n’est pas installé sur mon système il me dit qu’il faut l’installer avec un sudo…
ça donnerait d’après lui :
A mon avis, et pip3 et requests sont déjà présents
C’est 2 là sont tellement utilisés que je serais surpris du contraire.
Un peu tard pour les détails mais le problème est plus lié à python2 vs python3
Si le fichier est nommé .py jeedom va l’exécuter avec python2 (sous debian <=10, sous debian 11 ça sera python3)
Donc soit faut faire un script python2 et installer les dépendances pour (pas terrible car c’est pas le futur)
Soit faut tricher avec le nom du script et mettre .PY en majuscule (de mémoire)
Il y a d’autres posts qui parlent de ce soucis pour vérifier ce que je dis sinon je check demain ou mercredi.
J’avais bêtement pensé que la directive passée en tête de programme : #!/usr/bin/env python3
…permettait de sélectionner la version de Python…
Quoiqu’il en soit, en faisant la bidouille de renommer mon script « Test.py » en « Test.PY » j’obtiens un message d’erreur « Permission denied » :
Erreur exécution de la commande [Communications][Message vocal][SetMessage] : Erreur sur /var/www/html/plugins/script/data/Test.PY [Jeedom Atlas Message de test][Ceci est un test de message pour la commande SetMessage] 2>&1 valeur retournée : 126. Détails : sh: 1: /var/www/html/plugins/script/data/Test.PY: Permission denied
J’ai essayé un
réglage système configuration
onglet osdb
puis vérification générale
…trouvé dans un autre post. Le résultat ne semble pas suspect :
…mais la tentative d’exécution suivante n’est guère plus encourageante :
Erreur exécution de la commande [Communications][Message vocal][SetMessage] : Erreur sur /var/www/html/plugins/script/data/Test.PY [Jeedom Atlas Message de test][Ceci est un test de message pour la commande SetMessage] 2>&1 valeur retournée : 127. Détails : /usr/bin/env: ‹ python3\r ›: No such file or directory
Oui mais seulement si le script est exécuté lui même alors cette première ligne est même obligatoire.
Si on exécuté python en passant en argument le script (ce que fait jeedom) cette première ligne ne sert plus à rien puisqu’on est déjà dans python
Et sous debian <=10 python correspond à python2
(au passage je me pose mille questions à chaque fois. Par exemple, pourquoi autant de packages peuvent ils être upgradés ? Je viens d’acheter ma box. Elles ne sont pas livrées à jour des différents packages ?)
Merci de ton retour. Apparemment Python 3 était déjà installé :
…ça marche !.. enfin bon, je parviens à lancer mon script, pas encore à récupérer et exploiter les paramètres, mais c’est un autre problème…
De tout cela 3 questions subsistent :
1 - Comment faire pour que les droits d’accès aux scripts que je développe soient fixés par défaut de telle façon à ce que je puisse les exécuter ?
2 - Qu’est censé faire le rétablissement des droits jeedom sur les fichiers www-data dans _OS/DB et pourquoi ça n’a pas eu d’effet dans mon cas ?
3 - Y a-t-il un moyen de forcer le lancement de python 3 autrement qu’avec la vilaine bidouille qui consiste à nommer l’extension « .PY » en majuscules ? (perso je trouve que ça devrait être une option en clair du plugin script lui-même)
comment as-tu créé le script?
perso jamais eu ce genre de soucis mais les quelques scripts que j’ai ont été créé via la liste des commandes du plugin script, pas en ssh
si tu as créé en ssh alors normal que www-data ne soit pas propriétaire du fichier
aucune idée pourquoi cela n’a pas eu d’effet
non, excepté installer debian 11 => lorsque le plugin voit que le fichier à l’extension .py (lowercase) alors il execute python [le_script.py] et le symlink python dépend de la version de l’os/python
on pourrait avoir une option dans le plugin mais ca aurait du être fait il y a des mois/années; à présent ca ne vaut plus vraiment la peine car dans quelques mois tout le monde sera sur debian 11 et donc python3 par défaut, le problème va disparaitre tout seul
Ah, hé bien je n’avais dans un premier temps pas vu qu’on pouvait éditer un fichier directement depuis l’interface web de Jeedom, alors j’ai créé un fichier avec un éditeur sur mon PC, puis je l’ai uploadé avec l’interface web de Jeedom.
Okay. C’est pas propre, mais comme c’est provisoire…