Aller au contenu
Tomy34

Copier La Position D'un Vr Sur D'autres Vr

Recommended Posts

Bonjour, j'ai installé un FGRM222 à  côté de la fenêtre pour piloter le VR associé et ça marche.

Maintenant j'ai installé un autre FGRM222 à  l'entrée de la pièce à  côté de l'inter lumineux et qui n'est relié à  aucun Volet Roulant.

Je souhaite pouvoir piloter et régler au même niveau le VR depuis l'un ou l'autre de ces 2 interrupteurs.

Actuellement j'ai fait une "boucle" un peu bête qui ne me permet que de fermer ou ouvrir complètement les 2.

 

Est-il possible de copier la position d'un VR sur le FGRM222 de l'interrupteur sans VR ?

Ou encore est-il possible de piloter un groupe de VR afin qu'ils aient la même position ?

Partager ce message


Lien à poster
Partager sur d’autres sites

je n'ai pas ce type nde module, alors sans garantie.

 

As-tu regardé du côté des associations ù?

Partager ce message


Lien à poster
Partager sur d’autres sites

J'avoue ne pas avoir trop compris comment fonctionnent les associations et à  quoi elles servent  :2:

Partager ce message


Lien à poster
Partager sur d’autres sites

réponse peut être idiote , mais comme je n'ais pas de commande volet pour le moment ....

 

Si tu dédouble tout simplement la commande ?

 

je m'explique , un double poussoir (ou inter a volets ) en parallèle avec ton inter principal ?? 

 

A vrai dire je ne comprend pas ce que tu entend par " copier la position " .

Partager ce message


Lien à poster
Partager sur d’autres sites

En fait c'est pour éviter de faire un montage avec du cable, j'ai utilisé l'alimentation de l'interrupteur lumière qui est à  l'entrée de la pièce pour ce 2ème FGRM222. Je souhaite donc copier la position (je crois que c'est en pourcentage dans l'interface Fibaro) qu'enregistre le FGRM du 1er interrupteur sur le 2eme qui lui n'est que alimenté et non relié au Volet Roulant.

 

Sur le 1er FGRM j'ai fait le branchement standard avec les O1 O2 S1 S2... pour piloter le VR & ça fonctionne.

Sur le 2ème FGRM j'ai juste branché les S1 S2... et pas O1 O2

Partager ce message


Lien à poster
Partager sur d’autres sites

Voici une des 4 boucles que j'ai créé pour copier la fermeture du Volet Roulant sur l'interrupteur de l'entrée de la pièce :

J'ai fait la même chose pour l'ouverture dans une autre scène.

J'ai fait 2 autres scènes en inversant les 2, c'est à  dire en mettant VR entrée = fermé alors VR chambre =fermé & idem pour l'ouverture.

Ainsi quand je commande l'ouverture, ou la fermeture, l'autre inter prend le même état (ouvert ou fermé).

 

Le problème est si je veux ouvrir puis stopper le VR disons à  la moitié, alors l'autre FGRM de l'entrée ne comprend pas. Il a juste compris "Ouvert" et donc affiche l'état 100% ouvert.

De la même façon sur le FGRM de l'entrée je ne peux commander le fameux stop en milieu de course, c'est ou tout l'un ou tout l'autre.

 

J'ai vu que que dans les choix d'action de la scène pour le FGRM j'ai 4 actions possibles :

-Ouvert

-Fermé

-Position du VR ; avec un chiffre 0 puis un temps 0 sec

-Activation de scènes

 

j'imagine que c'est avec cette 3ème action que je devrait pouvoir enregistrer la position du VR. Peut-être dans une variable virtuelle ?

Ou bien peut-être dans une association comme le disait Jojo ? Savez vous si ça peut servir à  ça les associations ?

 

gallery_7266_331_13197.jpg

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

 

Je n'ai pas ce module, donc comme le dit @jojo, à  voir avec les associations.

 

Cela permet en direct sans passer par la HC2 de piloter un module à  partir d'un autre module.

 

