Utilisation du bloc "Dans" dans un scénario

Bonjour ,

une petite question sur l’utilisation du "bloc Dans " au niveau d’un scénario …
je souhaite utiliser le « bloc dans » mais ce dernier ne décompte que les minutes .J’ai vu dans la documentation qu’il était possible de démarrer à 0 .Quelqu’un peut il me dire si cette information permet de décompter les 60 premieres secondes et si oui quelle est la syntaxe à appliquer pour selectionner quelques dizaine de seconde ?

D’avance merci pour votre soutien

Hello, tu peux détailler ce que tu souhaites faire ?
Le bloc Dans c’est pour effectuer des actions dans X minutes, pour des secondes tu peux utiliser un Sleep.

Si c’est un lancement différé de quelques secondes, utilise plutôt une fonction sleep de quelques secondes

Norbert

Merci de votre retour ,

Je cherche à avoir un genre de compte à rebours programmable en secondes qui tourne en arriere plan du scénario sans « bloquer ce dernier » avec ces éventuelles déclencheur multiples .

Pour faire simple j’ai reconstitué la course d’ouverture et de fermeture d’un volet roulant velux ( non IO) et je cherche à optimiser cette course en utilisant les secondes de déplacement de ce même volet en fonction du sens de déplacement (montée ou descente) .

C’est pour gérer le pourcentage d’ouverture d’un volet ? Car il y à le plugin volet proportionnelle qui gère le pourcentage tout seul avec les secondes pour monter/descendre.

Autrement, pour qu’un scénario se lance plusieurs fois sans être bloqué par un bloc Dans, tu active le multi lancement (même si la doc indique qu’un scénario sera quand même lancer plusieurs fois avec le multi lancement désactivé), si le scénario est déjà en cours avec un compte à rebours et qu’un autre événement lance le scénario, du doit placer un remove_inat au tout début du scénario pour annuler la programmation du bloc « Dans » du précédent lancement du scénario.

Mais je ne comprend pas vraiment ce que tu souhaites faire exactement.

1 « J'aime »

On est deux …

Ca veut dire quoi « sans bloquer le scénario » ?

Il doit vouloir continuer l’exécution du scenario.
Exemple :

Détection de l’ouverture du volet.
Lancement du scénario,
Prévoir de jouer la marche impériale dans 30s car le volet sera a moitié ouvert
Pendant ce temps éteindre la lumiere,
Avoir un assistant vocal qui lui dit bonjour, la météo etc…
Fin du scénario (car toute les actions sont terminées).

Et la la marche impériale se joue sur son enceinte.

Et la question est « comment mettre un temps en seconde et pas en minutes dans un bloc dans, comme indiqué dans faq ? La possibilité de partir de 0 me laisse penser que c’est réalisable »

Perso, Je n’utilise pas de dans, mais as tu testé de mettre 0,5 ou c’est forcément un entier? Si pas possible, une façon malhonnête de le faire est de lancer un scénario dans ton scénario principal, qui lui temporise l’action voulue a la seconde avec un sleep (si tu veux faire cette action dans plusieurs cas/scenario, c’est pt la solution la + propre)
ou
de lancer en parallèle dans un bloc action regroupant le sleep et la lecture de la marche impériale en cochant la case qui va bien

EDIT: ce scénario est fictif, et ne tourne pas chez moi :slight_smile: xD

Malheureusement il n’est pas possible de mettre des secondes dans un bloc DANS (j’ai déjà essayé de mettre 0,5 et 0,50 par exemple).

Le problème du sleep c’est qu’il ne peut pas être annulé autrement qu’en stoppant le scénario, puisqu’un remove_inate annule uniquement la programmation des block DANS et A. Et si il utilise la commande Stop en début de scénario ça va stopper tout les lancements même le denier lancement. La seul solution pour annuler un scénario avant le délai d’un Sleep lors d’un mutli lancement, c’est de stopper le scénario à partir d’un autre scénario et de la relancer juste après.

Mais comme on ne comprend pas vraiment ce qu’il entend par « optimiser la courses en utilisant les secondes de déplacement », c’est difficile de d’anticiper la solution.

Bonjour,

