Blocky qui boucle

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
JuGuSm
Messages : 20
Inscription : 16 sept. 2018, 15:00

Re: Blocky qui boucle

Message 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 :)
JuGuSm
Messages : 20
Inscription : 16 sept. 2018, 15:00

Re: Blocky qui boucle

Message 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.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Blocky qui boucle

Message 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
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
fredandrick65
Messages : 121
Inscription : 23 avr. 2016, 20:45

Re: Blocky qui boucle

Message 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
Domoticz V3.8153 sur Synology DS3615xs DSM 5.2-5967 Update 3
RFLink_v1.1_r46 (433.92 & 433.42 Mhz)
Sonde Oregon THGR810-Prise Everspring-OWL CM180
Humidité du sol Opus XT300-Sondes Oregon pour les nuls V2

Les non-dit font les pires malentendus ! ;)
JuGuSm
Messages : 20
Inscription : 16 sept. 2018, 15:00

Re: Blocky qui boucle

Message 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... :-/
Dernière modification par JuGuSm le 16 sept. 2018, 20:12, modifié 1 fois.
JuGuSm
Messages : 20
Inscription : 16 sept. 2018, 15:00

Re: Blocky qui boucle

Message 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.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Blocky qui boucle

Message 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']) 
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
JuGuSm
Messages : 20
Inscription : 16 sept. 2018, 15:00

Re: Blocky qui boucle

Message 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:
JuGuSm
Messages : 20
Inscription : 16 sept. 2018, 15:00

Re: Blocky qui boucle

Message 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
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Blocky qui boucle

Message par vil1driver »

:)
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Répondre