tu as une HC2, à  mon avis, ca sent plutot une scene en LUA en recuperant la valeur du pourcentage du 1er VR et de mettre cette valeur au 2eme VR

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour le lien @Doclpp, je m'empresse de lire et de tester  :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors ça fonctionne moyennement :( , je commande bien la montée et la descente en associant, mais ce n'est pas réactif.

Ce n'est pas réactif car lorsque je lance l'ouverture sur l'inter du "VR entrée" et que je ré-appuie sur le même bouton ouverture, rien ne se passe, il faut que je fasse ouvrir-fermer plusieurs fois et que j'appuie plusieurs fois dans le désordre sur les boutons pour stopper à  mi-course.

 

J'ai mis pour cela dans les groupes 1 & 2 du "VR entrée" le simple-canal & multi-canaux du "VR chambre"

j'ai mis aussi dans les groupes 1& 2 du "VR chambre" le simple-canal & multi-canaux du "VR entrée" même si ce dernier ne pilote rien, afin de voir si la demande d'arrêt en milieu de course depuis l'inter du "VR chambre" donnait la position exacte au "VR entrée" -> REPONSE : ce n'est pas le cas.

 

Comme le dis @pepite, à  mon avis seul le LUA pourrait m'aider, mais je n'y connais rien. Avez vous des pistes sur les balises à  utiliser pour récupérer la valeur du pourcentage et la mettre dans le 2ème VR ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui tu peux réuperer la valeur du volet :

 

fibaro:getValue(idduvolet, "value") pour récuperer le pourcentage du volet que tu mets dans une variable et tu appelles ton volet avec fibaro:call(idduvolet, "setValue", variable)

 

Tu n'y connais rien du touten lua ? c'est le moment de t'y mettre ;-) on t'aidera sans soucis !! on te lassera pas tomber ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

:) merci @pepite, non je n'y connais vraiment rien mais c'est en effet l'occasion de tester. Je vais essayer de trouver un moment pour me concentrer maintenant que la sieste est finie  ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Voici mon 1er essai :

--[[
%% properties

%% globals
--]]

local PositionVRchambreParents
local PositionVRentreeParents

PositionVRchambreParents = fibaro:getValue(40, 'value')
fibaro:debug('La position du VR a pour valeur: ' ..PositionVRchambreParents)

fibaro:call(46, 'setValue', 'PositionVRchambreParents') 
-- On baisse le volet fictif àla position du VRchambreParents
PositionVRentreeParents = fibaro:getValue(46, 'value')
fibaro:debug('La position du VR fictif de l\'entree a pour valeur: ' ..PositionVRentreeParents)

Le debug :

[DEBUG] 18:55:12: La position du VR a pour valeur: 70
[DEBUG] 18:55:12: La position du VR fictif de l'entree a pour valeur: 99
[DEBUG] 18:57:06: La position du VR a pour valeur: 67
[DEBUG] 18:57:06: La position du VR fictif de l'entree a pour valeur: 0

donc ça ne marche pas.

Après le but est bien sûr de faire copier la valeur dans les 2 sens pour que l'utilisation de l'un implique l'autre et vice versa.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Bon début ;-)

 

Tes variables correspondent bien à  ton pourcentage ?

 

Cette ligne

fibaro:call(46, 'setValue', 'PositionVRchambreParents') 

s'ecrit comme ceci

fibaro:call(46, "setValue", PositionVRchambreParents) 

Tu rappelles la variable

 

Teste ;-)

 

Pour l'impliquation de l'un ou l'autre cela doit etre faisable avec les triggers, en repérant le VR dont la position a bouge

Partager ce message


Lien à poster
Partager sur d’autres sites

Re,

 

Je t'ai fait ca vite fait.

Non testé. Va falloir certainement mettre un sleep en debut de script ou un setTimeout afin d'attendre que le volet déclencheur soit arrete je pense


--[[
%% properties
40 value
46 value
%% globals
--]]

local VRchambreParents = 40
local VRentreeParents = 46

-- Limitation à  1 instance ------
if (fibaro:countScenes() > 1) then
    fibaro:abort()
