Scène - Continuer seulement si

Bonjour à tous,

Je ne suis pas sûr de comprendre à 100% le fonctionnement du bloc « Continuer seulement si » dans les scènes.

Est-ce qu’il fonctionne comme le point 1 ou 2 ?

1 → Il récupère la valeur de la variable dans « Récupérer le dernier état » dans le bloc précédent et la scène s’arrête définitivement si la condition n’est pas remplie.

2 → Il récupère la valeur de la variable dans « Récupérer le dernier état » dans le bloc précédent et la scène se met en pause TANT QUE la variable ne rempli pas la condition ? En gros, il vérifierait chaque seconde la variable pour ensuite passer au bloc suivant dès que la condition est remplie.

Mon objectif est de lancer mon lave-vaisselle uniquement si un event est envoyé pour dire « Je suis prêt » et lorsque ma production d’énergie est supérieur à x Kw/h.
Dès que je reçois l’event via Node-RED, la scène se déclenche et j’attends impatiemment que la variable soit supérieur à la valeur définie.

En gros, j’espère que cela fonctionne comme le point 2 sinon je suis un peu embêté.
Si cela fonctionne comme le point 1, auriez-vous des idées pour m’aider ?

Merci d’avance :slight_smile:

Hello,

ça fonctionne comme tu le décris dans le point 1. A mon sens, le mieux est de passer par un déclenchement programmé de ta scène : par exemple toutes les 5mn, si « je suis prêt » et si production > x kW, démarrer le lave-vaisselle.

1 « J'aime »

Ok, je te remercie pour ta réponse, même si elle ne me plait pas :stuck_out_tongue: Mais au moins, j’ai ma réponse.

Pourquoi faire simple, quand on peut faire compliqué :smiley: Il serait tellement plus simple de mettre plusieurs déclencheurs avec des ET plutôt qu’uniquement des OU. Après, c’est peut-être prévu dans le futur car trop technique niveau développement. Je ne vais pas juger ni critiquer sans connaitre la raison.

Et donc, si je mets une pause dans 230 minutes (le temps d’un lave-vaisselle), tu me confirmes aussi que pendant cette période, il ne va pas continuer toutes les 5 minutes à faire des tests inutilement ?
Merci pour ta piste en tout cas !

Après plusieurs heures, je confirme que cela fonctionne avec ton système :slight_smile:

Pour ceux qui sont intéressés et qui possèdent un lave-vaisselle connecté via le système "Home Connect’ (Siemens, Bosh, …), n’hésitez pas à me contacter si vous souhaiter un peu d’aide pour vous aiguiller.

sisi, il va continuer. Il est nécessaire d’ajouter un continuer seulement si le lave-vaisselle n’est pas déjà démarré ou réinitialiser ta variable « Je suis prêt » après avoir démarré :slight_smile: (pour éviter de le démarrer en boucle)

Bizarre de pouvoir lancer en parallèle la même scène… Il faudrait un contrôle pour vérifier qu’elle n’est pas déjà en train de fonctionner. Ou laisser le choix aux gens de pouvoir l’exécuter en parallèle ou non pour d’autres besoins que j’ignore.

Dans mon cas, le lave-vaisselle ne sera plus « ready » car il sera en « run » donc il ne pourra pas lancer plusieurs fois la commande. Mais au niveau des performances, la scène continuera de faire des tests inutilement.

Encore merci à toi pour tes réponses.

J’ai l’impression que c’est quelque chose qui est mal compris par les nouveaux arrivants, c’est sûrement juste un problème d’UX, merci pour ton retour, je vais essayer de t’expliquer et ensuite on pourra voir comment améliorer l’interface pour que ce soit plus clair :slight_smile:

Un déclencheur est un « évènement » qui intervient à un instant précis t.

Essayer d’avoir plusieurs déclencheurs en « ET » n’aurait pas de sens, en revanche ce qui a du sens c’est de voir ça sous forme de 2 choses :

Un évènement + une liste de conditions

Exemple: Si je pars de la maison ET que la lumière est allumée

  • « Je pars de la maison » est un évènement
  • « La lumière est allumée » n’est pas un évènement (je n’ai pas allumé la lumière à la même nano-seconde ou je pars), en revanche c’est un état.

:arrow_right: Ce qui est utile pour un utilisateur, c’est d’avoir un déclencheur ET une vérification de conditions (vérification d’états)

C’est le chemin qu’on a choisit dans Gladys !

Une scène peut se composer de 3 parties :

  • Le déclencheur
  • Les conditions
  • Les actions

Les conditions peuvent être multiple (sont au final dans la même « zone » que les actions)

Est-ce que c’est plus clair, et est-ce que tu me dire ce que tu ne comprenais pas/ce que tu entendais quand tu disais « Plusieurs déclencheurs » ?

Tu n’es pas le premier à penser qu’on ne peut pas faire dans Gladys un déclencheur avec des conditions, alors que c’est entièrement possible !

Peut-être que ce qui pose problème, c’est le fait d’avoir plusieurs déclencheurs pour une scène…

2 « J'aime »

N’hésite pas à écrire un tutoriel dans la catégorie « Tutoriels » du forum, on est toujours preneur de tutos comme celui là qui peuvent aider du monde :slight_smile:

1 « J'aime »

