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 :

Code : Tout sélectionner

if otherdevices['Volet séjour 1'] == "Closed"
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)

Code : Tout sélectionner

print(otherdevices['Volet séjour 1']) 
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)

Code : Tout sélectionner

print(otherdevices['Volet séjour 1']) 
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 ?

Code : Tout sélectionner

print("etat volet: ".. otherdevices['Volet séjour 1']) 

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 ?

Code : Tout sélectionner

print("etat volet: ".. otherdevices['Volet séjour 1']) 
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... :mrgreen:

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
:)