end
-------------------------------
local PositionVRchambreParents = fibaro:getValue(VRchambreParents, "value")
local PositionVRentreeParents = fibaro:getValue(VRentreeParents, "value")
local sourceTrigger = fibaro:getSourceTrigger()
local ModuleDeclencheur = sourceTrigger['deviceID']

fibaro:debug("Module déclencheur : " ..ModuleDeclencheur)
fibaro:debug("Position VR Chambre Parents : " ..PositionVRchambreParents.. " - Position VR entree Parents : " ..PositionVRentreeParents)

if (ModuleDeclencheur == VRchambreParents) then
    fibaro:call(VRentreeParents, "setValue", PositionVRchambreParents)
else
    fibaro:call(VRchambreParents, "setValue", PositionVRentreeParents)
end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Ouah ça a l'air un peu plus compliqué comme ça  :13:

Oui mes variables renvoyées correspondent bien au pourcentage d'ouverture du VR que je vois pour le vrai VR & que m'affiche l'interface du HC2 pour le fictif de l'entrée.

Je testerai ce soir sans les apostrophes et je testerai aussi ton code en y réfléchissant à  tête reposée afin de bien comprendre. Merci pepite.

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors en effet sans les apostrophes, ça marche un peu mieux;

pour tester je positionne mon VR à  42% depuis l'interface HC2, je démarre la scène manuellement, ça me donne ça :

[DEBUG] 21:51:51: La position du VR a pour valeur: 42
[DEBUG] 21:51:51: La position du VR fictif de l entree a pour valeur: 0

puis je retourne dans les modules et je vois que mon VR fictif a bien bougé  :60: , c'est donc que de démarrer la scène a bien inclu la valeur dans l'autre VR fictif :

[DEBUG] 21:56:27: La position du VR a pour valeur: 42
[DEBUG] 21:56:27: La position du VR fictif de l entree a pour valeur: 42

bon après ça le fait pas tout seul, peut-être faut-il mettre un genre de balise "run always" pour que dès que j'actionne le VR, il aille copier sa valeur dans l'autre sans que j'ai à  démarrer la scène moi même ?

 

pour confirmer je vais dans la pièce en question et j'actionne l'inter du VR, je le pause à  mi course et retourne sur l'interface, lance la scène et là  ça ne marche plus du tout  :(  là  je ré-essaie tout et pas moyen de refaire copier quoi que ce soit, je ne sais pas par quelle magie ça a marché pendant 5 minutes puis plus rien !

 

@pepite, en essayant ton code, petite erreure ici :

[DEBUG] 22:08:28: line 20: attempt to concatenate local 'ModuleDeclencheur' (a nil value) 

du coup j'ai enlevé la ligne 20, après le problème c'est que ça fini toujours par copier l'état du VR fictif c'est à  dire 0 ou 99% (fermé ou ouvert complètement)

[DEBUG] 21:49:40: Position VR Chambre Parents : 46 - Position VR entree Parents : 0
[DEBUG] 21:49:55: Position VR Chambre Parents : 0 - Position VR entree Parents : 0

...

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

 

Oui normal ta scene  ne se lance qu'une seule fois aprèsl'enregistrement ;-)

 

Reenregistre, tu vas voir que cela va fonctionner, enfin peut-etre ;-)

 

Alors normal qu'avec mon code cela bug sans le module declencheur et c'est ce que je t'ai dit, il va falloir attendre que le volet "declencheur" soit en place pour declencher l'autre.

 

Tu as quel firmware sur ta HC2 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

je suis en 4.07

A chaque fois que j'ai fais des modif, j'ai enregistré derrière. Si je comprends bien il faut rajouter une temporisation pour être sà»r que le VR n'est plus en fonctionnement afin d'envoyer sa position définitive au VR fictif ?

Sauf que le but est aussi que je puisse arrêter le VR chambre depuis le VR entrée (le fictif) depuis l'entrée. Pour se faire actuellement je suis obligé d'appuyer rapidement sur "monter" puis "descente" pour envoyer un contre-ordre que ne dois pas apprécier le moteur.

Partager ce message


Lien à poster
Partager sur d’autres sites

