zeldoi5 Posté(e) le 28 novembre 2014 Signaler Posté(e) le 28 novembre 2014 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) : 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 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) Cette scène appelle la scène VoletsOuverture : 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 ?
Krikroff Posté(e) le 1 décembre 2014 Signaler Posté(e) le 1 décembre 2014 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
zeldoi5 Posté(e) le 1 décembre 2014 Auteur Signaler Posté(e) le 1 décembre 2014 Salut Krikroff, merci pour ta réponse 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
zeldoi5 Posté(e) le 1 décembre 2014 Auteur Signaler Posté(e) le 1 décembre 2014 Bon, tests pour ce soir et demain matin : sans évaluation de la variable présence : Selon vous, une scène bateau comme ça... ça devrait passer non ?
Krikroff Posté(e) le 1 décembre 2014 Signaler Posté(e) le 1 décembre 2014 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
zeldoi5 Posté(e) le 1 décembre 2014 Auteur Signaler Posté(e) le 1 décembre 2014 Oui... j'ai peut être voulu aller trop vite 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 !
Rocketlud Posté(e) le 1 décembre 2014 Signaler Posté(e) le 1 décembre 2014 Je ne comprend pas comment fonctionne ta variable présence? comme change t'elle d'etat? ++
zeldoi5 Posté(e) le 2 décembre 2014 Auteur Signaler Posté(e) le 2 décembre 2014 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...
zeldoi5 Posté(e) le 2 décembre 2014 Auteur Signaler Posté(e) le 2 décembre 2014 Question : ça peut fonctionner une scène comme ça : 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 : qui appelle donc la scène sans trigger...
Krikroff Posté(e) le 2 décembre 2014 Signaler Posté(e) le 2 décembre 2014 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...
zeldoi5 Posté(e) le 2 décembre 2014 Auteur Signaler Posté(e) le 2 décembre 2014 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 : 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
zeldoi5 Posté(e) le 2 décembre 2014 Auteur Signaler Posté(e) le 2 décembre 2014 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 : 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!
Krikroff Posté(e) le 2 décembre 2014 Signaler Posté(e) le 2 décembre 2014 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 de supprimer les valeurs dans les cases verte mais bien en gardant les tempos, l' ordre devrait être conservé ?
zeldoi5 Posté(e) le 2 décembre 2014 Auteur Signaler Posté(e) le 2 décembre 2014 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...
Did Posté(e) le 2 décembre 2014 Signaler Posté(e) le 2 décembre 2014 La case verte correspond à la valeur que tu veux lui donner (dans le cas d'un dimmer: 30% de lumière, d'un volet roulant: 30% d'ouverture ou fermeture). Regarde ici, il y a quelques exemples (et un autre lien): http://www.domotique-fibaro.fr/index.php/topic/557-exemples-de-sc%C3%A8nes-mode-bloc/
zeldoi5 Posté(e) le 2 décembre 2014 Auteur Signaler Posté(e) le 2 décembre 2014 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...
zeldoi5 Posté(e) le 5 décembre 2014 Auteur Signaler Posté(e) le 5 décembre 2014 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 : Ouverture en mode absent : Ouverture en mode repos : 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...
Messages recommandés