Effectivement c’est à tout à fait ce que Baggi_166 explique .Le but premier c’est de laisser dérouler le le scénario jusq’au à sa bonne fin ,tout en laissant la possibilité au bloc code « dans » de dérouler ses actions aprés avoir effectué le temps ecoulé programmé en secondes et non pas en minute…
Par exemple remonter l’information de l’arrêt de fonctionnement du volet proportionnellement à sa positionp son ouverture ou fermeture totale .

Tu as une petite coche en début de ligne qui permet de lancer des commandes en parallèle et non plus en séquentiel. Ça peut répondre à ton besoin

Norbert

J’ai oublié quelques mots dans mon texte…mon doigt à glissé un peu trop vite sur plusieurs touches ou mauvaises touches et le message est parti trop vite

Effectivement c’est à tout à fait ce que Baggi_166 explique .Le but premier c’est de laisser dérouler le le scénario jusq’au à sa bonne fin ,tout en laissant la possibilité au bloc code « dans » de dérouler ses actions aprés avoir effectué le temps ecoulé programmé en secondes et non pas en minute…
Par exemple remonter l’information de l’arrêt de fonctionnement du volet proportionnellement à sa position par rapport à son ouverture ou fermeture totale .

Du coup, je lancerai un 2nd scénario à partir du premier Qqqqqqqui réalisera l’action du Dans et qui aura un sleep en début en cochant la case lancement simultané sur la commande qui suit

Norbert

Bonjour Ngrataloup

Merci de tes retours ,je vais regarder cela …avec la fonction sleep et mes déclencheurs de scénario

PS:J’avais lu que cette fonction sleep arrétée le script du scénario durant x secondes

Cf ma réponse juste au dessus :wink:

Je vais regarder cela avec le double scénario …mais cela sera une premiere pour moi ! :thinking: :sweat:

Après, je n’ai pas non plus vraiment compris le besoin (comme d’autres sur ce sujet :wink:). C’est sans doute évident et limpide pour toi, mais nous qui ne sont pas dedans, on a du mal a y entrer.
Il y a peut-être d’autres solutions. Essaie de (re)décrire ton besoin vraiment fonctionnel, sans penser au code qu’il y a derrière, ou à la solution que tu as déjà imaginé

Norbert

ok je vais tenter d’etre clair

Le but est de domotiser un ancien volet velux par sa telecommande RF 866Mhz.
Aprés avoir adapté cette telecommande à un module zigbee, il a fallut que je construise un scénario pour ouvrir ou fermer ce volet avec le retour de son état de fonctionnement (Marche ou Arret) et sa position de fermeture (de 0 à 100% ) qui son fonction de son temps de déplacement ( 0 à 40 secondes).
Lorsque que j’ active la Telecommande(Ouverture avec stop ou fermeture avec stop) pour une ouverture ou fermeture partielle depuis les butées du volet (soit 0% ou 100%) pas de problème .
Par contre lorsque j’active cette même telecommande sur une position de fermeture quelconque je ne sais pas mettre en syntaxe le temps de fonctionnement restant du volet pour arriver à sa position terminale … (maximum moins de 40secondes ,minimum 1 à 2 secondes) d’ou ma question avec l’utilisation du bloc dans :lying_face:

Merci Norbert ,

Effectivement en suivant ton idée de double scenario , j’'ai trouvé une solution permettant de remplacer le bloc code « Dans » en utilisant un second scénario de timer sous code PHP .
Ce deuxieme scénario ,inséré dans le scenario principal , programmé en arriere plan , déclenche ce dernier tout comme les autres déclencheurs .

Bref je ne veux pas trop rentrer dans les détails, mais j’obtiens bien ce que je voulais ,à savoir un suivi au plus prés du fonctionnement et suivi de ce volet .

Un grand merci à tous les intervenants.

1 « J'aime »

Ok merci pour l’explication mais je ne comprends toujours pas pourquoi ce besoin de faire effectuer les actions en parallèle …

Comme @ngrataloup je suis pas certain d’avoir tout compris, mais de ce que j’ai pigé de ce que tu veux faire de ton scénario, personnellement j’aurais fait une boucle qui va de 0 à 40 avec un pas de 1s pour actualiser le calcul du positionnement et pas du tout du bloc DANS.

1 « J'aime »

Donc si j’ai bien compris, comme demandé dans ma deuxième réponse, ton scenario sert juste à pouvoir gérer le pourcentage d’ouverture, le plugin volet proportionnel permet cela sans nécessité de faire un scénario, en prenant en compte le temps d’ouverture/fermeture et même du décollement.