En fait c'est comme cec i que je comprends ton besoin :

 - si tu modifies la position d'un volet, tu veux que l'autre prenne la meme. Pour moi, pour etre sur de recuperer la bonne position du volet, mieux vaut attendre que celui ci est sa position definitive, mais on est en secondes selon la course de ton volet.

 

Ah nouvelle info ca : tu fais ton contre ordre depuis les boutons physiques ou depuis la HC2, tu n'as pas de bouton stop sur tes commandes de volet ?

Partager ce message


Lien à poster
Partager sur d’autres sites

oui je veux que l'autre prenne la même position. Après le problème est surement que le VR entrée qui est fictif n'a jamais été associé avec un VR et donc jamais étalonné du coup il ne connait que ouvert 99 ou fermé 0%. Je pense que je vais essayer cet aprem de le brancher sur l'autre et d'étalonner pour voir.

 

En effet ce sont des poussoirs donc pas de position stop sur l'inter, juste un poussoir monostable pour la montée et idem pour la descente.

Partager ce message


Lien à poster
Partager sur d’autres sites

ah mais s'ils ne sont pas etalonnés de la meme facon ca complique ;-)

 

je me demande si cela ne vaudrait pas le coup d'essayer de recuperer la position de chacun et si les valeurs sont differentes de les remettre à  la meme valeur en utilisant le mainloop d'un VD en comparant la date de derniere modification.

Partager ce message


Lien à poster
Partager sur d’autres sites

J'essaierais qd même ca moi.

Je me dis que si je suis pres d'un volet, et que je veux changer la position, je ferai qd même l'arrêt du volet sur le même bouton sauf si je veux complètement fermer ou ouvrir.

Dans ce cas, synchro des volets un peu après ;-)

 

Sans temporisation alors que le value bouge, sans les associations je ne vois pas comment tu pourrais commander la montee/descente d'1 volet et son arret depuis l'autre volet.

 

Sinon avec une telecommande peut-etre

--[[
%% properties
40 value
46 value
%% globals
--]]
 
--- User Settings -------
local VRchambreParents = 40
local VRentreeParents = 46
local Tempo = 10 -- Temporisation en secs, attente fin de course du volet déclencheur
----------------------------------

-- Limitation à  1 instance ------
if (fibaro:countScenes() > 1) then
    fibaro:abort()
end
-------------------------------

local source = fibaro:getSourceTrigger()
local ModuleDeclencheur = source["deviceID"]

if (source["type"] == "property") then
fibaro:debug("Début Temporisation - Module déclencheur : " ..ModuleDeclencheur)
    
    setTimeout(
        function()
            local PositionVRchambreParents = tonumber(fibaro:getValue(VRchambreParents, "value"))
            local PositionVRentreeParents = tonumber(fibaro:getValue(VRentreeParents, "value"))
            fibaro:debug("Avant Synchro - Position VR Chambre Parents : " ..PositionVRchambreParents.. " - Position VR entree Parents : " ..PositionVRentreeParents)

        if (ModuleDeclencheur == VRchambreParents) then
            fibaro:call(VRentreeParents, "setValue", PositionVRchambreParents)
        else
            fibaro:call(VRchambreParents, "setValue", PositionVRentreeParents)
        end
        fibaro:debug("Après Synchro - Position VR Chambre Parents : " ..PositionVRchambreParents.. " - Position VR entree Parents : " ..PositionVRentreeParents)
        
    end, Tempo*1000)
end

Partager ce message


Lien à poster
Partager sur d’autres sites

oui tu as raison, c'est logique.

J'ai tout débranché, inversé les 2 FGRM, fait un étalonnage du VR entrée, tout retranché àl'initial avec ce dernier dans l'entrée et le FGRM du VR àsa place initiale.

J'ai testé ton code pepite, mais rien n'y fait, il ne se passe rien, bizarre il n'y a pas le débug qui s'affiche quand je fait "Démarrer" la scène.

Partager ce message


Lien à poster
Partager sur d’autres sites

@pepite que signifie ceci ?

if (source["type"] == "property") then

en tout cas ce que tu as fait est très élégant, j'aime bien, je vois pas pourquoi ça me renvoie rien  :huh:

Partager ce message


Lien à poster
Partager sur d’autres sites

×