Requête GET HTTP via script LUA
Re: Requête GET HTTP via script LUA
Bonsoir
Donne nous la réponse intégrale de ton serveur ici
Donne nous la réponse intégrale de ton serveur ici
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Objectif : WAF > 1
Re: Requête GET HTTP via script LUA
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 ...
Code : Tout sélectionner
b8%3A27%3Aeb%3A73%3A5e%3A40 mixer volume 30Et le script simple
Code : Tout sélectionner
#!/bin/bash
echo -e "$1\nexit\n" | netcat $2 $3
Code : Tout sélectionner
./squeeze.sh "mixer volume ?" 192.168.1.80 9090-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 ...
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Requête GET HTTP via script LUA
je pense que ceci doit faire le job:
il y surement plus propre, mais ça doit fonctionner comme ceci, pas besoin de script bash à mon avis..
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 commandArrayMAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Requête GET HTTP via script LUA
Bonsoir,vil1driver a écrit :je pense que ceci doit faire le job:
il y surement plus propre, mais ça doit fonctionner comme ceci, pas besoin de script bash à mon avis..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
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
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Requête GET HTTP via script LUA
ahhh j'avais mal lu, désolé :/
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Requête GET HTTP via script LUA
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
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
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
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Objectif : WAF > 1
Re: Requête GET HTTP via script LUA
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...
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
Voici le script permettant de retourner la réponse dans une variable interne à Domitcz
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
Evidemment ce que j'ai noté n'est pas correct mais je n'ai pas trouvé de réponse à cette question
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
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';...Re: Requête GET HTTP via script LUA
Parfait !
Pour Lua , je passe ...
Pour Lua , je passe ...
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Objectif : WAF > 1