J’ai un scénario qui se déclenche sur la commande [Statut de machine] et qui appel un autre scénario.
Cet autre scénario sert à m’indiquer si c’est le lave-Linge ou le sèche-linge qui se met en route. Je peux faire autrement mais ce 2eme scénario était là quand je ne pouvais baser l’état d’un appareil ou d’un autre que sur la puissance. La façon de faire les scénario n’est pas le sujet.
Enchainement : J’ai utilisé l’application JeedomConnect pour faire le start du sèche-linge mais j’aurais pu le faire depuis le dashboard, je ne pense pas que cela change quelque chose
On remarque que le scénario s’est déclenché 2 fois à 12h55 sur l’évènement de la commande [Statut de machine] :
------------------------------------
[2022-09-11 14:12:55][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Sous-sol][Seche-linge][Statut de machine] (Marche).
[2022-09-11 14:12:55][SCENARIO] Exécution du sous-élément de type [action] : action
[2022-09-11 14:12:55][SCENARIO] Log : Tâche : Cooling
Statuts Machine : Marche
Sous-tension : 1
[2022-09-11 14:12:55][SCENARIO] Exécution du sous-élément de type [condition] : if trigger(#[Sous-sol][Sèche-linge][Statut de machine]#) == 1
[2022-09-11 14:12:55][SCENARIO] Evaluation de la condition : [1 == 1] = Vrai
[2022-09-11 14:12:55][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-09-11 14:12:55][SCENARIO] Exécution d'un bloc élément : 1007
[2022-09-11 14:12:55][SCENARIO] Exécution du sous-élément de type [condition] : if #[Sous-sol][Sèche-linge][Statut de machine]# == 'Marche'
[2022-09-11 14:12:55][SCENARIO] Evaluation de la condition : ["Marche" == 'Marche'] = Vrai
[2022-09-11 14:12:55][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-09-11 14:12:55][SCENARIO] Exécution d'un bloc élément : 1016
[2022-09-11 14:12:55][SCENARIO] Exécution du sous-élément de type [action] : code
[2022-09-11 14:12:55][SCENARIO] Exécution d'un bloc code
[2022-09-11 14:12:55][SCENARIO] Exécution d'un bloc élément : 1008
[2022-09-11 14:12:55][SCENARIO] Exécution du sous-élément de type [action] : action
[2022-09-11 14:12:55][SCENARIO] Affectation de la variable SL_Samsung_Conso_Start => 79400 = 79400
[2022-09-11 14:12:55][SCENARIO] Lancement du scénario : SC Etat LL SL options : {"#EtatLLSL#":"on"}
[2022-09-11 14:12:55][SCENARIO] Fin correcte du scénario
------------------------------------
[2022-09-11 14:12:55][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Sous-sol][Seche-linge][Statut de machine] (Arrete).
[2022-09-11 14:12:55][SCENARIO] Exécution du sous-élément de type [action] : action
[2022-09-11 14:12:55][SCENARIO] Log : Tâche : Cooling
Statuts Machine : Arrêté
Sous-tension : 1
[2022-09-11 14:12:55][SCENARIO] Exécution du sous-élément de type [condition] : if trigger(#[Sous-sol][Sèche-linge][Statut de machine]#) == 1
[2022-09-11 14:12:55][SCENARIO] Evaluation de la condition : [1 == 1] = Vrai
[2022-09-11 14:12:55][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-09-11 14:12:55][SCENARIO] Exécution d'un bloc élément : 1007
[2022-09-11 14:12:55][SCENARIO] Exécution du sous-élément de type [condition] : if #[Sous-sol][Sèche-linge][Statut de machine]# == 'Marche'
[2022-09-11 14:12:55][SCENARIO] Evaluation de la condition : ["Arrêté" == 'Marche'] = Faux
[2022-09-11 14:12:55][SCENARIO] Exécution du sous-élément de type [action] : else
[2022-09-11 14:12:55][SCENARIO] Fin correcte du scénario
------------------------------------
[2022-09-11 14:13:04][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Sous-sol][Seche-linge][Statut de machine] (Marche).
[2022-09-11 14:13:04][SCENARIO] Exécution du sous-élément de type [action] : action
[2022-09-11 14:13:04][SCENARIO] Log : Tâche : Drying
Statuts Machine : Marche
Sous-tension : 1
[2022-09-11 14:13:04][SCENARIO] Exécution du sous-élément de type [condition] : if trigger(#[Sous-sol][Sèche-linge][Statut de machine]#) == 1
[2022-09-11 14:13:04][SCENARIO] Evaluation de la condition : [1 == 1] = Vrai
[2022-09-11 14:13:04][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-09-11 14:13:04][SCENARIO] Exécution d'un bloc élément : 1007
[2022-09-11 14:13:04][SCENARIO] Exécution du sous-élément de type [condition] : if #[Sous-sol][Sèche-linge][Statut de machine]# == 'Marche'
[2022-09-11 14:13:04][SCENARIO] Evaluation de la condition : ["Marche" == 'Marche'] = Vrai
[2022-09-11 14:13:04][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-09-11 14:13:04][SCENARIO] Exécution d'un bloc élément : 1016
[2022-09-11 14:13:04][SCENARIO] Exécution du sous-élément de type [action] : code
[2022-09-11 14:13:04][SCENARIO] Exécution d'un bloc code
[2022-09-11 14:13:04][SCENARIO] Exécution d'un bloc élément : 1008
[2022-09-11 14:13:04][SCENARIO] Exécution du sous-élément de type [action] : action
[2022-09-11 14:13:04][SCENARIO] Affectation de la variable SL_Samsung_Conso_Start => 79400 = 79400
[2022-09-11 14:13:04][SCENARIO] Lancement du scénario : SC Etat LL SL options : {"#EtatLLSL#":"on"}
[2022-09-11 14:13:04][SCENARIO] Fin correcte du scénario
La première fois, c’est normal et le statut était « Marche ».
La 2eme fois, je ne comprends pas et le statut était « Arrete » !?
Ce que cela engendre :
A la première exécution mon 2eme scénario se met en route et regarde le statut du sèche-linge pour savoir si c’est lui qui s’est mis en route … ou le lave-linge.
Malheureusement le temps qu’il s’exécute la commande est visiblement passé à « Arrete » donc il a pensé que c’était le lave-linge qui tournait, erreur.
Je ne mets que la partie intéressante :
------------------------------------
[2022-09-11 14:12:55][SCENARIO] Start : Lancement provoque par le scenario : [Monitoring][Aucun][SC SL Samsung]. Tags : {"#EtatLLSL#":"on"}
[2022-09-11 14:12:55][SCENARIO] Exécution du sous-élément de type [condition] : if #EtatLLSL# == "on" ET #[Sous-sol][LL SL][Etat LL]# == 0 ET #[Sous-sol][LL SL][Etat SL]# == 0
[2022-09-11 14:12:55][SCENARIO] Evaluation de la condition : ["on" == "on" ET 0 == 0 ET 0 == 0] = Vrai
[2022-09-11 14:12:55][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-09-11 14:12:55][SCENARIO] Exécution d'un bloc élément : 713
[2022-09-11 14:12:55][SCENARIO] Exécution d'un bloc élément : 1011
[2022-09-11 14:12:55][SCENARIO] Exécution du sous-élément de type [condition] : if #[Sous-sol][Sèche-linge][Statut de machine]# == "Marche"
[2022-09-11 14:12:55][SCENARIO] Evaluation de la condition : ["Arrêté" == "Marche"] = Faux
[2022-09-11 14:12:55][SCENARIO] Exécution du sous-élément de type [action] : else
[2022-09-11 14:12:55][SCENARIO] Changement de [Sous-sol][LL SL][Etat LL] à 1
Je mets le logs du plugin dans le post suivant car trop de caractères.
J’ai bien vu la problématique.
Je pense que tu as l’infos via la commande de base (main::dryerOperatingState::machineState) et par l’info supplémentaire de la commande main::execute::data qui est traité spécifiquement.
Plusieurs questions dans ce cas pour déterminer la cause :
Est-ce que tu as coché la case « Rafraîchissement forcé » ?
Est-ce que tu pourrais récupérer les infos brutes quand tu reproduis le truc ?
La partie qui m’intéresse est dans ce bloc execute :
Je veux voir si je suis bien sur la bonne voie, et qu’il y a bien une info avec en clé : ‹ currentMachineState › ou ‹ x.com.samsung.da.state › à la valeur ‹ stop › ou autre
Pour les infos brutes j’ai plus de mal à comprendre, disons surtout à quel moment aller les chercher.
Il est possible d’aller les prendre disons 1 ou 2 mn après ou bien il faut absolument récupérer cela avant le cron suivant par exemple ?
Les infos brutes sont en temps réel (au moment ou tu cliques sur le bouton et que la page s’ouvre).
Genre tu lances depuis JC et tu cliques sur infos brutes dans les 15 secondes.
Ok merci j’ai mis à jour et je te remonte les logs lors du prochain séchage
Je ne sais pas si c’est lié mais j’ai aussi le pourcentage de fin qui n’est plus à 0% mais à 1% quand la machine est finie. Bon je n’ai pas encore regardé si j’avais fais un truc un peu bizarre qui explique ça mais peut-être que ça peut aussi t’aider.
En tout cas lors de la mise en place de mes équipements et scénario je n’avais pas ce phénomène.
Voui un « Marche » à 14:31:15 et un « Arrete » à 14:31:16
------------------------------------
[2022-09-18 14:31:15][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Sous-sol][Seche-linge][Statut de machine] (Marche).
[2022-09-18 14:31:15][SCENARIO] Exécution du sous-élément de type [action] : action
[2022-09-18 14:31:15][SCENARIO] Log : Tâche : None
Statuts Machine : Marche
Sous-tension : 1
[2022-09-18 14:31:15][SCENARIO] Exécution du sous-élément de type [condition] : if trigger(#[Sous-sol][Sèche-linge][Statut de machine]#) == 1
[2022-09-18 14:31:15][SCENARIO] Evaluation de la condition : [1 == 1] = Vrai
[2022-09-18 14:31:15][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-09-18 14:31:15][SCENARIO] Exécution d'un bloc élément : 1007
[2022-09-18 14:31:15][SCENARIO] Exécution du sous-élément de type [condition] : if #[Sous-sol][Sèche-linge][Statut de machine]# == 'Marche'
[2022-09-18 14:31:15][SCENARIO] Evaluation de la condition : ["Marche" == 'Marche'] = Vrai
[2022-09-18 14:31:15][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-09-18 14:31:15][SCENARIO] Exécution d'un bloc élément : 1016
[2022-09-18 14:31:15][SCENARIO] Exécution du sous-élément de type [action] : code
[2022-09-18 14:31:15][SCENARIO] Exécution d'un bloc code
[2022-09-18 14:31:15][SCENARIO] Exécution d'un bloc élément : 1008
[2022-09-18 14:31:15][SCENARIO] Exécution du sous-élément de type [action] : action
[2022-09-18 14:31:15][SCENARIO] Affectation de la variable SL_Samsung_Conso_Start => 81100 = 81100
[2022-09-18 14:31:15][SCENARIO] Lancement du scénario : SC Etat LL SL options : {"#EtatLLSL#":"on"}
[2022-09-18 14:31:15][SCENARIO] Fin correcte du scénario
------------------------------------
[2022-09-18 14:31:16][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Sous-sol][Seche-linge][Statut de machine] (Arrete).
[2022-09-18 14:31:16][SCENARIO] Exécution du sous-élément de type [action] : action
[2022-09-18 14:31:16][SCENARIO] Log : Tâche : None
Statuts Machine : Arrêté
Sous-tension : 1
[2022-09-18 14:31:16][SCENARIO] Exécution du sous-élément de type [condition] : if trigger(#[Sous-sol][Sèche-linge][Statut de machine]#) == 1
[2022-09-18 14:31:16][SCENARIO] Evaluation de la condition : [1 == 1] = Vrai
[2022-09-18 14:31:16][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-09-18 14:31:16][SCENARIO] Exécution d'un bloc élément : 1007
[2022-09-18 14:31:16][SCENARIO] Exécution du sous-élément de type [condition] : if #[Sous-sol][Sèche-linge][Statut de machine]# == 'Marche'
[2022-09-18 14:31:16][SCENARIO] Evaluation de la condition : ["Arrêté" == 'Marche'] = Faux
[2022-09-18 14:31:16][SCENARIO] Exécution du sous-élément de type [action] : else
[2022-09-18 14:31:16][SCENARIO] Fin correcte du scénario
------------------------------------
Ensuite, il y a rafraichissement des infos, et la valeur Arrêté est récupérée :
[2022-09-18 14:31:15]DEBUG : updateInfoCmdWithValue : début cmd : main::dryerOperatingState::machineState
[2022-09-18 14:31:15]DEBUG : updateInfoCmdWithValue : mise à jour de : main::dryerOperatingState::machineStateà la valeur : Arrêté
Je pense qu’entre l’action envoyée et la demande de rafraichissement, l’API SmartThings n’a pas le temps de mettre à jour.
if ($body['capability'] !== 'refresh' && $body['command'] !== 'refresh') {
sleep(1); // Le 18/09/2022 pour test à cause d'un double refresh de la commande State
$eqLogic->refresh();
}