Problème script lua avec script sh
Publié : 16 nov. 2017, 09:42
Bonjour,
J'ai fait un tuto permettant de contrôler sa freebox avec google home, jusque la tout va bien, sauf que mon script lua est trop gros et du coup pas facile à gérer lorsqu'on veut le modifier.
Pour faire simple, je lance une commande vocale par le biais d'ifttt, qui alimente une uservariable "freebox" dans domoticz, exemple de valeur "tf 1", puis le script lua va reconnaitre la valeur "tf 1" et me lancer un script sh (chg_chaine.sh) avec la valeur de la uservariable "freebox", qui aura été transmise à la variable "ifttt", une fonction "si" va me convertir "tf 1" en "0 0 1", ce qui déclanchera le script chg_chaine avec comme argument 0 0 1.
Donc cela fonctionne.
Mon autre script lua
, lui va, non pas me lancer le script chg_chaine.sh mais freebox.sh avec en argument la valeur d'ifttt, le print me confirme que l'argument ="tf 1".
Mais rien ne se passe quand je le lance et je ne sais pas comment je peux déboguer pour voir d'ou vient le problème, sachant que lorsque je lance mon script
Celui ci fonctionne et me change la chaine, voici ce qu'il contient :
freebox.sh
Je ne comprends pas le problème, sachant que si dans le script lua je modifie
par
cela fonctionne.
C'est comme si le script freebox.sh ne recevait pas l'argument du script freebox.lua, alors que sur le script chg_chaine.sh celui-ci le recoit bien ...
Je sèche complet...
Merci de vos lumières
J'ai fait un tuto permettant de contrôler sa freebox avec google home, jusque la tout va bien, sauf que mon script lua est trop gros et du coup pas facile à gérer lorsqu'on veut le modifier.
Pour faire simple, je lance une commande vocale par le biais d'ifttt, qui alimente une uservariable "freebox" dans domoticz, exemple de valeur "tf 1", puis le script lua va reconnaitre la valeur "tf 1" et me lancer un script sh (chg_chaine.sh) avec la valeur de la uservariable "freebox", qui aura été transmise à la variable "ifttt", une fonction "si" va me convertir "tf 1" en "0 0 1", ce qui déclanchera le script chg_chaine avec comme argument 0 0 1.
Code : Tout sélectionner
if ifttt=="tf 1" or ifttt=="la 1" then
chaine="0 0 1"
os.execute('/home/'..nom..'/domoticz/scripts/chg_chaine.sh '..chaine)Mon autre script lua
Code : Tout sélectionner
commandArray = {}
nom="osmc"
ip="xxxxxx"
port="8080"
ifttt=uservariables["freebox"]
ifttt=string.lower(ifttt)
print("valeur d'ifttt au début du script : "..ifttt)
if ifttt=="vide" or ifttt== nil then
print("sortie du script")
return commandArray
else
print("lancement du script freebox.sh avec ifttt = "..ifttt)
os.execute('/home/'..nom..'/domoticz/scripts/freebox.sh '..ifttt)
end
raz="vide"
commandArray['Variable:freebox']=''..raz
return commandArrayMais rien ne se passe quand je le lance et je ne sais pas comment je peux déboguer pour voir d'ou vient le problème, sachant que lorsque je lance mon script
Code : Tout sélectionner
freebox.sh tf 1freebox.sh
Code : Tout sélectionner
#!/bin/bash
#########################declaration des variables#################################
ifttt="" #remise à zero d'ifttt
chaine="sh /home/"$USER"/domoticz/scripts/chg_chaine.sh"
touche="sh /home/"$USER"/domoticz/scripts/chg_touche.sh"
########################Recuperation de la valeur d'ifttt##########################
case $# in
1) ifttt="$1";;
2) ifttt="$1 $2";;
3) ifttt="$1 $2 $3";;
4) ifttt="$1 $2 $3 $4";;
5) ifttt="$1 $2 $3 $4 $5";;
6) ifttt="$1 $2 $3 $4 $5 $6";;
7) ifttt="$1 $2 $3 $4 $5 $6 $7";;
8) ifttt="$1 $2 $3 $4 $5 $6 $7 $8";;
9) ifttt="$1 $2 $3 $4 $5 $6 $7 $8 $9";;
esac
######################################Changement de chaines######################################################
case "$ifttt" in
# Par nom de chaine
"tf 1") $chaine 0 0 1;;
"france 2") $chaine 0 0 2;;
"france 3") $chaine 0 0 3;;
"canal plus") $chaine 0 0 4;;
"france 5") $chaine 0 0 5;;
"m 6") $chaine 0 0 6;;
"arte") $chaine 0 0 7;;
"c 8") $chaine 0 0 8;;
"w 9") $chaine 0 0 9;;
"tmc") $chaine 0 1 0;;
"nt1") $chaine 0 1 1;;
"nrj 12") $chaine 0 1 2;;
"lcp") $chaine 0 1 3;;
"france 4") $chaine 0 1 4;;
"bfm") $chaine 0 1 5;;
"cnews") $chaine 0 1 6;;
"cstar") $chaine 0 1 7;;
"gulli") $chaine 0 1 8;;
"france haut") $chaine 0 1 9;;
"hd 1") $chaine 0 2 0;;
"lquipe") $chaine 0 2 1;;
"6 ter") $chaine 0 2 2;;
"numro 23") $chaine 0 2 3;;
"rmc") $chaine 0 2 4;;
# Par numéro de chaine
"la 1") $chaine 0 0 1;;
"la 2") $chaine 0 0 2;;
"la 3") $chaine 0 0 3;;
"la 4") $chaine 0 0 4;;
"la 5") $chaine 0 0 5;;
"la 6") $chaine 0 0 6;;
"la 7") $chaine 0 0 7;;
"la 8") $chaine 0 0 8;;
"la 9") $chaine 0 0 9;;
"la 10") $chaine 0 1 0;;
"la 11") $chaine 0 1 1;;
"la 12") $chaine 0 1 2;;
"la 13") $chaine 0 1 3;;
"la 14") $chaine 0 1 4;;
"la 15") $chaine 0 1 5;;
"la 16") $chaine 0 1 6;;
"la 17") $chaine 0 1 7;;
"la 18") $chaine 0 1 8;;
"la 19") $chaine 0 1 9;;
"la 20") $chaine 0 2 0;;
"la 21") $chaine 0 2 1;;
"la 22") $chaine 0 2 2;;
"la 23") $chaine 0 2 3;;
"la 24") $chaine 0 2 4;;
######################################Appuie sur une touche######################################################
esac
exit 0
Code : Tout sélectionner
os.execute('/home/'..nom..'/domoticz/scripts/freebox.sh '..ifttt)Code : Tout sélectionner
test="tf 1"
os.execute('/home/'..nom..'/domoticz/scripts/chg_chaine.sh '..test)C'est comme si le script freebox.sh ne recevait pas l'argument du script freebox.lua, alors que sur le script chg_chaine.sh celui-ci le recoit bien ...
Je sèche complet...
Merci de vos lumières