Page 3 sur 4
Re: Requête GET HTTP via script LUA
Publié : 01 mars 2015, 18:43
par patrice
Bonsoir
Donne nous la réponse intégrale de ton serveur ici
Re: Requête GET HTTP via script LUA
Publié : 01 mars 2015, 19:45
par BenjaminV
La voici,
30 représente le volume et varie de 0 à 100...
Et le script simple
Avec comme appel de fonction et les 3 arguments
Faire l'appel d'un script bash à partir d'un script LUA ne devrait pas poser de problème. Mon problème est donc
-Récupérer la valeur affichée via "echo"
-Décomposer cette réponse pour en extraire le volume
-Renvoyer cette valeur dans une variable interne à Domoticz que je puisse exploiter via des scripts en LUA
Je me suis attaqué à quelque chose de bien plus complexe que je ne pensais ...
Re: Requête GET HTTP via script LUA
Publié : 01 mars 2015, 20:53
par vil1driver
je pense que ceci doit faire le job:
Code : Tout sélectionner
commandArray = {}
-- Path to curl
local curl = '/usr/bin/curl'
-- url à joindre
local url = 'http://..............'
local retour = os.capture(curl url, true);
local volume = tonumber(string.sub(retour, 41, 44))
print(volume)
return commandArray
il y surement plus propre, mais ça doit fonctionner comme ceci, pas besoin de script bash à mon avis..
Re: Requête GET HTTP via script LUA
Publié : 01 mars 2015, 23:49
par BenjaminV
vil1driver a écrit :je pense que ceci doit faire le job:
Code : Tout sélectionner
commandArray = {}
-- Path to curl
local curl = '/usr/bin/curl'
-- url à joindre
local url = 'http://..............'
local retour = os.capture(curl url, true);
local volume = tonumber(string.sub(retour, 41, 44))
print(volume)
return commandArray
il y surement plus propre, mais ça doit fonctionner comme ceci, pas besoin de script bash à mon avis..
Bonsoir,
Malheureusement, je dois réaliser une requête via telnet ou netcat pour avoir la réponse du serveur... Il ne me semble pas qu'il soit possible de le faire via une url. Seules les commandes fonctionnent via url et non les requêtes

Re: Requête GET HTTP via script LUA
Publié : 02 mars 2015, 09:43
par vil1driver
ahhh j'avais mal lu, désolé :/
Re: Requête GET HTTP via script LUA
Publié : 03 mars 2015, 18:35
par BenjaminV
Si quelqu'un a une idée il est le bienvenu

sinon je laisse tomber et je ne me contente que d'envoyer des commandes sans avoir de retour d'état.
Re: Requête GET HTTP via script LUA
Publié : 03 mars 2015, 22:20
par patrice
Bonsoir
Si on considère ta chaine de caractères renvoyée par ton equipement
b8%3A27%3Aeb%3A73%3A5e%3A40 mixer volume 30
un
cat fic|cut -d' ' -f3
te renvoie le 3eme champ de la chaine soit "volume"
et donc
cat fic|cut -d' ' -f4
affiche le 4eme champ soit
...
...
...
"30"
C'est gagné
Je modifierai donc le squueeze.sh pour qu'il envoie tout ça dans un fichier avec un #!/bin/bash
echo -e "$1\nexit\n" | netcat $2 $3 >fichiersortie
et puis un script qui contiendrait
#!/bin/bash
monvolume=$(cat fichiersortie|cut -d' ' -f4)
echo $monvolume
te donne une variable bash $monvolume que tu peux reutiliser pour alimenter la variable utilisateur Domoticz via l'API JSON
ici
http://www.domoticz.com/wiki/Domoticz_A ... _variables
Bien sur tu peux tout mettre dans ton fichier squeeze.sh
My 2 cts
Re: Requête GET HTTP via script LUA
Publié : 04 mars 2015, 18:30
par BenjaminV
Génial merci Patrice effectivement ça fonctionne !
Le piège par contre lors du renvoi de variable au niveau de Domoticz sont les espaces. A éviter donc !
Je vais créer un script "propre" et je le posterai. Je pense que ça peut intéresser certaines personnes.
Par contre connais tu un bon tutoriel, didactique et convivial permettant de s'initier au bash sur Pi ? Tout ce que je trouve jusqu'à maintenant n'est pas des plus motivant...
Re: Requête GET HTTP via script LUA
Publié : 04 mars 2015, 18:49
par BenjaminV
Voici le script permettant de retourner la réponse dans une variable interne à Domitcz
Code : Tout sélectionner
#!/bin/bash
# $1 is the command to the SB server. Here are some examples :
# - 192.168.1.71 mixer volume ? = Ask the volume of the reader with IP 192.168.1.71. Address can also be MAC address (if not static)
# - do the same with player id , player name, player ip , ... see also LMS > Help > Technical Informations > Logitech Command Line Interface
# $2 is the SB server IP address
# $3 is the SB port to communicate with CLI (Normally 9090)
# $4 is the uservariable idx placed in Domoticz
# $5 is the variable name placed in Domoticz. Warning, be carefull with space caracter !
#Netcat connection to the SB server. Return the answer in return_SB
echo -e "$1\nexit\n" | netcat $2 $3 >return_SB
#Take the last part of the answer. Works with volume for the moment.
answer=$(cat return_SB|cut -d' ' -f4)
#Uservariable modification with JSON requesting
command1="http://192.168.1.60:8080/json.htm?type=command¶m=updateuservariable&idx=$4&vname=$5&vtype=0"
command2="&vvalue=$answer"
command="$command1$command2"
echo $command
curl -s $command
Je donnerai également le script LUA permettant de faire appel au script suite à une requête PING
EDIT : Tant que j'y suis, j'ai une question extrêmement simple : Est-il possible de créer des tables à plusieurs colonnes dans un script LUA ? Exemple
Code : Tout sélectionner
local ping={}
ping['192.168.1.70']='Mon Ordinateur'; 'autre_colonne1'; 'autre_colonne2';...
Evidemment ce que j'ai noté n'est pas correct mais je n'ai pas trouvé de réponse à cette question
Re: Requête GET HTTP via script LUA
Publié : 04 mars 2015, 21:12
par patrice
Parfait !
Pour Lua , je passe ...