Page 1 sur 1
sortir d'un fonction Dz
Publié : 04 janv. 2023, 17:54
par skarab22
Bonjour,
Je suis entrain de faire un script pour éviter que mon poêle se mette en route si jamais on laisse une porte ou une fenêtre ouverte alors que le poêle est éteint.
Pour cela, j'ai fait un script en DzVents et j'aimerai savoir s'il est possible d'aller directement à la fin de function dans un if par exemple ?
Merci d'avance
Re: sortir d'un fonction Dz
Publié : 04 janv. 2023, 18:45
par pierrotori
A part faire des règles de gestion complémentaire ou d'utiliser le return pour sortir, je ne vois pas
Re: sortir d'un fonction Dz
Publié : 04 janv. 2023, 18:52
par Keros
La fonction goto répondrait à ton besoin ?
Partage-nous ton script, on verra peut-être une façon différente pour répondre à ton besoin.
Re: sortir d'un fonction Dz
Publié : 04 janv. 2023, 20:21
par skarab22
merci pour vos retour.
Pour l'instant, j'ai trouvé à faire sans et ça semble marcher mais il faut encore que je fasse des vérifications.
Si vous voyez des choses à améliorer lâchez vous, c'est du vite fait mais loin d'être bien fait...
Code : Tout sélectionner
return {
on = {
devices = {'Cbox - Room Temperature'},
},
data = {
prevTemp = { initial = 0},
storedSetTemp = { initial = 0},
storedTemp = { initial = 0},
openWindow = {initial = 'false'}
},
logging = {
level = domoticz.LOG_DEBUG
},
execute = function(domoticz, triggeredItem)
Temp = triggeredItem.temperature
pTemp = domoticz.data.prevTemp
delta = pTemp - Temp
domoticz.log('Température du salon : '.. Temp)
domoticz.log('La précédente valeur était : '.. pTemp)
domoticz.log('Delta de température : '.. delta)
domoticz.log('Setpoint stored température : '.. domoticz.data.storedSetTemp)
domoticz.log('Stored température : '.. domoticz.data.storedTemp)
if (domoticz.data.openWindow == 'false') then
if (domoticz.data.prevTemp ~= 0 and delta > 0.5 and storedSetTemp ~= 0 ) then
domoticz.log ('la température a chutée brutalement')
if (domoticz.devices('Cbox - Setpoint').setPoint ~= 7) then
domoticz.data.storedSetTemp = domoticz.devices('Cbox - Setpoint').setPoint --on stock l'ancienne valeur jusqu'à ce que la température remonte uniquement si elle n'a pas déjà été stocké
end
domoticz.data.storedTemp = Temp --on stock la température de la pièce avant de baisser
domoticz.devices('Cbox - Setpoint').updateSetPoint(7)
domoticz.log ('la température a chutée brutalement, Set point reglé à '.. domoticz.data.storedSetTemp..'°C')
end
else
if (domoticz.data.storedTemp ~=0 and (domoticz.data.storedTemp - Temp) < 1) then
domoticz.log('la température a remonté')
domoticz.devices('Cbox - Setpoint').updateSetPoint(domoticz.data.storedSetTemp)
domoticz.data.initialize('storedSetTemp')
domoticz.data.initialize('storedTemp')
end
end
domoticz.data.prevTemp = triggeredItem.temperature
end
}
Re: sortir d'un fonction Dz
Publié : 04 janv. 2023, 20:30
par Keros
On trouve généralement toujours une façon de faire différemment

Re: sortir d'un fonction Dz
Publié : 09 janv. 2023, 22:15
par skarab22
Keros a écrit : 04 janv. 2023, 18:52
La fonction goto répondrait à ton besoin ?
Partage-nous ton script, on verra peut-être une façon différente pour répondre à ton besoin.
Sauf erreur de ma part, la fonction goto ne marche pas et il ne semble pas non plus possible de faire un return dans un if.
Re: sortir d'un fonction Dz
Publié : 09 janv. 2023, 22:42
par Keros
Ah, je l'ai dans un script. Il me semblait que cela fonctionnait. Ou alors cette portion de script n'est jamais exécutée

Re: sortir d'un fonction Dz
Publié : 10 janv. 2023, 08:51
par skarab22
Je viens de faire le test :
Code : Tout sélectionner
return {
on = {
timer = {'every 30 seconds'}
},
execute = function(domoticz, triggeredItem)
print('script 1 en route')
if (1) then
return
end
print('le break ne marche pas')
end
}
Le script ne s'exécute pas du tout. Même le premier print n'est pas vu...
Re: sortir d'un fonction Dz
Publié : 10 janv. 2023, 10:23
par boum
- return marche très bien dans un bloc conditionnel (if/then/end). C'est break qui n'existe pas en Lua.
- le script ne s'exécute pas car le déclencheur n'est pas valide, les timers ne descendent pas sous la minute.
Re: sortir d'un fonction Dz
Publié : 10 janv. 2023, 10:35
par skarab22
effectivement...

Je suis mauvais Jack
J'avais fait le test en mettant le return sans le mettre dans un if et ça ne marchais pas, comme j'en avais marre d'attendre, j'ai changé le timer en même temps en pensant que ça marcherai...
Autre question : s'auriez vous pourquoi la fonction getAtTime(TimeAgo) ne me renvoit que l'index et pas la valeur ? Alors que dans le wiki c'est censé renvoyé les deux...
getAtTime(timeAgo): Returns the data point closest to the moment as specified by timeAgo and the index in the set. So, myVar.getAtTime('1:00:00') returns the item that is closest to one hour old. It may be a bit younger or a bit older than 1 hour. The second return value is the index in the set: local item, index = myVar.getAtTime('1:00:00')
edit : j'avais oublié le point .data après item pour affiche sa valeur...