Page 1 sur 2
script lua en lancement direct par device
Publié : 09 déc. 2018, 16:47
par paya.aabg
Bonjour;
je n'arrive pas à lancer un script lua DIRECTEMENT par un switch.
j arrive à lancer des scripts python ou shell, mais pas lua.
j ai déjà vérifié les permissions, http ou https avec ou sans id+mot de passe avec // ou /// dans la ligne de commande,
impossible ERROR 32256 et ou 512
quelqu'un a t il une idée ?
Re: script lua en lancement direct par device
Publié : 11 déc. 2018, 15:49
par digdogger
Salut,
le script Lua se lance systématiquement si un matériel change d'état et si son nom respecte çà: "script_device_xxxxxxxxx.lua"
Dès que ton switch change d'état, le script est exécuté et il doit être tourné à peu près comme çà:
Code : Tout sélectionner
commandArray = {}
if (devicechanged['Mon_Switch'] == 'On' ) then
print('coucou') --do something
end
return commandArray
Sinon, voir ici, c'est bien expliqué:
https://easydomoticz.com/point-scripts-lua/
Re: script lua en lancement direct par device
Publié : 15 déc. 2018, 13:24
par paya.aabg
merci,
je découvre!!!
j'essaye
Re: script lua en lancement direct par device
Publié : 15 déc. 2018, 14:17
par paya.aabg
En fait, non, je connaissais. Je n'avais pas compris.
Je n'utilise jamais cette particularité, tous mes scripts sont déclarés par famille (time,device...) sans mention directe dans le titre (ex t_chauffage.lua) je rajoute quand meme t_ ou d_ pour m'y retrouver plus tard.
Malheureusement cela ne répond pas au problème :
comment lancer directement un script lua dans la ligne de commande d'un interrupteur ou d'un sélecteur.
par exemple j'ai sur un bouton:
dans le champ ACTION ON: script:///home/pi/433Utils/RPi_utils/otiocd_rdc 00
qui lance un script (C compilé)
impossible d arriver au même résultat avec un script LUA
Le but étant justement de court circuiter le passage par un script de type 'DEVICE'
Re: script lua en lancement direct par device
Publié : 15 déc. 2018, 15:51
par vil1driver
Salut,
paya.aabg a écrit : 15 déc. 2018, 14:17
Le but étant justement de court circuiter le passage par un script de type 'DEVICE'
Quel intérêt ?

Re: script lua en lancement direct par device
Publié : 15 déc. 2018, 20:20
par paya.aabg
1- éviter de surcharger l'énumération des scripts dans DMZ .en principe on devrait pouvoir tout gérer avec un seul script 'time' et un seul script 'device', mais ça demande des MAJ compliquées. L'appel direct d'action évite cela pour des actions ponctuelles.
2- scripts plus 'généralistes' sur la gestion plus globale, non limités dans la durée (ça existe déjà en BASH ou en C)
3-scripts d'affichage 'direct' sur les selecteurs EX changement d'icone (pour l'instant je n'y arrive pas en direct, mais justement ca marche en passant par un script 'device')
4-j'aimerais comprendre aussi pourquoi j'arrive à lancer un BASH ou un programme en C compilé et PAS un LUA ???
Re: script lua en lancement direct par device
Publié : 15 déc. 2018, 20:22
par paya.aabg
PS:
c'est un reste aussi de ma formation (ancienne, très ancienne) d'économie de ressources processeur quand c'est possible...
Re: script lua en lancement direct par device
Publié : 15 déc. 2018, 20:51
par vil1driver
Aucun soucis pour lancer un script lua ou autres langages comme tu le souhaites mais tu devras te passer des tables que domoticz fournit lorsque c'est lui qui le lance.. De même pour les actions, tout devra se faire via l'api json..
Les économies dont tu parles sont illusoires.
Un seul script device et un seul time, ca fonctionne, aucune complication niveau maj mais pas vraiment d'intérêt
Re: script lua en lancement direct par device
Publié : 15 déc. 2018, 21:50
par Neutrino
Sinon, il suffit de renommer ton fichier avec le nom du dispositif qui l'actionne :
As of version V3.8050 device scripts can be named the same as the device to only evaluate the Lua code when this device changes. Eg. if you use script_device_switch_1.lua and you have a device named 'Switch 1', this script will only trigger when this device updates. You should only use lowercase characters in the file name for this to work. Spaces are set with an underscore (_). If you name the script randomly, eg. script_device_somethingelse.lua, and there is no such device named 'somethingelse', it will evaluate the script on all device changes, the same behavior as pre V3.8050.
https://wiki.domoticz.com/wiki/Events
Re: script lua en lancement direct par device
Publié : 15 déc. 2018, 22:54
par vil1driver
Je n'ai jamais compris pourquoi ils avaient implémenté cela, entre se palucher la liste des devices pour voir si le nom du script correspond à un device existant, ou lire les 3, 4 premières ligne du script..
Je ne suis pas certain qu'il y ait un gain.