Page 1 sur 3
Mémoriser une suite de chiffres affichés sur une page web simple
Publié : 20 févr. 2015, 16:20
par Nicogluck
Bonjour,
Mon installation contient une carte de relais IP que je contrôle via des lignes de commande HTTP.
Une commande particulière me permet de connaître l'état de chaque relais.
En l'occurence, " http://adresse_ip/port/99 " me renvoie une page blanche avec uniquement une suite de 16 chiffres à la suite, correspondant à l'état des 16 relais.
Ex : 0111000010011010
Je souhaite sauvegarder cette suite numérique, dans une variable utilisateur de Domoticz par exemple.
Le but est multiple : notamment avoir un retour sur l'état d'un relais après son activation ou bien sauvegarder l'état de la carte en cas de coupure de courant (dans ce cas, ça nécessiterait un fichier plutôt qu'une simple variable, évidemment).
Je débute en LUA. J'apprends vite mais là, c'est au delà de mes connaissances actuelles.
Merci à vous tous !
Re: Mémoriser une suite de chiffres affichés sur une page web simple
Publié : 20 févr. 2015, 17:29
par vil1driver
salut,
crée une variable utilisateur nommée 'etat' par exemple
puis essai ceci:
Code : Tout sélectionner
commandArray = {}
-- Path to curl
local curl = '/usr/bin/curl'
local state = os.capture(curl .. ' http://adresse_ip/port/99', true);
print('etat des relais: ' .. state)
commandArray['Variable:etat'] = tostring(state)
return commandArray
si tu n'as pas curl,
Code : Tout sélectionner
sudo apt-get update
sudo apt-get install libcurl3 curl php5-curl
Re: Mémoriser une suite de chiffres affichés sur une page web simple
Publié : 16 mars 2015, 22:07
par Nicogluck
Merci vil1driver, mais ça ne marche pas.
Pour commencer, il me revoit " attempt to call field 'capture' (a nil value) " concernant la ligne "local state = ..."
En remplaçant os.capture par os.execute, le message d'erreur disparaît, mais ma variable ne contient que " True " et non une suite de 0 et 1.
Je pense qu'on est sur la bonne voie, mais là, je ne vois pas.
L'aide contextuelle de cUrl ne m'aide pas vraiment...
Re: Mémoriser une suite de chiffres affichés sur une page web simple
Publié : 16 mars 2015, 23:48
par patrice
Bonsoir
Les 2 fonctions ne font pas le même job
os.capture , capture la chaine de caractère renvoyée par l'appel de la commande système alors que
os.execute lance le programme en question et te renvoie True ou False si ça c'est bien passe ou mal
Il faut donc vraiment que tu garde os.capture
En tant que non expert patenté de Lua et malgré une autre tentative ce soir j'obtiens la même erreur que toi
Attendons que nos amis experts de la chose passent par ici
Re: Mémoriser une suite de chiffres affichés sur une page web simple
Publié : 17 mars 2015, 17:20
par vil1driver
il faut dire que j'ai vraiment été mauvais sur ce coups
je ne t'ai donné qu'une partie du code, pas étonnant que ça ne fonctionnait pas.
voici le code dans son ensemble ce coups ci, testé fonctionnel ici.
Code : Tout sélectionner
function os.capture(cmd, raw)
local f = assert(io.popen(cmd, 'r'))
local s = assert(f:read('*a'))
f:close()
if raw then return s end
s = string.gsub(s, '^%s+', '')
s = string.gsub(s, '%s+$', '')
s = string.gsub(s, '[\n\r]+', ' ')
return s
end
commandArray = {}
-- Path to curl
local curl = '/usr/bin/curl'
local cmd = curl .. ' http://_________________'
local state = os.capture(cmd , true);
print('etat des relais: ' .. state)
commandArray['Variable:etat'] = tostring(state)
return commandArray
Re: Mémoriser une suite de chiffres affichés sur une page web simple
Publié : 17 mars 2015, 21:15
par patrice
Ah ce n'est pas une fonction du langage, alors ça ira mieux comme ça en effet
Re: Mémoriser une suite de chiffres affichés sur une page web simple
Publié : 17 mars 2015, 21:23
par Nicogluck
Alors bon, on avance, mais c'est pas parfait...
D'abord, merci à vil1driver, mais j'ai omis un détail non négligeable :
La suite de chiffre que renvoie l'adresse de requete HTTP est également un lien (qui n'a aucune utilité, en passant).
Résultat, lorsque je lance le script, ma variable contient :
"
<small><a href="http://192.168.1.110/30000"></a></small><a href="http://192.168.1.110/30000/101000100000 ... 1010</a><p> "
Y a-t-il un moyen de ne récupérer que la suite de chiffre ?
Re: Mémoriser une suite de chiffres affichés sur une page web simple
Publié : 17 mars 2015, 21:50
par patrice
Lua à une fonction qui permet de découper une chaine de caractères nommée string.sub
ainsi
string.sub("Hello Lua user", 7) -- from character 7 until the end
affichera
Lua user
infos sur les chaines ici
http://www.luteus.biz/Download/LoriotPr ... _chaine_13
Re: Mémoriser une suite de chiffres affichés sur une page web simple
Publié : 18 mars 2015, 00:42
par Nicogluck
Magnifique !!
Il ne me reste qu'à faire une petite routine pour vérifier que lorsque j'envoie une requête pour modifier l'état de certains relais, la carte me renvoie bien le nouvel état des relais concernés. Mais ça, je sais faire maintenant.
Grand merci à vous deux, patrice et vil1driver, pour cette affaire !
Re: Mémoriser une suite de chiffres affichés sur une page web simple
Publié : 18 mars 2015, 01:06
par Nicogluck
Euh.... Juste une bricole :
Mes relais sont actionnés via des boutons On/Off qui lancent des scripts en shell.
Le mieux, à mon avis, est d'inclure ma petite routine de vérification dans ces scripts. Mais autant maintenant je me débrouille en LUA pour manipuler des boutons et des variables, autant en shell, ça se complique.
Malgré mes recherches, j'ai pas trouvé de lien possible entre une variable utilisateur et un script en shell...
Si vous pouviez encore me filer ce petit coup de main, ce serait cool.
Ensuite, pour trouver l'équivalent du sub.string en shell, je vais trouver, promis !
