sortir d'un fonction Dz
sortir d'un fonction Dz
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
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
-
pierrotori
- Messages : 821
- Inscription : 29 févr. 2016, 12:11
Re: sortir d'un fonction Dz
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
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.
Code : Tout sélectionner
if condition == true then
goto exit
return
end
::exit::Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: sortir d'un fonction Dz
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...
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
On trouve généralement toujours une façon de faire différemment 
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: sortir d'un fonction Dz
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.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.Code : Tout sélectionner
if condition == true then goto exit return end ::exit::
Re: sortir d'un fonction Dz
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 
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: sortir d'un fonction Dz
Je viens de faire le test :
Le script ne s'exécute pas du tout. Même le premier print n'est pas vu...
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
}
Dernière modification par Keros le 10 janv. 2023, 12:40, modifié 1 fois.
Raison : Citation supprimée. Mercide den pas citer le message précédent lors d'une réponse directe
Raison : Citation supprimée. Mercide den pas citer le message précédent lors d'une réponse directe
Re: sortir d'un fonction Dz
- 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.
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
Re: sortir d'un fonction Dz
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...
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...
edit : j'avais oublié le point .data après item pour affiche sa valeur...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')
Dernière modification par Keros le 10 janv. 2023, 12:41, modifié 1 fois.
Raison : Citation supprimée. Mercide den pas citer le message précédent lors d'une réponse directe
Raison : Citation supprimée. Mercide den pas citer le message précédent lors d'une réponse directe