Page 5 sur 8

Re: bibliothèque de fonctions pour scripts LUA

Publié : 03 mars 2018, 16:46
par papoo
non j'ai confondu dzvents et lua
comme tu l'as remarqué c'est du dzvents
vais l'adapter en lua

Re: bibliothèque de fonctions pour scripts LUA

Publié : 03 mars 2018, 17:31
par papoo
la fonction lua :

Code : Tout sélectionner

function telegram(msg)
commandArray[#commandArray+1] = {['OpenURL'] = 'https://api.telegram.org/bot'..TELEGRAM_API_key..'/sendMessage?chat_id='..chat_ID .. '&text=' .. msg}
end
j'ai modifié mon message précédent pour que l'on ne puisse pas se tromper

Re: bibliothèque de fonctions pour scripts LUA

Publié : 03 mars 2018, 18:19
par vil1driver
bien pratique ;) merci

Re: bibliothèque de fonctions pour scripts LUA

Publié : 21 mars 2018, 00:37
par landaisbenj
Hello.

Je tente de créer cette fonction:

Code : Tout sélectionner

function makeVariable(name,value)
	local url = 'curl '..domoticzURL..'/json.htm?type=command&param=saveuservariable&vname='..url_encode(name)..'&vtype=2&vvalue='..url_encode(value)
	local output = json:decode(os.capture(url, false))
	if output.status=="Variable name already exists!" then
	    log('Variable existante',debug)
	    local url = 'curl '..domoticzURL..'/json.htm?type=command&param=updateuservariable&vname='..url_encode(name)..'&vtype=2&vvalue='..url_encode(value)
	    local output = json:decode(os.capture(url, false))
	    if output.status=="Ok" then
	        log('Mise a jour variable existante')
        else
            error('Mise a jour de variable existante impossible')
        end
    elseif output.status=="Ok!" then
        log('Creation de variable avec les parametres')
    else
        error('Creation de variable impossible')
    end
end
Sauf qu'il a pas l'air d’apprécier le io.popen d'os.capture avec l'api.
Apres recherche il n'aime pas attendre:

Code : Tout sélectionner

script = ' [Test] ' ; commandArray={}
if devicechanged['Bouton Test']=='On' then
print('\n--------------------------------------------- '..script..' --------------------------------------------------------')

print('Debut de test')
os.execute( 'curl "http://192.168.0.38:8080/json.htm?type=command&param=updateuservariable&vname=Libre1&vtype=2&vvalue=TEST1"' )
print('Fin de test')
end
return commandArray
Me retour ca:
--------------------------------------------- [Test] --------------------------------------------------------
2018-03-21 09:23:04.426 dzVents: Debut de test
2018-03-21 09:23:14.424 Error: EventSystem: Warning!, lua script *** LUA: Test has been running for more than 10 seconds

On dirait que la reponse se fait trop attendre vu que je retir le &. Le script tourne plus de 10s et donc plante. Une idée d'ou ça peut provenir ? Ou comment je pourrais éviter l'attente tout en ayant la réponse ?

Pour info si je la test en ligne de commande depuis le pi, la réponse est immédiate. C'est étonnant que la commande via domoticz plante... :?:

Re: bibliothèque de fonctions pour scripts LUA

Publié : 21 mars 2018, 14:46
par vil1driver
pourquoi ne pas simplement tester l’existence de la variable directement ?

Re: bibliothèque de fonctions pour scripts LUA

Publié : 21 mars 2018, 15:18
par landaisbenj
Par ce que je ne sais pas comment faire :D ?

Re: bibliothèque de fonctions pour scripts LUA

Publié : 21 mars 2018, 15:33
par vil1driver
regarde à la fin de modules.lua, la fonction compute, un teste y est effectué avant de créer ou non les variables utiles à la fonction

Re: bibliothèque de fonctions pour scripts LUA

Publié : 21 mars 2018, 15:36
par landaisbenj
A ok. Donc c'est bien ce que j'avais voulu faire au debut:

Code : Tout sélectionner

if uservariables['Test'] == nil then 
Mais si la variable est créé et vide ?

Re: bibliothèque de fonctions pour scripts LUA

Publié : 21 mars 2018, 15:40
par vil1driver
vide n'est pas inexistant (nil)

de plus ce n'est pas permis

Re: bibliothèque de fonctions pour scripts LUA

Publié : 21 mars 2018, 15:49
par landaisbenj
A ok ?? Il me semblait avoir faire le test, j'avais du me trompé dans le nom de la variable. Du coup ca fonctionne bien merci.
Par contre j'arrive a faire une variable vide:

Code : Tout sélectionner

commandArray['Variable:Libre3']=''
Capture.PNG
Capture.PNG (3.62 Kio) Consulté 7552 fois
Bien merci pour la precision en tout cas je vais pouvoir avancer !!!

[EDIT] Bon ca n'empeche pas que le script crash si je fais l'os.execute mais j'ai ouvert un post sur le fofo us...