Page 2 sur 2
Re: Blocky qui boucle
Publié : 16 sept. 2018, 18:47
par JuGuSm
YES ! C'était donc ça !
Merci

je vais un peu plus me documenter sur le lua et l'interraction avec Domoticz avant d'aller plus loin. D'ailleurs merci pour tes modules en signature, ça va m'aider

Re: Blocky qui boucle
Publié : 16 sept. 2018, 18:56
par JuGuSm
Et si je souhaite me baser sur l'état du volet comment dois-je procéder ?
J'ai pensé à ça mais ça ne fonctionne pas :
Code : Tout sélectionner
commandArray = {}
if devicechanged['Xiaomi Smart Switch 1'] == "On" then
if otherdevices['Volet séjour 1'] == "Closed" then
commandArray['Volet séjour 1'] = "On"
elseif otherdevices['Volet séjour 1'] == "Open" then
commandArray['Volet séjour 1'] = "Off"
end
end
return commandArray
C'est sûrement cette ligne qui ne fonctionne pas :
mais je ne pense pas qu'il faille utiliser "devicechanged" non ? Car l'état du volet n'a pas changé, je souhaite juste connaître son état actuel.
Re: Blocky qui boucle
Publié : 16 sept. 2018, 19:04
par vil1driver
Avant le teste tu peux vérifier l'état (visible en log)
Les print sont une aide importante pour visualiser les choses
Re: Blocky qui boucle
Publié : 16 sept. 2018, 19:14
par fredandrick65
JuGuSm a écrit :Et si je souhaite me baser sur l'état du volet comment dois-je procéder ?
J'ai pensé à ça mais ça ne fonctionne pas :
Code : Tout sélectionner
commandArray = {}
if devicechanged['Xiaomi Smart Switch 1'] == "On" then
if otherdevices['Volet séjour 1'] == "Closed" then
commandArray['Volet séjour 1'] = "On"
elseif otherdevices['Volet séjour 1'] == "Open" then
commandArray['Volet séjour 1'] = "Off"
end
end
return commandArray
Je ferai plutôt ça.
dans ton code tu mets ['Volet séjour 1'] à On ou Off et apres tu teste Open ou Close, c'est pas logique
Code : Tout sélectionner
commandArray = {}
if devicechanged['Xiaomi Smart Switch 1'] == "On" then
if otherdevices['Volet séjour 1'] == "On" then -- On pour un volet = Fermé
commandArray['Volet séjour 1'] = "Off"
elseif otherdevices['Volet séjour 1'] == "Off" then -- Off pour un volet = Ouvert
commandArray['Volet séjour 1'] = "On"
end
end
return commandArray
Re: Blocky qui boucle
Publié : 16 sept. 2018, 20:11
par JuGuSm
vil1driver a écrit :Avant le teste tu peux vérifier l'état (visible en log)
Les print sont une aide importante pour visualiser les choses
En effet, je bidoullait avec os.execute pour écrire dans un fichier avec un tail -f à côté ; c'est mieux comme ça
Bon par contre ça n'écrit rien dans la log... :-/
Re: Blocky qui boucle
Publié : 16 sept. 2018, 20:12
par JuGuSm
fredandrick65 a écrit :dans ton code tu mets ['Volet séjour 1'] à On ou Off et apres tu teste Open ou Close, c'est pas logique
Non je teste l'état du volet avant de l'ouvrir ou de le fermer.
Re: Blocky qui boucle
Publié : 16 sept. 2018, 20:16
par vil1driver
JuGuSm a écrit : ça n'écrit rien dans la log... :-/
Rien ou une ligne vide ?
Re: Blocky qui boucle
Publié : 16 sept. 2018, 20:25
par JuGuSm
vil1driver a écrit :JuGuSm a écrit : ça n'écrit rien dans la log... :-/
Rien ou une ligne vide ?
Une ligne vide mais je viens de comprendre que c'est parce que j'ai appeler les différents dispositifs de mon volet avec le même nom...

Re: Blocky qui boucle
Publié : 16 sept. 2018, 21:56
par JuGuSm
Merci à tous, voici mon script final :
Code : Tout sélectionner
commandArray = {}
if devicechanged['Xiaomi Smart Switch 1'] == "On" then
print('--- OpenOrCloseAllBlinds - BEGIN ---')
-- Create a variable to count how many blinds are opened
local OpenedBlinds = 0
-- Count opened blinds (not closed because they can be not fully opened)
if otherdevices['Volet séjour 1'] ~= "Closed" then OpenedBlinds = OpenedBlinds + 1 end
if otherdevices['Volet séjour 2'] ~= "Closed" then OpenedBlinds = OpenedBlinds + 1 end
if otherdevices['Volet séjour 3'] ~= "Closed" then OpenedBlinds = OpenedBlinds + 1 end
if otherdevices['Volet cuisine'] ~= "Closed" then OpenedBlinds = OpenedBlinds + 1 end
print(OpenedBlinds..' opened blinds:')
print('Volet séjour 1: '..otherdevices['Volet séjour 1'])
print('Volet séjour 2: '..otherdevices['Volet séjour 2'])
print('Volet séjour 3: '..otherdevices['Volet séjour 3'])
print('Volet cuisine: '..otherdevices['Volet cuisine'])
-- If at least 1 blind is opened, close all of them
if OpenedBlinds > 0 then
print('Closing all blinds')
commandArray['Scene:Fermer les stores']='On'
-- else, open all of them
else
print('Opening all blinds')
commandArray['Scene:Ouvrir les stores']='On'
end
print('--- OpenOrCloseAllBlinds - END ---')
end
return commandArray
Re: Blocky qui boucle
Publié : 17 sept. 2018, 03:48
par vil1driver