Je comprends parfaitement ta manière de voir les choses, aucun souci avec ça.
Je ne pense pas qu’il y a une bonne ou mauvaise manière de faire, chaque système domotique sa philosophie. C’est à l’utilisateur de s’adapter et c’est ce que je fais sans critiquer :slight_smile:

Là où j’étais un peu embêté, c’est qu’à mes yeux, en tant qu’ancien DEV, je vois 2 déclencheurs dans ma scène (encore une fois, c’est parfois sujet à interprétation).

  1. l’API de Siemens m’envoie un event à un instant T lorsque quelque chose se produit (porte ouverte, programme en fonctionnement, erreur, etc …)
    → Je crée un « état » prêt ou pas prêt dans Node-RED lorsque 3 event sont réunis (porte fermée, bouton « power » allumé et bouton « accès à distance » activé).
  2. La production d’énergie instantanée n’est pas quelque chose que je peux contrôler physiquement, ce sont les conditions climatiques qui influence cet élément, c’est donc à mes yeux un event lorsque je dépasse un certain seuil. Je vais donc, à certain moment, dépasser une valeur à un instant T mais je ne sais JAMAIS quand cela va se produire.

Dans mon cas, j’ai donc travaillé comme ceci :

Ne sachant pas quand cela va se produire, car à mes yeux ce sont 2 déclencheurs, toutes les X minutes, je récupère la valeur de mes variables à l’instant T → Est-ce que mon lave-vaisselle est prêt ? Est-ce que ma consommation instantanée est > x Kwh ?

De cette manière, je contourne un peu ma problématique.
Après, est-ce le plus optimisé ? Etant donné que je test toutes les X minutes, même la nuit en sachant pertinemment que je ne vais strictement rien produire avec mes panneaux solaires, je ne pense pas.


Je pourrais aussi partir sur un déclencheur par rapport à la consommation instantanée. Dès qu’elle est plus grande que X Kwh, je vérifie ma condition (l’état du lave-vaiselle est-il ready ?).
Là aussi, est-ce que je test systématiquement :

Au risque de déclencher la scène chaque seconde, pas optimal à mes yeux.

Ou je test uniquement une seule fois si le seuil est dépassé ? Au risque que la valeur reste toute la journée au-dessus du seuil et ainsi louper la mise en marche du lave-vaisselle…

Pas facile de prendre des décisions :sweat_smile:


Pour les tutoriels, oui, il faudrait que je prenne une fois le temps de faire ça.
J’en avais un autre aussi sur la mise en place et configuration du reverse proxy présent sur le NAS Synology pour l’accès depuis l’extérieur (contrairement à un tuto déjà présent sur l’ouverture des ports) mais contradictoire avec ton offre payante.

Tu contournes pas du tout, c’est une bonne façon de faire je pense :slight_smile:

Tu le dis il y a 2 façons de le faire :

  • Soit avoir un déclencheur programmé récurrent qui vérifie 2 conditions
  • Soit avoir un déclencheur sur un des 2 variables, et ensuite une condition

Quand à une question d’optimisation sur le déclencheur programmé, dans Gladys le moteur de scène est extrêmement performant, et quelques vérifications sur quelques variables c’est vraiment rien du tout.

Un CPU fait des milliards d’opérations chaque secondes, c’est pas 2 if en plus qui vont le gêner, c’est fait pour ça :slight_smile:

Dans ton cas, effectivement un déclenchement programmé toutes les X minutes fait le plus sens. Pense limite à avoir un device « virtuel » MQTT dans Gladys qui te permet de sauvegarder un état pour ne pas lancer ton lave vaisselle plusieurs fois si il tourne déjà

1 « J'aime »

Il ne faut pas oublier que je n’ai pas un NUC mais un Raspberry et j’ai déjà eu quelques problèmes d’accès à Gladys car trop de requêtes vers la DB trop grosse. Alors j’aime bien faire attention au côté « performance » :face_with_open_eyes_and_hand_over_mouth:

Merci pour le conseil mais cet élément a été pris en compte, mon lave-vaisselle ne peut pas se lancer plusieurs fois :slight_smile:

image

Je n’ai pas trouvé d’autre élément plus adéquat qui dit « prêt » ou « pas prêt » (plutôt que « actif » ou "inactif) mais cela fait le travail. Et c’est Node-RED qui fait le travail en back-end pour modifier ou non la valeur de ce statut.

Encore merci à tous _

Ah ? Hésite pas à créer un sujet spécifique tu as des retours là dessus ! Tu es sur quoi comme stockage SD ? SSD ?

Pour le coup les actions « récupérer le dernier état » et « continuer seulement si » ont lieu uniquement en RAM, pas de disque :slight_smile:

Cool ! C’est propre

J’avais ouvert un post et après analyse, ma DB était montée à 14Gb sur une carte SD.
Chaque valeur reçue en MQTT s’enregistrait chaque seconde en DB. À un moment, on ne peut pas faire de miracle non plus :slight_smile:
J’ai nettoyé ma DB (plusieurs nuits tellement elle était énorme), j’ai décoché le fait d’enregistrer chaque état, j’ai sélectionné « une semaine » dans les paramètres et c’est reparti comme sur des roulettes :innocent:

Ah, oui effectivement. 1 event MQTT par seconde, en gardant tout l’historique, ça va vite ^^

:+1: