Page 1 sur 1

bonne pratiques pour structurer un script lua ?

Publié : 23 déc. 2018, 14:27
par johnnybravo
Je me fais peut-être des nœuds au cerveau pour rien mais bon..
j'ai de plus en plus de scripts divers et je sais qu'il faut commencer le plus vite possible les scrips device avec "if devicechanged[bidule]" pour que les scripts qui ne concernent pas le bidule soient quittés le plus vite possible

Dans mes scripts j'ai
- des variables définies localement
- un appel à un fichier lua placé dans répertoire domoticz avec tout pleins de jolies fonctions (merci à Vil1driver !) à utiliser dans les scripts

Y-a-t-il une bonne pratique.. qu'est-ce qui serait le mieux parmi ces 3 exemples ? intuitivement je dirais le 3e cas

Cas 1 - le fichier lua avec fonction magique est chargé et la variable définie, le tout avant le commandArray ou on vérifie le device

Code : Tout sélectionner

dofile('/home/pi/domoticz/scripts/lua/zzModules.lua')
local MyDebug=true
commandArray = {}
if devicechanged['TestSwitch1'] then
gram(MyDebug,'Hello world')
end
return commandArray
ou
Cas 2 - le fichier lua avec fonction magique est chargé et la variable définie, le tout dans le commandArray ou on vérifie le device

Code : Tout sélectionner

commandArray = {}
dofile('/home/pi/domoticz/scripts/lua/zzModules.lua')
local MyDebug=true
if devicechanged['TestSwitch1'] then
gram(MyDebug,'Hello world')
end
return commandArray
ou encore
Cas 3 - le device est vérifié avant toute chose.. donc variable et chargement de fichier ne sont faits qui si nécessaire

Code : Tout sélectionner

commandArray = {}
if devicechanged['TestSwitch1'] then
    local MyDebug=true
    dofile('/home/pi/domoticz/scripts/lua/zzModules.lua')
    gram(MyDebug,'Hello world')
end
return commandArray

Re: bonne pratiques pour structurer un script lua ?

Publié : 23 déc. 2018, 14:54
par cyberbob
Je dirais aussi la 3, quitte directement le script si le if est faux.
Par contre les instructions que tu utilise me sont totalement inconnue :

dofile('/home/pi/domoticz/scripts/lua/zzModules.lua') :
Cela fait quoi exactement, sa appelle un autre script, donc c'est comme si tu avais écrit la fonction "zzmodules.lua" dans le script de base ?

gram(MyDebug,'Hello world') :
Est-ce que cela envoie une notif. sur telegram ?
Je connais la syntaxe :
os.execute('curl --data chat_id='..chatid..' --data-urlencode "text=le texte a envoyer" "https://api.telegram.org/bot'..token..'/sendMessage" ')

donc je ne vois vraiment pas trop.

Re: bonne pratiques pour structurer un script lua ?

Publié : 23 déc. 2018, 15:04
par johnnybravo
Vil1driver à un fichier lua qui contient beaucoup de fonctions utiles (je vois d'ailleurs qu'il vient d'en rajouter) que l'on peut ainsi appeler depuis n'importe quel script pour peu que l'on pointe vers ce fichier lua
Vil1driver: https://easydomoticz.com/forum/memberli ... file&u=309
le fichier: https://github.com/vil1driver/lua/blob/ ... odules.lua

le "dofile..'' référence effectivement ce fichier que j'ai nommé zzModules.lua
gram est une fonction que j'ai modifiée pour m'envoyer un télégram en situation de debug, et qui est dans ce même fichier lua

Code : Tout sélectionner

function gram(val, message)
	if (val == true) then
		local token = "xxxxxxx"
		local chatid = "yyyyy"
		os.execute('curl --data chat_id='..chatid..' --data-urlencode "text='..message..'"  "https://api.telegram.org/bot'..token..'/sendMessage" ')
	end
end

Re: bonne pratiques pour structurer un script lua ?

Publié : 23 déc. 2018, 15:26
par cyberbob
merci je comprend mieux.
Cela permet de centraliser toute les fonctions dans 1 script, au lieu d'écrire la fonction que l'on a besoin dans les différent script, ce qui fait des doublons.