Page 1 sur 1
Comment utiliser une variable d'environnement dans le Action On d'un Groupe ou Scénario?
Publié : 10 juin 2020, 01:05
par bebesnake
Bonjour,
J'ai un script.sh situé dans mes scripts qui prend en paramètre (l'argument $1) une variable d'environnement.
Si j’exécute ce script en ligne de commande dans un terminal je le lance de cette manière :
Code : Tout sélectionner
/home/pi/domoticz/scripts/monscript.sh $ENVIRONEMENT_VARIABLE_ARGUMENT
==> OK pas de souci ma variable d'environnement est bien interprétée par sa valeur.
Mon problème ici est que je souhaite simplement exécuter ce même script avec un paramètre qui est une variable d'environnement à interpréter donc (l'argument $1), dans le Action ON d'un Groupe ou d'un Scénario
J'ai donc tenté plusieurs choses :
Code : Tout sélectionner
script:///home/pi/domoticz/scripts/monscript.sh ENVIRONNEMENT_VARIABLE_ARGUMENT
==> KO la variable n'est pas interprétée
Code : Tout sélectionner
script:///home/pi/domoticz/scripts/monscript.sh $ENVIRONNEMENT_VARIABLE_ARGUMENT
==> KO la variable n'est pas interprétée
Code : Tout sélectionner
script:///home/pi/domoticz/scripts/monscript.sh ${ENVIRONNEMENT_VARIABLE_ARGUMENT}
==> KO la variable n'est pas interprétée
Le seul truc qui fonctionne est si je mets la valeur de la variable $ENVIRONNEMENT_VARIABLE_ARGUMENT en paramètre à savoir :
==> OK mais j'utilise la valeur de la variable d'environnement et ce n'est pas ce que je souhaite faire.
Mon script est fonctionnel, ma variable d'environnement existe bien car j'en utilise d'autres dans ce même script... Je ne vois juste pas comment passer en paramètre dans le Action ON d'un scénario ou d'un groupe une variable d'environnement qui doit être interprétée par sa valeur pour pouvoir fonctionner.
Est-ce que quelqu'un pourrait m'éclairer?
Merci
bebesnake
Re: Comment utiliser une variable d'environnement dans le Action On d'un Groupe ou Scénario?
Publié : 10 juin 2020, 04:53
par denis_brasseur
Peut être passer par un autre script monscriptaveclavariable.sh que tu exécuteras ensuite depuis ACTION ON.
monscriptaveclavariable.sh
Code : Tout sélectionner
#!/bin/sh
/home/pi/domoticz/scripts/monscript.sh $ENVIRONEMENT_VARIABLE_ARGUMENT
Rendre ce script exécutable évidemment :
Puis dans le Action ON d'un Groupe ou d'un Scénario
Code : Tout sélectionner
script:///home/pi/domoticz/scripts/monscriptaveclavariable.sh
Mais cela n'est valable que si tu n'utilises que la même variable d'environnement.
Re: Comment utiliser une variable d'environnement dans le Action On d'un Groupe ou Scénario?
Publié : 10 juin 2020, 07:04
par bebesnake
Bonjour.
Merci pour la réponse

