Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

je viens quérir de l'aide car je commence à  m'arracher les cheveux ( et puis, ça commence à  faire doute Madame :(  ).

 

 

 

 

Ma HC2 commande l'ouverture des volets roulants RTS via la Zibase (et la ZAPI) :

14112811134064669.png

sur plusieurs volets...

 

J'ai implémenté les commandes d'ouverture/fermeture/stop (fermeture à  25% et 95%), tout fonctionne bien en manuel (en appuyant sur les boutons des VD créés)

 

J'ai voulu automatiser le tout en fonction de ma présence :

J'ai donc créé une variable globale PRESENCE avec 3 boutons permettant d'enrichir cette même variable globale :

1 -> Présent

2 -> Absent

3 -> Repos

141128111340594490.jpg

141128111340302659.png

14112811134010957.png

 

En fonction de la valeur de cette variable globale, j'ai plusieurs scènes qui, selon les créneaux horaires, ouvrent ou ferment les volets :

Voici la scène qui ouvre quand la variable PRESENCE vaut 1 (cad en mode présent)

141201025555600357.jpg

 

Cette scène appelle la scène VoletsOuverture :

141128111340351983.jpg

 

Mais ça ne passe pas : des fois rien ne se passe, des fois seul(s) un (ou deux) volet(s) s'ouvrent (le matin), ou se ferme(nt) (le soir)

J'ai également essayé :

- en passant par plusieurs scènes : au lieu d'appeler "VoletOuverture", j'appelle les scènes "ouvertureCuisine" puis "ouvertureSalon" ....

- de ne pas appeler la scène VoletsOuverture, mais d'appeler directement les boutons en action

- et d'autres choses dont je ne me souviens plus :(

 

J'y perds mon latin... Avez vous une idée ?

 

Remarques :

- Je me suis rendu compte que je n'avais la case "Lance au démarrage du Home Center 2"...

- Le triggering device sur ma variable PRESENCE est désactivé, cas si j'ai bien compris, ça lance la scène si la variable change d'état et si sa valeur est bien la valeur attendue dans le test, c'est bien cela ?

- J'ai mis en test, dans les scènes, avant mes ouverture/fermeture, si PRESENCE <10 car on est obligé de mettre des blocs avant un bloc "Alors" non ?

Posté(e)

Oui il faut absolument que la scène principale soir cochée "Lance au démarrage du Home Center 2"... et pas forcement la seconde (car lancée par la principale).

 

Pour plus de flexibilité tu peux aussi commencer une scène en mode "blocs" pour la base et ensuite la transformer en LUA et éditer plus finement ;)

 

Sinon, je pense que GEA devrait pouvoir faire quelque chose pour toi ;)

Posté(e)

Salut Krikroff,

 

merci pour ta réponse :P

Je vais essayer de supprimer les scènes et recréer en m'affranchissant pour le moment de la variable globale PRESENCE.

J'ai aussi regardé pour le LUA direct : ça me semble bien plus puissant que le mode bloc, mais il faut que je m'y mette sérieusement !

 

Pour GEA, j'ai aucun doute sur le potentiel de GEA, mais j'y vais doucement, car à  trop se disperser, on ne fais guère grand chose de bien :(

Posté(e)

Bon, tests pour ce soir et demain matin :

 

sans évaluation de la variable présence :

141201050928972795.jpg

141201050928908694.jpg

 

Selon vous, une scène bateau comme ça... ça devrait passer non ?

Posté(e)

Oui je pense que tu as la bonne démarche et de toute manière il faut commencer par comprendre le fonctionnement et ne pas aller trop vite ï¸.

Au fait je n'ai pas posé la question mais tu utilises quelle version pour le HC2 ?

Envoyé de mon iPhone à  l'aide de Tapatalk

Posté(e)

Oui... j'ai peut être voulu aller trop vite :15:

 

Je suis resté sur la dernière stable (3.590)... mais je suis plus qu'attentivement les tests que vous menés sur les V4 béta !

Posté(e)

Salut Rocketlud,

 

Pour le moment la variable PRESENCE est modifiée par un VD qui possède 3 boutons qui affectent chacun une valeu numérique différente :

fibaro:setGlobal("PRESENCE", "1"); -> Présent

fibaro:setGlobal("PRESENCE", "2"); -> Absent

fibaro:setGlobal("PRESENCE", "3"); -> Repos

 

A terme, j'essaierai de fixer cette variable avec un agenda (pas trop d'idées encore pour le faire).

 

Bon, en ce qui concerne les scènes "test" désignées hier soir :

- la scène de fermeture : je n'ai pas pu vérifier si elle s'était correctement effectuée (tout au plus 2 des 4 volets ont bien été fermés! mais pour les deux autres, je ne sais pas : je suis rentré après madame)

- la scène d'ouverture de ce matin : tous les volets se sont bien ouverts.

 

Ce soir, je vais testé avec une scène automatisée qui va appelé la scène qui ferme tous les volets ensuite on réessaiera avec la variable PRESENCE...

Posté(e)

Question :

 

ça peut fonctionner une scène comme ça :

141202105737497415.jpg

 

C'est bien le mode blocs, mais ça donne des choses bizarres :

local startSource = fibaro:getSourceTrigger();
if (
 ()
or
startSource["type"] == "other"
)
then
    fibaro:call(9, "pressButton", "3");
    fibaro:call(80, "pressButton", "5");
    fibaro:sleep(3000);
    fibaro:call(10, "pressButton", "3");
    fibaro:call(11, "pressButton", "3");
    fibaro:call(12, "pressButton", "3");
