Page 1 sur 1
DzVents, variables globales et conditions de déclenchements d'un script
Publié : 06 avr. 2020, 18:16
par Greg.O
Salut,
pas trop au point en DzVents, je tente de faire un script qui se déclenche par le changement d'état d'une variable globale persistante.
Voici la variable telle que je l'ai définie dans mon fichier global_data_lua :
Et voici un premier jet d'un script qui doit se déclencher par modification de la variable Besoin_Ventilation_SDB_1 :
Code : Tout sélectionner
return {
active = true,
logging = {
level = domoticz.LOG_INFO,
marker = "Script de sélection automatique de la vitesse de VMC :"
},
on = {
variables = { 'Besoin_Ventilation_SDB_1' }
},
data = {
Cible_Humidite_SDB1,
},
execute = function(domoticz, variable)
if (variable.value == true) then
domoticz.log("J'ai bien détecté dans un autre script le besoin de modifier la vitesse de la VMC")
else
domoticz.log('Bien détecté dans un autre script le besoin de repasser en vitesse 1')
end
end
}
Mais vous l'aurez compris, ça ne fonctionne pas. Je sais que la variable change de valeur car je la teste dans un autre script, mais elle ne déclenche pas d'action dans le script que je vous présente.
Est ce que les masters du DzVent peuvent m'aider svp ?
Re: DzVents, variables globales et conditions de déclenchements d'un script
Publié : 06 avr. 2020, 19:40
par Neutrino
Tu confonds ( à juste titre) variables utilisateur et variable globale.
Le script se déclenche à la modification d'une variable utilisateur. (Configuration>Plus D'options>Variables Utilisateurs).
https://www.domoticz.com/wiki/DzVents:_ ... le_changes
Re: DzVents, variables globales et conditions de déclenchements d'un script
Publié : 06 avr. 2020, 21:22
par Greg.O
Ok, je vais changer la déclaration de mes variables.
Mais alors, dans la philosophie de DzVents, à quoi servent les variables globales ? En effet, on peut les remplacer par des variables utilisateurs qui ont ce petit avantage en plus qui est de pouvoir déclencher des scripts.
Re: DzVents, variables globales et conditions de déclenchements d'un script
Publié : 06 avr. 2020, 21:36
par Neutrino
Pour un simple booléen, pas vraiment de différence.
Mais tu peux stocker des tableaux, calculer des moyennes, sortir des historiques....
https://www.domoticz.com/wiki/DzVents:_ ... _variables
Re: DzVents, variables globales et conditions de déclenchements d'un script
Publié : 11 avr. 2020, 17:19
par Greg.O
J'ai passé l'étape du déclenchement du script en créant des variables 'user'. J'en ai donc trois :
Besoin_Ventilation_SDB_1
Besoin_Ventilation_SDB_2
Besoin_Ventilation_SDB_3
Je tourne et retourne le wiki, les recherches sur google, mais je bloque sur la façon de faire un test avec ces variables dans mon code : j'aimerais que lorsque une de ces variables passe à 'true', mon script passe la VMC en vitesse 2. Pour ça j'ai fait ce script :
Code : Tout sélectionner
on = {
variables = { Besoin_Ventilation_SDB_*'}
},
execute = function(dz, var)
if (dz.variables.var.value == 'true') then
dz.log("J'ai bien détecté dans un autre script le besoin de modifier la vitesse de la VMC")
else
dz.log('Bien détecté dans un autre script le besoin de repasser en vitesse 1')
end
end
j'ai aussi essayé comme ça :
Code : Tout sélectionner
on = {
variables = { Besoin_Ventilation_SDB_*'}
},
execute = function(dz, var)
if (var.value == 'true') then
dz.log("J'ai bien détecté dans un autre script le besoin de modifier la vitesse de la VMC")
else
dz.log('Bien détecté dans un autre script le besoin de repasser en vitesse 1')
end
end
j'ai essayé avec des .sValue, des .RawData mais rien n'y fait : je n'arrive pas à faire un test qui fonctionne sur la valeur de la variable qui a changée.
Une idée ?
Re: DzVents, variables globales et conditions de déclenchements d'un script
Publié : 11 avr. 2020, 19:28
par Neutrino
Script will only execute when this variable is updated directly by dzVents or by a JSON. If updated with a standard Lua script (using commandArray) or in combination with a time option like afterAAA no event will be triggered.
Comment est modifiée ta variable ?
Ton script se lance ou pas ?
Pour moi, la v2 devrait fonctionner si tes variables sont actualisé par un autre dzvents ou par l'interface web (qui envoie un json).
Re: DzVents, variables globales et conditions de déclenchements d'un script
Publié : 12 avr. 2020, 01:00
par Greg.O
Merci pour l'aide,
j'ai bien trouvé dans le wiki ce passage. Oui, c'est un autre script écrit en DzVents qui change la variable utilisateur. Oui, le script se déclenche bien.
Par contre, il ne rentre jamais dans la condition if == 'true'. Pourtant, la variable est bien à 'true'.
Je pense donc que c'est la condition qui est mal écrite, mais je n'arrive pas à trouver, ni sur le wiki, ni sur le forum, la bonne façon d'écrire un test sur une variable utilisateur.
Re: DzVents, variables globales et conditions de déclenchements d'un script
Publié : 12 avr. 2020, 06:18
par denis_brasseur
J'utilise le test de l'état d'une variable comme ceci dans 2 scripts, je ne l'utilise pas en changement d'état de cette variable :
Code : Tout sélectionner
execute = function(dz)
local var_my_var = dz.variables('__var_my_var').value
if var_my_var == 'true' then
Re: DzVents, variables globales et conditions de déclenchements d'un script
Publié : 12 avr. 2020, 11:18
par boum
Ça devrait fonctionner. Il faut vérifier (par les logs) que la valeur de la variable est bien celle attendue.
Code : Tout sélectionner
on = {
variables = { Besoin_Ventilation_SDB_*'}
},
execute = function(dz, var)
print("Script pour " .. var.trigger .. " : " .. var.name .. " = '" .. var.value .. "' (" .. type(var.value) .. ") -> " .. tostring(var.value == 'true') )
if var.value == 'true' then
dz.log("J'ai bien détecté dans un autre script le besoin de modifier la vitesse de la VMC")
else
dz.log('Bien détecté dans un autre script le besoin de repasser en vitesse 1')
end
end
Parmi les problèmes courant, il pourrait y avoir un problème de nom de variable, de case 'True', de type, d'espace supplémentaire 'true ' (d'où les ' à l'intérieur des " pour voir ça dans le print)…
bon courage
Re: DzVents, variables globales et conditions de déclenchements d'un script
Publié : 12 avr. 2020, 12:21
par Greg.O
Merci pour l'aide,
la version suivante fonctionne :
Il y a des fois où la programmation lorsqu'on est un amateur, vous rend fous !! Je suis persuadé d'avoir testé cette syntaxe et qu'elle me renvoyait un message d'erreur.