. En effet je peux le faire de cette manière! Un peu la tête dans le guidon je n' avais pas pensé.
Cependant, je reste preneur de la solution avec le passage de l'argument qui est une variable d'environnement en paramètre si jamais cela reste possible.
En tout cas, je vais déjà pouvoir me débloquer de cette manière.
Merci beaucoup
bebesnake
Re: Comment utiliser une variable d'environnement dans le Action On d'un Groupe ou Scénario?
Publié : 10 juin 2020, 07:26
par Chrominator
Domoticz s'exécute sous root ; ta variable d'environnement doit être positionnée pour cet utilisateur aussi si elle n'est pas définie au niveau système.
Re: Comment utiliser une variable d'environnement dans le Action On d'un Groupe ou Scénario?
Publié : 10 juin 2020, 10:29
par bebesnake
Bonjour,
J'ai testé de la définir pour les 2 utilisateurs pi et root, mais depuis le Action On ce n'est quand même pas interprété la valeur de la variable d'environnement.
Merci, je vais rester sur le script intermédiaire
bebesnake
Re: Comment utiliser une variable d'environnement dans le Action On d'un Groupe ou Scénario?
Publié : 10 juin 2020, 11:25
par Flying Domotic
Si j'ai bien tout compris, ça va être compliqué, étant donné que le service Domoticz tourne sans variables d'environnement (en standard pour tous les services).
Pour s'en convaincre, créer un test.sh et mettre dedans un echo $XXX (où XXX est le nom de la variable d'environnement souhaitée) et lancer le script depuis Domoticz.
Si on veut vraiment utiliser une variable d'environnement, il fait lancer le démon Domoticz avec la variable (un duckduckgo "linux service environment variable" donne plein d'exemples).
Cependant, il devrait y avoir d'autres façon plus simples d'arriver au même résultat, peut être en utilisant une fonction LUA. On peut avoir une idée de ce que contient la variable d'environnement, et comment elle change ?
Re: Comment utiliser une variable d'environnement dans le Action On d'un Groupe ou Scénario?
Publié : 10 juin 2020, 12:30
par bebesnake
C'est un script que je souhaitais générique qui va appeler différents Id et pour que ce soit plus parlant, j'ai mis des variables d'environnement avec un nom intelligible qui est égale à la valeur de la variable d'environnement qui doit être passé au script.
J'aurais eu un truc du genre
dans le action ON
dans le action OFF
...
Le truc c'est que j'ai pleins d'ID et j'aurais voulu ne pas dupliquer mes scripts mais pouvoir appeler le même script avec une variable d'env avec un nom compréhensible en paramètre du script qui fait toujours la même chose mais en appelant des ID différents.
Finalement, en essayant de passer par un script intermédiaire, pas mieux...le seul truc qui marche est quand je définis tout (mes variables d'env et mon script) dans le même fichier. Dés qu'on change de fichier il perd le contexte avec ses variables d'environnement.
Je vais retenter en lançant domoticz avec var d'env bien que ce ne soit pas idéal, sinon peut-être lua aussi je vais voir.
En tout cas, merci pour les astuces
bebesnake
Re: Comment utiliser une variable d'environnement dans le Action On d'un Groupe ou Scénario?
Publié : 10 juin 2020, 13:59
par bebesnake
Bon finalement je m'en suis sorti avec mon script intermédiaire. C'est un moindre mal.
Je dois quand même définir autant de scripts que d'ID que je récupère (une vingtaine) mais je garde tout de même une généricité pour pouvoir changer les ID au besoin et autres sans changer mes scripts.
En ayant défini au niveau global mes variables d'environnement :
Code : Tout sélectionner
sudo su && echo "export VAR="value"" >> /etc/environment && source /etc/environment
et en ajoutant ceci au début de mes petits scripts intermédiaires
ça fonctionne bien.
Pour le coup je vais devoir créer une vingtaine de scripts sh qui ressembleront à
Code : Tout sélectionner
#!/usr/bin/env bash
source /etc/environment
/home/pi/domoticz/scripts/exec-script.sh $OUVRE_CA
Code : Tout sélectionner
#!/usr/bin/env bash
source /etc/environment
/home/pi/domoticz/scripts/exec-script.sh $FERME_CA
Et je les appelerai depuis mes Action ON et Action OFF
Merci beaucoup à tous
bebesnake
Re: Comment utiliser une variable d'environnement dans le Action On d'un Groupe ou Scénario?
Publié : 11 juin 2020, 11:10
par Flying Domotic
Ok, si je pige bien, c'est une série de "constantes" qui permet de désigner un device par un nom intelligible plutôt qu'un numéro.
Dans ce cas, il doit être possible de charger ces variables au lancement du service Domoticz, sachant que pour une modif, il faudra relancer le service.
Pour ça, il faut définir les variables à passer par :
Donner les variables à définir dans le fichier :
Code : Tout sélectionner
[Service]
Environment="BOUTON_1=123"
Environment="BOUTON_2=456"
Environment="BOUTON_3=789"
Relancer Domoticz :
Pour tester :
Créer un fichier test /home/pi/test/sh
Ajouter le code suivant sur "Action on" d'un bouton de test :
Code : Tout sélectionner
script:///home/pi/test.sh $BOUTON_1 $BOUTON_2 $BOUTON_3 > /home/pi/test.log
Après avoir cliqué sur le bouton, on aura une trace /home/pi/test.log :
Enjoy!
Re: Comment utiliser une variable d'environnement dans le Action On d'un Groupe ou Scénario?
Publié : 11 juin 2020, 17:26
par bebesnake
Ah super!!! C'est ce que je voulais

Merci beaucoup!!!