Page 1 sur 3

gérer durée fermeture volet rts somfy

Publié : 12 mars 2019, 14:18
par grdsek
Bojour
je possède des volets roulants RTS de chez somfy. Je les controle avec domoticz pour les ouvrir ou les fermer, ou avec le bouton poussoir (sans retour d'état snif).
Je souhaiterai gérer une fermeture partielle de certains volets en fonction de l'heure. Je sais qu'on ne peut pas gérer de fermeture partielle avec ces volets, mais on doit bien pouvoir déclencher une fermeture pendant une durée avant de passer à l'état stop.
J'ai recherché, et je ne trouve pas la commande LUA qui dirait: "fermeture du volet pendant 5s (par ex) puis stop".
Quelqu'un peut-il m'aider?
Merci d'avance

Re: gérer durée fermeture volet rts somfy

Publié : 12 mars 2019, 14:26
par Datawolf
Salut,

Tu aimerais donc envoyer l'ordre "fermeture" et tout de suite après l'ordre "stop".
La question est de savoir s'il attend que le volet soit fermé pour exécuter le stop.
Ca mérite un test, non ?

@+
Datawolf

Re: gérer durée fermeture volet rts somfy

Publié : 12 mars 2019, 14:38
par lost
grdsek a écrit : 12 mars 2019, 14:18 J'ai recherché, et je ne trouve pas la commande LUA qui dirait: "fermeture du volet pendant 5s (par ex) puis stop".
Quelqu'un peut-il m'aider?
Ca devrait pouvoir se faire via des ordres type "On FOR xx SECONDS" scriptés pour le switch de commande volet, non?

Cf:
https://www.domoticz.com/wiki/LUA_commands

Re: gérer durée fermeture volet rts somfy

Publié : 12 mars 2019, 15:05
par cyberbob
Pour moi ce serais possible via des 'ON AFTER x' ou 'OFF AFTER x'
où x est le temps en secondes.
Mais vu que l'on ne peu pas savoir le retour d'état des volets somfy (ce n'est pas prévus par se système) il faut bien démarrer par un position connues, soit un volet ouvert, fermé ou intermédiaire, la position My enregistrée dans le volet.
Ensuite envoyer un ordre ON ou OFF et immédiatement après un ordre My (stop) 'STOP AFTER x' et voir ne nombre de seconde que met le volet dans une position désirée.
Evidemment cela demandera pas mal de test pour arriver au bon réglage mais après on y bouge plus.

Re: gérer durée fermeture volet rts somfy

Publié : 12 mars 2019, 17:14
par fredandrick65
Perso je le fait mais avec des volets pilotés avec relai 433 Mhz ou il faut envoyer une deuxième fois la commande pour stopper le volet avec ce code

Code : Tout sélectionner

--	script_device_My_Volet_Chambre.lua
-- Fred & Rick - 2018

-- chargement des modules
package.path = "/volume1/@appstore/domoticz/var/scripts/lua/?.lua"
require "modules"

commandArray = {}
 if (devicechanged['My Volet Chambre'] =='On')  then
    -- print (' ',' ','_________________________ My Volet Chambre ____________________',' ',' ')
	local delai = 7
	local secs = 20
	switchMy('Volet 08 Chambre Terrasse',secs,delai)
	switchMy('Volet 09 Chambre Piscine',secs,delai)
 end
 return commandArray
il faut avoir le module.lua de vil1driver
et y ajouter la fonction suivante

Code : Tout sélectionner

-- switch My a devive for x secondes 
function switchMy(device, secs, delai)
   delai = delai + secs   
   switchOn(device)
   commandArray[#commandArray+1] = {[device] = "Off AFTER "..secs}
   commandArray[#commandArray+1] = {[device] = "Off AFTER "..delai}
end
et créer une scène qui active un Dummy nommée "My Volet Chambre" avec un délai d'extinction de 5s

Le script ferme le volet pour être sur qu'il est fermé après on attend le temps de fermeture(ici 20s ) puis on l'ouvre et on fait stop (ici apres 5s)

je pense que cela doit être adaptable
mais il faudrait envoyer la commande stop au lieu de Off

peut être en remplacant par

Code : Tout sélectionner

-- switch My a devive for x secondes 
function switchMy(device, secs, delai)
   delai = delai + secs   
   switchOn(device)
  commandArray[#commandArray+1] = {[device] = "Off AFTER "..secs}
   commandArray[#commandArray+1] = {[device] = "Stop AFTER "..delai}
end
Mais ça j'ai pas testé encore

Re: gérer durée fermeture volet rts somfy

Publié : 12 mars 2019, 18:55
par fredandrick65
Bon la j'ai tester et un peu simplifié

Code : Tout sélectionner

--	script_device_My_Volet_Salon.lua
-- 	Fred & Rick - 2019

local delai = 7		-- Délai de remonté du volet
local secs = 30		-- Temps de fermeture du volet

-- Entrouvre a device for x secondes 
function MyVolet(device, secs, delai)
   delai = delai + secs   
   commandArray[#commandArray+1] = {[device] = "On"}
   commandArray[#commandArray+1] = {[device] = "Off AFTER "..secs}
   commandArray[#commandArray+1] = {[device] = "Stop AFTER "..delai}
end

commandArray = {}

 if (devicechanged['My Volet Chambre'] =='On')  then
	MyVolet('Volet N° 3 Salon',secs,delai)
	MyVolet('Volet N° 4 Billard',secs,delai)
 end
 
 return commandArray
Script toujours activer par un Dummy nommé 'My Volet Chambre'

Re: gérer durée fermeture volet rts somfy

Publié : 12 mars 2019, 20:31
par lost
fredandrick65 a écrit : 12 mars 2019, 17:14 Perso je le fait mais avec des volets pilotés avec relai 433 Mhz ou il faut envoyer une deuxième fois la commande pour stopper le volet avec ce code
La version "On FOR xx SECONDS" permet d'éviter la 2ème commande et simplifie AMHA l'affaire.

Re: gérer durée fermeture volet rts somfy

Publié : 18 mars 2019, 13:54
par grdsek
bonjour,
merci à tous pour vos réponses.
Je n'ai pas de relai 433Mhz, donc j'ai testé cette solution:

Code : Tout sélectionner

-- script de fermeture des volets du salon pendant la journée
time = os.date("*t")
local delai = 5		-- Délai de remonté du volet
local secs = 3


commandArray = {}
  if (time.hour >= 11) and (time.hour < 12) then
      commandArray['volet_cuisine_terrasse'] = 'Off'  
      commandArray['volet_cuisine_terrasse'] = 'Stop AFTER 3'
        end
end
return commandArray
mais cela ne marche pas, car le volet passe àstop en meme temps que off, donc il ne bouge pas. Je n'arrive pas à decaler les 2 ordres de quelques secondes..
une idée?

Re: gérer durée fermeture volet rts somfy

Publié : 18 mars 2019, 18:19
par fredandrick65
Essaye de remplacer les commandArray
par
commandArray[#commandArray+1]
Car seul le dernier commandArray d'un device est exécuté par le script a la fin de celui-ci (enfin, j'ai cru comprendre cela)

Code : Tout sélectionner

-- script de fermeture des volets du salon pendant la journée
time = os.date("*t")
local delai = 5		-- Délai de remonté du volet
local secs = 3


commandArray = {}
	 if (time.hour >= 11) and (time.hour < 12) then
     		 commandArray[#commandArray+1] = {['volet_cuisine_terrasse'] = "Off"}
     		 commandArray[#commandArray+1] = {['volet_cuisine_terrasse'] = 'Stop AFTER 3'
	end
return commandArray
Il me semble qu il y a un "end" de trop aussi.
Par contre ton script risque de s'exécute en boucle entre 11h et 12h

Re: gérer durée fermeture volet rts somfy

Publié : 18 mars 2019, 19:09
par grdsek
merci je teste cela ce soir,
pour le end, j'ai oublié de l'effacer (idem pour local délai et local secs qui ne servent pas dans ce script) :roll:

pour l'horaire, c'est simplement que j'ai fais des tests entre 11 et 12 hier :). J'avance petit à petit, la finalité c'est de les fermer partiellement quand le soleil sera à son zénith (enfin dans la période 2h avant et 2h après environ).