Mémoriser une suite de chiffres affichés sur une page web simple
Mémoriser une suite de chiffres affichés sur une page web simple
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 !
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 !
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Mémoriser une suite de chiffres affichés sur une page web simple
salut,
crée une variable utilisateur nommée 'etat' par exemple
puis essai ceci:
si tu n'as pas curl,
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
Code : Tout sélectionner
sudo apt-get update
sudo apt-get install libcurl3 curl php5-curl
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: Mémoriser une suite de chiffres affichés sur une page web simple
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...
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...
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart
Re: Mémoriser une suite de chiffres affichés sur une page web simple
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
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
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
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Mémoriser une suite de chiffres affichés sur une page web simple
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.
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
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: Mémoriser une suite de chiffres affichés sur une page web simple
Ah ce n'est pas une fonction du langage, alors ça ira mieux comme ça en effet
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: Mémoriser une suite de chiffres affichés sur une page web simple
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 ?
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 ?
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart
Re: Mémoriser une suite de chiffres affichés sur une page web simple
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
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
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: Mémoriser une suite de chiffres affichés sur une page web simple
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 !
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 !
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart
Re: Mémoriser une suite de chiffres affichés sur une page web simple
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 !
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 !
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart