Bloc A, appels multiples

Bonjour,

j’essaye de faire un comportement un peu tricky avec un bloc A, je vais tenter d’être clair, et d’être le plus précis possible.
Alors pour le contexte, j’ai un diffuseur d’huiles essentielles, je cherche à programmer à plusieurs heures de la journée son déclenchement.
Pour pouvoir gérer ça graphiquement j’utilise le plugin Tools, qui me permet d’afficher un tableau auquel je peux ajouter différentes programmation (jour, heure, durée). Derrière ça, j’ai une fonction UserFunction qui me permet de stocker ça dans une info d’un virtuel (ou une variable) sous la forme d’un tableau en chaine de caractère (en gros c’est une chaine de caractère avec un séparateur que j’ai défini à l’avance).
Maintenant venons en au scénario, j’ai un orchestrateur qui se déclenche tôt le matin et qui va me programmer les différentes tâches de la journée. En ce qui concerne le diffuseur, j’ai un bloc Code qui va me transformer cet tableau chaine de caractères en un véritable tableau et lancer un scénario qui est en charge d’exécuter le bloc A, seulement si j’ai plusieurs programmations dans la journée, seul la dernière est prise en compte.
Après quelques recherches, je suis tombé sur un message de naboleo qui peut expliquer se comportement.
Est ce que quelqu’un a une idée de comment contourner ce soucis ?

Merci

Bonjour,

Avec les captures d’écran des scénarios et les blocs code cela serait mieux.
Mais si je comprend le dernier scénario est appelé plusieurs fois et lui contient le bloc A ?
Alors chaque nouvel appel va annuler le bloc A et le reprogrammer.

S’il y a x (10 par exemples) bloc A dans un scénario, pas de soucis ils ont tous un identifiant différent et seront tous programmés.
Mais à chaque appel, ces 10 blocs A (ou 1 seul si le scénario n’en a qu’un), seront annulés et reprogrammés.
Cela ne peut pas être contourné, il faut reprendre le besoin à la base.

Merci pour la réponse, c’est exactement ça:

Scenario appelant:

Scenario appelé:

Le besoin à la base est de pouvoir parcourir mon tableau de programmation pour justement pouvoir programmer mes différents démarrage et de pouvoir modifier ça depuis mon interface graphique, sans avoir à modifier les scénarios

Mon interface de programmation (ne tenez pas compte du rendu, je n’ai pas encore fait de styling dessus)
image

Bonjour,
Si j’ai bien compris, tu ne peux pas programmer N fois le même scénario via l’orchestrateur, il faut donc que le scénario soit capable de se programmer lui même son prochain passage :

  • l’orchestrateur lui ne doit programmer que le 1er passage du scénario du diffuseur: au lieu d’une boucle « foreach » tu ne prendra que le 1er élément du tableau
  • le scénario ensuite, tu rajoute le même bloc que l’orchestrateur, pour lire la programmation du virtuel, pour qu’il s’auto-programme pour son prochain passage, s’il y a lieu. Par exemple, rajoute un tag pour l’index du passage en cours, et tu incrémente ce tag +1 pour la prochaine planification.

Ou alors, tu peux décider de modifier la liste des planifications, c’est à dire supprimer la 1ère ligne une fois qu’elle est planifiée, ainsi tu n’a besoin que de lire la 1ère ligne à chaque exécution.

merci pour ces solutions, je vais m’y pencher, mais ça veut aussi dire qu’il va falloir que je fasse un tri dans ma liste des programmation pour déterminer la 1° du jour.

Et le plugin agenda n’est pas une solution ? J’ai l’impression que l’on cherche a réinventer la roue

1 « J'aime »

je le trouve tellement pas pratique ce plugin …
De plus, je vois pas de façon de créer des évènements depuis l’équipement ajouté sur un design

Ou le plugin Programmateur mais il y a un programme à créer par heure de début/fin.

Oui je l’utilise pour mon arrosage de jardin, mais on ne peut faire qu’une programmation par équipement.

EDIT: c’est quand même pas super pratique cette histoire de Bloc A qui est annulé. Au départ, je voulais le faire autrement, à base de Bloc Boucle, mais c’est pareil on est vite limité. Je rejoins ce que disais @naboleo sur sont post de départ, Jeedom c’est pratique à utiliser quand on veut faire des choses « simples » mais dès qu’on essaye de rendre les choses paramétrables c’est beaucoup plus compliqué

Salut.

A regarder rapidement, il y a peut être une solution, au lieu de faire des appels avec les tags du scénario fils :

  • tu modifie le fils à la volée dans ta boucle en ajoutant/générant les crons correspondants (c’est un bête array de string dans sa conf en base)
  • pas oublier de sauvegarder le scénario

Les crons vont lancer le scénario N fois aux heures qui vont bien, et donc du coup, pas de souci de remplacement/annulation comme les A

Tu devra pê aussi ajouter une phase d’init avant la boucle pour virer tous les reliquats des crons passés et éviter d’avoir une liste longue comme le bras.

Merci, j’essaierai de regarder ça demain pour voir comment se passe exactement cette partie là