end

 

Qu'est ce que ce sleep 3000 fout ici ????????

 

-------------------------------------------------------------------------------------------------

 

Pour en revenir au sujet initial, l'idée est de faire des scènes "programmées" qui testent la variable PRESENCE :

141202110831561323.jpg

qui appelle donc la scène sans trigger...

Posté(e)

Le sleep de 3 secondes (3000ms) c'est toi qui le demande dans la case rouge: retard de 3s sur la commande des volets: cuisine, rue, jardin. C'est ok !

En revanche pas certain que la scène marche car il n'y a pas de condition...

Posté(e)

Merci Krikroff,

 

je voulais m'assurer justement que le délai dans le bloc rouge était mis en place mais c'est pas ça qui est ça...

Par contre, si on remplit la case verte en mettant un ordonnancement, ça met l'ordre correct dans le code LUA.

 

Ainsi l’interpréteur de blocs fibaro interprète sur ces valeurs et non sur l'ordre des blocs (bon à  savoir!)

 

Par contre, remplir un bloc rouge pour temporiser l'ensemble, ça te colle l'action à  la fin... et ça ne permet pas d'ordonnancer l'ensemble...

Exemple :

141202115336375316.jpg

 

donne bien :

--[[
%% properties
%% globals
--]]

local startSource = fibaro:getSourceTrigger();
if (
 ()
or
startSource["type"] == "other"
)
then
    fibaro:call(9, "pressButton", "3");
    fibaro:call(11, "pressButton", "3");
    fibaro:call(12, "pressButton", "3");
    fibaro:call(10, "pressButton", "3");
    fibaro:call(80, "pressButton", "5"); --SMS
end
Posté(e)

Pour résumer, pour correctement retarder des actions les unes par rapport aux autres, il faut que le délai inscrit dans le bloc rouge soit par rapport à  la scène, et non par rapport à  la précédente action.

Dans mon exemple : si on souhaite faire l'ouverture/fermeture de volets avec une temporisation de 3 secondes entre, on devra renseigner les temporisations 3, 6, 9, 12, ...

 

Exemple :

14120212015890955.jpg

 

donne bien :

--[[
%% properties
%% globals
--]]

local startSource = fibaro:getSourceTrigger();
if (
 ()
or
startSource["type"] == "other"
)
then
    fibaro:call(9, "pressButton", "3");
    fibaro:sleep(3000);
    fibaro:call(10, "pressButton", "3");
    fibaro:sleep(3000);
    fibaro:call(11, "pressButton", "3");
    fibaro:sleep(3000);
    fibaro:call(12, "pressButton", "3");
    fibaro:sleep(3000);
    fibaro:call(80, "pressButton", "5");
end

 

 

 

 

 

Conclusion personnelle : ATTENTION au mode bloc ! L'interpréteur de blocs est assez permissif... voir très permissif!

Posté(e)

Tu noteras que le sleep sur le volet cuisine ici http://www.domotique-fibaro.fr/index.php/topic/2792-problème-de-gestion-automatisée-volets/?p=38576 n'est pas pris en compte lorsque que tu passes des valeurs dans la cases vertes

 

Et si tu essaies ici

 

14120212015890955.jpg

 

de supprimer les valeurs dans les cases verte mais bien en gardant les tempos, l' ordre devrait être conservé ?

Posté(e)

Ok, en supprimant les chiffre des box vertes, j'obtiens bien :

--[[
%% properties
%% globals
--]]

local startSource = fibaro:getSourceTrigger();
if (
 ()
or
startSource["type"] == "other"
)
then
    fibaro:call(9, "pressButton", "3");
    fibaro:sleep(3000);
    fibaro:call(10, "pressButton", "3");
    fibaro:sleep(3000);
    fibaro:call(11, "pressButton", "3");
    fibaro:sleep(3000);
    fibaro:call(12, "pressButton", "3");
    fibaro:sleep(3000);
    fibaro:call(80, "pressButton", "5");
end

 

J'ai bien compris comment paramétrer les délais avec les box rouges, mais je t'avoue n'avoir pas compris les box vertes :(

 

Avec le recul sur ces scènes, ça semble facile, mais c'est permissif. Mieux vaut faire le dev en LUA, mais ça nécessite une rigueur et une connaissance des fonctions disponibles ;) (les fonctions je peux essayer de les assimiler, la rigueur c'est autre chose!)

 

Je poursuis mes tests...

Posté(e)

Ah mais bien sà»r, ce sont les valeurs consigne attribuées aux actionneurs...

 

Merci Did (et Krikroff !!!), c'est vrai que j'étais "bloqué" (voir obnubilé) dans des actions sans paramètres...

Posté(e)

Bon, quelques news de mes éxpérimentations : résulats aléatoires !

 

Par exemple, ce matin, les volets se sont ouvert 3 fois : la scène n'a pas évalué la variable globale PRESENCE :

VOici mes scènes :

Ouverture en mode présent :

141205092307937355.jpg

 

Ouverture en mode absent :

141205092307643462.jpg

 

Ouverture en mode repos :

141205092307704455.jpg

 

Sachant que ce matin, le mode repos était actif, les volets se sont ouvert à  6h55 puis à  8h35 (et sà»rement 10h35 puisque al variable est mal évaluée)

 

J'avoue ne pas saisir...

Du coup, je vais sérieusement me mettre à  arrêter le mode bloc et faire en code LUA direct...

×
×
  • Créer...