Mode Synchrone

Bonjour,

Je m’intéresse à l’option Mode Synchrone pour gagner en vitesse dans l’exécution des scénarios. Dans la doc, il est écrit

  • Mode synchrone : Lance le scénario dans le thread courant au lieu d’un thread dédié. Ca permet d’augmenter la vitesse de lancement du scénario mais cela peut rendre le système instable.

Pourrait-on avoir un peu plus d’explications sur le risque d’instabilité ?
Quelles sont les précautions à prendre ?

Personne ne coche ce mode ?

Effectivement, ça fait de la m*rde en cochant l’option !

Exemple avec un virtuel comme ceci
Porte

  • La commande #[Garage][Porte][Etat]# est mise à jour en fonction d’un capteur de porte Z-Wave. Il est indépendant des scénarios a priori.
  • La commande #[Garage][Porte][Virtuelle]# est mise à jour manuellement lorsqu’on appui sur les boutons du virtuel « Ouvrir » et « Fermer » ou automatiquement via 2 scénarios qui actionnent ces boutons

Scénarios :

  1. Le premier scénario ouvre la porte virtuelle dès que la porte réelle s’ouvre.
  2. Le deuxième scénario ferme la porte virtuelle dès que la porte réelle est fermée depuis 35 secondes.

Tout fonctionne correctement sans l’option « Synchrone » mais c’est lent : 1 seconde pour ouvrir une porte ! (Plus une autre souvent pour allumer une lumière)

Si je coche l’option « Synchrone » pour le premier scénario, les 2 portes sur le widget s’ouvrent en même temps et instantanément, donc c’est bon et c’est plus rapide (je n’ai pas de délai d’une seconde).

Si je coche l’option « Synchrone » pour le deuxième scénario, les 2 portes sur le widget s’ouvrent en même temps au bout des 35 secondes. Le scénario est bien lancé lorsque la porte de se ferme mais la valeur du déclencheur (pourtant bonne puisque le scénario s’est lancé) est mise à jour à la fin du scénario. Si je regarde les valeurs historisées, ce n’est pas correcte, l’état de la porte réelle est restée ouverte 35 secondes de trop alors que le scénario s’est lancé au bon moment.

Ici, c’était un exemple simple avec un seul déclencheur. Ayant plusieurs scénarios qui dépendent les uns des autres, je ne peux pas me permettre d’avoir des fonctionnement que je ne maîtrise pas. Mais j’aurais bien aimé comprendre.

Salut @Domatizer,

Pour la théorie, regarde un peu sur le net, tu auras des explications imagées :
exemple : https://fr.quora.com/Quelle-est-la-différence-entre-une-exécution-synchrone-et-asynchrone

Pour info, il y a des bugs dans Jeedom liées au lancement des scénarios :
https://community.jeedom.com/t/probleme-critique-gestion-multi-lancement-des-scenarios/23980/2

Bonne journée :slight_smile:

Merci @Mav3656

Je viens du monde de l’électronique. Dans les circuits avec beaucoup de logique, c’est du synchrone partout cadencé par une horloge, l’asynchrone est rare (souvent pour le bouton reset).

En informatique, c’est différent avec les threads. Donc ce n’est toujours pas évident, je ne sais pas qui fait quoi et quand.

Quels genres de bug ? Ton 2ème lien ne fonctionne pas !

En revanche, je suis tombé sur un de tes posts dans l’ancien forum, c’est intéressant.
https://forum.jeedom.com/viewtopic.php?t=38859&p=686539

Cela confirme l’idée que j’ai depuis le début, rien ne vaut un automate.

1 « J'aime »

Pour essayer de vulgariser au maximum :

==> Un thread est un ouvrier. C’est une personne qui travaille.

Illustration lancement synchrone / asynchrone de scénario dans Jeedom :

Tu es dans un thread, appelons le « Toto ». Toto est en train de faire des choses. Soudain, toto doit lancer le scénario « test ».

  • si ce lancement s’effectue en mode synchrone, Toto abandonne temporairement ce qu’il est en train de faire actuellement. Il lance le scénario « test », l’exécute entièrement, puis quand ce sera terminé, il reviendra à ce qu’il faisait avant.

  • si ce lancement s’effectue de manière asynchrone, Toto demande à la RH de son entreprise de recruter quelqu’un (oui oui, il s’agit bien d’une nouvelle personne, qui n’existe pas actuellement dans l’entreprise, un tout nouveau travailleur). Quand cette personne arrivera, elle s’occupera de dérouler le scénario « test ». En attendant, « toto » continue de faire ce qu’il était en train de faire. On ne sait pas quand est-ce que le scénario « test » sera exécuté. Peut-être immédiatement, peut-être dans plusieurs secondes ou plusieurs minutes. C’est le principe de l’asynchorne.

Pour mon 2ème lien, il accède à une section privée du forum, dsl. (oublie-le).

Bonne journée,
Pierre (Mav3656) - Helper Officiel Jeedom.

–edit : le fait de cocher la case « synchrone » dans l’onglet « Général » du scénario revient à forcer tous les appels au dit scénario de manière synchrone.

1 « J'aime »

Pour moi, en asynchrone, il est exécuté tout de suite dès que les conditions sont remplies. C’est le fonctionnement par défaut, l’option Synchrone est décoché. Pas de souci de fonctionnement.

Avec l’option Synchrone cochée, je ne sais pas ce qu’il fait ou ce qu’il attend donc je ne prendre de le risque d’utiliser ce mode. Pour un scénario seul qui met à jour variable d’un compteur à chaque déclenchement, ça va. Mais dès que plusieurs scénarios sont inter dépendants, les scénarios n’ont plus le même comportement, comme prévenu dans la doc.