[résolu] Scripts LUA non exécutés

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
domdom
Messages : 79
Inscription : 20 mai 2016, 10:48
Localisation : Ille-et-Vilaine

[résolu] Scripts LUA non exécutés

Message par domdom »

Bonjour à tous,

Je n'arrive pas à faire fonctionner les scripts lua dans la dernière version de Domoticz. Ca a fonctionné à une époque, mais j'ai laissé les choses en plan quelques semaines, et j'ai maintenant l'impression que Domoticz n'exécute aucun script.

Pour le vérifier, j'ai créé le script /home/pi/domoticz/scripts/lua/script_device_test.lua dans lequel j'ai juste copié la ligne :

Code : Tout sélectionner

print("Test script device LUA")
Si j'ai bien compris, ce script devrait être exécuté à chaque changement d'état d'un capteur distant, et devrait sortir une erreur car il ne retourne pas le commandArray.

Dans le log, rien ne se passe, j'ai juste la ligne suivante qui s'affiche à chaque fois que je passe la main devant le capteur :
2016-11-21 21:19:11.747 (MySensors) Lux (capteurLuminosite)

Dans l'interface web, dans le menu paramètre/autres, j'ai essayer de cocher/décocher le paramètre Systèmes évènements sans que résultat.

Si quelqu'un a une idée, ça m'aiderait énormément, j'ai passé un bout de la nuit d'hier à tourner en rond et je ne vois plus dans quelle direction chercher.

Merci d'avance et bonne soirée

dom
Dernière modification par domdom le 22 nov. 2016, 21:46, modifié 1 fois.
thier
Messages : 807
Inscription : 26 sept. 2015, 10:32
Localisation : charente

Re: Scripts LUA non exécutés

Message par thier »

voir le script_device_demo pour comprendre comment ça fonctionne.
"Always, and I repeat ALWAYS start by checking for the state of the changed device." -> toujours, je répète toujours commencer par vérifier l'état du device qui change.
Je pense que tu n'as pas saisie que tous les scripts_devices sont lus quand un device change d'état par contre seul celui correspondant à ton changement va s'exécuter. Il faut en début de script une condition du type if (devicechanged['MyDeviceName'] etc....
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
domdom
Messages : 79
Inscription : 20 mai 2016, 10:48
Localisation : Ille-et-Vilaine

Re: Scripts LUA non exécutés

Message par domdom »

Bonsoir thier,
Merci pour ta réponse.
J'avais crû comprendre que lorsqu'un device changeait, tous les scripts device étaient exécutés, raison pour laquelle il fallait commencer chaque script par un test sur le(s) device(s) devant déclencher l'exécution du script.

Suite à ta remarque, j'ai testé le script suivant qui devrait, si j'ai bien compris, afficher les devices dont l'état a changé.
Mais ça ne fonctionne pas, j'ai l'impression que Domoticz n'exécute pas les scripts sur évènements...

Code : Tout sélectionner

commandArray = {}
print("Test script device LUA")
for deviceName,deviceValue in pairs(devicechanged) do
    print ("Device based event fired on '"..deviceName.."', value '"..tostring(deviceValue).."'");
end
return commandArray
Bonne soirée
thier
Messages : 807
Inscription : 26 sept. 2015, 10:32
Localisation : charente

Re: Scripts LUA non exécutés

Message par thier »

commence super simple

Code : Tout sélectionner

Local MyDeviceName = 'le device que tu veux surveiller'
commandArray = {}
if (devicechanged['MyDeviceName'] ) then
print('Test script device LUA')
end
return commandArray
J'avais crû comprendre que lorsqu'un device changeait, tous les scripts device étaient exécutés -> non, ils sont tous lus mais l'exécution dépend des conditions.
Attention dans tes print tu te trompes dans les " et les '.
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Scripts LUA non exécutés

Message par vil1driver »

Salut,
domdom a écrit : Si j'ai bien compris, ce script devrait être exécuté à chaque changement d'état d'un capteur distant, et devrait sortir une erreur car il ne retourne pas le commandArray.
Tout à fait.
thier a écrit : J'avais crû comprendre que lorsqu'un device changeait, tous les scripts device étaient exécutés -> non, ils sont tous lus mais l'exécution dépend des conditions.
C'est jouer sur les mots. . exécutés/lus. . Ce sont les actions qui sont ou non conditionelles. .

Domdom, quelle version as tu au juste car une derniere stable est sortie il y a peu et corrige ce soucis.
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
domdom
Messages : 79
Inscription : 20 mai 2016, 10:48
Localisation : Ille-et-Vilaine

Re: Scripts LUA non exécutés

Message par domdom »

Ok, merci pour tes explications, je comprends mieux.
J'ai essayé ton script, en modifiant le nom de mon device :

Code : Tout sélectionner

Local MyDeviceName = 'capteurMouvementGarage'
commandArray = {}
if (devicechanged['MyDeviceName'] ) then
	print('Test script device LUA')
end
return commandArray
Dans le log, j'ai bien la ligne suivante qui s'affiche lorsque le capteur change d'état, mais le script n'affiche rien :
2016-11-21 23:12:53.859 (MySensors) Lighting 2 (capteurMouvementGarage)
thier
Messages : 807
Inscription : 26 sept. 2015, 10:32
Localisation : charente

Re: Scripts LUA non exécutés

Message par thier »

Je ne sais pas ce que tu as comme ordi mais ton script est bien enregistré dans le dossier scripts/lua et sous le nom script_device_XXX ?
Pas de demo dans le nom sinon il n'est pas exécuté.
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
domdom
Messages : 79
Inscription : 20 mai 2016, 10:48
Localisation : Ille-et-Vilaine

Re: Scripts LUA non exécutés

Message par domdom »

Mon domoticz tourne sur un raspberry pi 2.
Le nom de mon script est script_device_dvs.lua
Dans le même répertoire, j'ai un script de type time qui est bien exécuté, je pense donc être dans le bon répertoire.

Autre truc qui n'a peut-être rien à voir mais comme ça tourne autour des évènements système, on ne sait jamais, c'est peut-être une piste : quand je vais dans la page réglages/plus d'options/évènements, lorsque je clique sur le bouton show current states, j'ai le message d'erreur suivant Error getting current states, Is the Eventsystem Enabled?
Est-ce normal ?

Encore merci pour ton aide. Si ça continue, je vais reformater mon PI pour repartir d'une installation clean, je ne vois pas quoi faire d'autre... :|
thier
Messages : 807
Inscription : 26 sept. 2015, 10:32
Localisation : charente

Re: Scripts LUA non exécutés

Message par thier »

Le script est au bon endroit.
Pour ton erreur je regarderai dans reglages/paramètre/autre que la case Système événement (Lua/Blockly/Scripts):desactiver est décochée. Elle doit l'être puisque tu dis que tu as un script time qui s'exécute.
As-tu vu la question de vill1driver? Avant de tout réinstaller j'essaierai au moins un reboot.
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
domdom
Messages : 79
Inscription : 20 mai 2016, 10:48
Localisation : Ille-et-Vilaine

Re: Scripts LUA non exécutés

Message par domdom »

Oui, la case est bien décochée.

Oups, en effet, j'étais passé à côté de la question de vil1driver...

Ma version est celle-ci :

Version: 3.5974
Build Hash: 4641441
Compile Date: 2016-11-20 12:18:27

Lorsque je vérifie les mises à jour via l'interface, aucune nouvelle version n'est disponible.
Répondre