Scène lumière avec détection de mouvement - 2 problemes

Bonjour,

J’ai passé 3j sur Home Assistant sans succès a tenter de créer des activités qui me semblaient simple (réveil lumineux progressif en intensité et en température de couleur, entre autre), je me tourne donc vers Gladys maintenant (avec Zigbee2MQTT).

Je créé une scène dans mon couloir pour allumer les lumières quand un mouvement est détecté, puis les lumières s’éteigne automatiquement.

-Mouvement détecté → lumières s’allument
-Après 2 minutes sans mouvement → lumières baissent
-Après 30 secondes sans mouvement → lumières s’éteignent

-Si je bouge pendant la baisse de luminosité → retour en pleine puissance

-Jour : intensité lumineuse plus forte | Nuit : intensité lumineuse plus faible

Mon soucis :

  1. Extinction brutale : les lumières s’éteignent instantanément, alors que l’allumage et la baisse sont fluides. J’ai pourtant activé les transitions dans Zigbee2MQTT/appareil/parametre (specifique)/transition : Quelqu’un a réussi à avoir une extinction en fondu avec des ampoules Hue Gu10 ?
  2. Mauvais délai après un ré-allumage : quand les lumières sont en mode « baissé » et que je déclenche un mouvement, elles remontent bien en pleine puissance; mais elles ne restent allumées que le reste du délai du mode baissé (30 secondes), au lieu de redémarrer le délai complet du mode pleine puissance (2 minutes). Comme si la scène reprenait là où elle s’était arrêtée, au lieu de repartir du début. Comment faire pour que dès qu’un nouveau mouvement est détecté, la scène recommence ?

Merci pour vos astuces ! :folded_hands:

Bonjour et bienvenue sur Gladys !

Tes deux problèmes ont une explication. Je les prends dans l’ordre.

1. Extinction brutale

L’action « Eteindre les lumières » de Gladys envoie simplement {"state": "OFF"} sur zigbee2mqtt/<ton ampoule>/set. C’est Zigbee2MQTT qui applique la transition, ou pas. En principe, quand l’option transition est réglée sur l’appareil, Z2M transforme ce OFF en une baisse progressive jusqu’à 0, puis éteint.

Pour savoir de quel côté ça coince, éteins l’ampoule directement depuis l’interface de Z2M. Si c’est aussi instantané, Gladys n’y est pour rien : ça se joue entre Z2M et l’ampoule. Vérifie alors que la valeur de transition (en secondes) a bien été enregistrée.

Dans tous les cas, le plus fiable est de demander la transition directement dans le message : elle passe alors avant l’option de l’appareil. Dans ta scène, remplace « Eteindre les lumières » par l’action « Envoyer un message Zigbee2mqtt » :

  • Topic : zigbee2mqtt/NOM_DE_TON_AMPOULE/set (le nom tel qu’il apparaît dans Z2M, préfixe zigbee2mqtt/ compris)
  • Message : {"state": "OFF", "transition": 3} (3 secondes de fondu)

Il faut une action par ampoule. Si tes GU10 sont dans un groupe Z2M, un seul message sur zigbee2mqtt/NOM_DU_GROUPE/set suffit, et elles s’éteindront exactement en même temps. La même astuce marche pour la baisse, par exemple {"brightness_percent": 20, "transition": 2}.

2. Le délai qui ne repart pas de zéro

La scène ne reprend pas là où elle s’était arrêtée. Chaque mouvement lance une nouvelle exécution de la scène, en parallèle de celle qui tourne déjà, et Gladys n’annule pas la précédente.

Je suppose que ta scène ressemble à « Mouvement → allumer → Attendre 2 min → baisser → Attendre 30 s → éteindre ». Quand tu bouges pendant la phase baissée, la nouvelle exécution rallume à fond. Mais l’ancienne est toujours dans son « Attendre 30 s », et elle éteint à la fin. De plus, 2 minutes plus tard, la nouvelle exécution va baisser la luminosité, ce qui peut rallumer les lampes en faible : régler une luminosité allume une ampoule Z2M.

La solution est de ne plus compter le temps avec « Attendre » et de laisser le déclencheur le faire. Le déclencheur « Changement d’état de l’appareil » a une option prévue pour ça : « Exécuter la scène après que la condition ait été valide pendant : ». Le minuteur est annulé dès que le capteur repasse à « Mouvement détecté », et il repart de zéro au prochain « Pas de mouvement ».

Il faut donc découper en 3 petites scènes :

Scène A – Couloir : allumage

  • Déclencheur : « Changement d’état de l’appareil » → détecteur du couloir = Mouvement détecté
  • Actions : ta logique jour/nuit. Par exemple, une condition « Si… Alors… Sinon… » contenant une « Condition temporelle » : Alors luminosité forte, Sinon luminosité faible.

Scène B – Couloir : baisse

  • Déclencheur : détecteur du couloir = Pas de mouvement, en cochant « Exécuter la scène après que la condition ait été valide pendant : 2 minutes »
  • Action : baisser la luminosité

Scène C – Couloir : extinction

  • Déclencheur : détecteur du couloir = Pas de mouvement pendant 150 secondes (2 min + 30 s, car les deux minuteurs démarrent au même moment)
  • Action : le message Zigbee2mqtt {"state": "OFF", "transition": 3} vu plus haut

Résultat : si tu bouges pendant la phase baissée, la scène A remet la lumière à fond et les minuteurs de B et C sont annulés. Quand tu t’arrêtes, ils repartent de zéro : 2 minutes à fond, puis 30 secondes baissé, puis extinction en fondu.

Deux conseils :

  • Dans B et C, coche aussi « Exécuter seulement lorsque le seuil est passé ». Le minuteur ne démarre alors qu’au passage de « Mouvement détecté » à « Pas de mouvement ». Si le capteur renvoie « Pas de mouvement » plus tard, la baisse ne sera pas relancée, et tes lampes ne se rallumeront pas en faible.
  • Le minuteur ne démarre que quand le détecteur envoie « Pas de mouvement », et chaque détecteur attend un certain temps avant de l’envoyer. Sur certains modèles, ce temps se règle dans Z2M (option occupancy_timeout). Le délai réel est donc ce temps-là plus tes 2 minutes : ajuste en conséquence.

La durée en secondes dans le déclencheur et l’action Zigbee2mqtt sont disponibles dans la version actuelle de Gladys (5.1.3) : pense à mettre à jour si besoin.

Tiens-nous au courant !

Merci beaucoup c’est très précis ! En effet j’avais utilisé « attendre ». Je comprend ta logique en la lisant.

Je constate qu’a l’extinction, le temps de transition indiqué dans M2QTT va juste indiquer le délai entre l’ordre d’éteindre, et la lumière qui s’éteint, plutôt que d’avoir une intensité lumineuse qui baisse de manière graduel sur la durée de transition indiqué.
C’est un peu mysterieux :
-Si je rentre « 0 » dans transition, la lumière s’allume de manière abrupte et s’éteint de manière abrupte.
-Si je met 1, la lumière fait une légère transition a l’allumage, mais s’éteint de manière abrupte.
-Si je met 5, la lumière fais la même transition qu’a 1 a l’allumage, et s’éteint de manière abrupte avec un délai de 5sec.

J’affirme que même avec {« state »: « OFF », « transition »: 3} , mes GU10 s’éteignent brutalement.
J’ai bien une action par ampoule, je n’ai pas fait de groupe. Tu me conseil de grouper mes ampoule quand j’en ai 2 en paire et d’envoyer des ordres au groupe plutôt qu’a chaque ampoule séparée ?

Peut être devrais-je activer Hue native control ?

Pour le second point, j’aimerai avoir ton avis sur un détail : le jour, au bout de 2min, ça dim pendant 30sec puis ça s’éteint. Mais la nuit (dans l’idée), ça s’allume pendant 5min, ça ne dim pas, et ça s’éteint au bout de 5min (sauf si mouvement capté entre temps, elle relance pour 5min).

Pour ça j’ai tenté de rajoute dans une condition temporelle dans « couloir baisse » et dans « extinction » :

Condition Temporelle (07:00 - 23:00)

Alors : Dim light

Sinon : vide (dans l’idée, « vide » ça ferait continuer « couloir allumage » ?)

Et j’ai séparé la scène d’extinction en en faisant une pour le jour (après 150sec), et une pour la nuite (après 5min)

Merci pour le retour détaillé, ton test est très parlant !

1. Extinction

Avec une transition, ta GU10 attend la durée puis coupe d’un coup. Par défaut, Z2M simule l’extinction en fondu avec une commande Zigbee standard (« descendre à 0 puis éteindre »), et tes ampoules l’exécutent visiblement à leur façon.

Donc oui, active Hue native control sur chaque ampoule, dans les paramètres spécifiques de l’appareil dans Z2M. Z2M utilise alors le protocole propre à Hue, celui du pont Hue, et la transition devient une vraie durée de fondu (si l’ampoule le supporte). Reteste ensuite {"state": "OFF", "transition": 3}.

Si ça ne change rien, voici un plan B pour la scène d’extinction, puisque tes baisses de luminosité sont bien fluides :

  1. Message {"brightness": 1, "transition": 3}
  2. Attendre 3 secondes
  3. Message {"state": "OFF", "transition": 0}

Pour le groupe, ce n’est pas indispensable. Gladys ne gère pas les groupes Z2M comme des appareils : tu ne pourrais le piloter qu’avec l’action « Envoyer un message Zigbee2mqtt ». Son avantage, c’est un seul ordre et deux ampoules parfaitement synchronisées. Avec 2 ampoules, deux messages à la suite suffisent. Règle d’abord le fondu sur une ampoule.

2. Jour / nuit

Ta logique est bonne. Avec un « Sinon » vide, la scène « Couloir baisse » s’arrête simplement sans rien faire, et les lampes restent allumées comme elles sont. Elle ne « continue » pas « Couloir allumage », qui a déjà fini son travail, mais le résultat est celui que tu veux. Encore plus simple : mets la Condition temporelle directement en première action, suivie de la baisse. Hors plage horaire, la scène s’arrête là.

Point important : chaque scène d’extinction doit avoir sa propre Condition temporelle en première action. Sinon, l’extinction « jour » (150 s) se déclenche aussi la nuit et coupe au bout de 2 min 30 :

  • Extinction jour : Pas de mouvement pendant 150 s → Condition temporelle Après 07:00 / Avant 23:00 → extinction
  • Extinction nuit : Pas de mouvement pendant 5 min → Condition temporelle Après 23:00 / Avant 07:00 (Gladys gère le passage de minuit) → extinction

La condition est vérifiée au moment où le minuteur se termine, donc ça marche aussi autour de 23:00 et 07:00. La nuit, un mouvement annule le minuteur de 5 min, qui repart de zéro au prochain « Pas de mouvement ».

PS : tu as écrit « dim pendant 30 min ». Si c’est bien 30 s, 150 s est la bonne valeur ; pour 30 min, il faudrait mettre 32 min.

Merci ! Logique en effet ! J’ai remplacé les « Si, Alors, Sinon », lorsque le « Sinon » est vide, car il semble en effet que ce soit la même chose que de simplement mettre une condition temporel « Si, Alors ».

(Bien vu, je voulais écrire 30s, c’est corrigé)

  1. En activant « Hue Native Control » sur mes 2 GU10, je remarque que les scenes ne se lancent pas en journée. Donc pour l’instant je l’ai désactivé. Je dois faire quelque chose d’autre pour que la scene fonctionne une fois « Hue Native Control » activé ?
    1. Avec « Hue Native Control » desactivé, « {« state »: « OFF », « transition »: 3} » ne me donne pas une extinction fluide.
  2. Avec « Hue Native Control » desactivé, « {« brightness »: 1, « transition »: 3} » + 3s + « {« state »: « OFF », « transition »: 0} » ne me donne pas une extinction fluide non plus.
  3. Si j’active « Hue Native Control », je laisse « transition :1 » ou ça n’est plus pris en compte ?
  4. « Hue Native Control » fonctionne bien sans Hue Bridge ?
  5. Soucis (léger), je remarque que l’allumage pleine puissance dure 2min15 (au lieu de 2min), et que le dim dur 30s (parfait). Une idée pour atteindre 2min pile poil ?

Scene 1 : Allumage

Quand
Entrée Capteur 1 (Détection mouvement) - Mouvement détecté - rien de coché

Alors
Condition « Si… Alors… Sinon… »
Condition temporelle
≥ 07:00 · ≤ 23:00

Alors
En même temps
Contrôler un appareil -
zigbee2mqtt-entree-plafond-1-light-brightness-brightness · 254
Contrôler un appareil - zigbee2mqtt-entree-plafond-2-light-brightness-brightness · 254

Sinon

En même temps
Contrôler un appareil -
zigbee2mqtt-entree-plafond-1-light-brightness-brightness · 51
Contrôler un appareil - zigbee2mqtt-entree-plafond-2-light-brightness-brightness · 51

Scene 2 : Baisse

Quand
Entrée Capteur 1 (Détection mouvement) - Pas de mouvement - Executer la scène après que la condition ait été valide pendant : 2min

Alors
Condition temporelle
≥ 07:00 · ≤ 23:00
En même temps
Contrôler un appareil -
zigbee2mqtt-entree-plafond-2-light-brightness-brightness · 26
Contrôler un appareil - zigbee2mqtt-entree-plafond-1-light-brightness-brightness · 26

Scene 3 : Extinction jour

Quand

Entrée Capteur 1 (Détection mouvement) - Pas de mouvement - Exécuter la scène après que la condition ait été valide pendant : 150s

Alors

Condition temporelle≥ 07:00 · ≤ 23:00

En même temps

Envoyer un message Zigbee2mqttzigbee2mqtt/Entrée Plafond 1/set - {« state »: « OFF », « transition »: 3}

Envoyer un message Zigbee2mqtt - zigbee2mqtt/Entrée Plafond 2/set - {« state »: « OFF », « transition »: 3}

Scene 4 : Extinction soir

Quand

Entrée Capteur 1 (Détection mouvement) - Pas de mouvement - Exécuter la scène après que la condition ait été valide pendant : 5min

Alors

Condition temporelle≥ 23:00 · ≤ 07:00

En même temps

Envoyer un message Zigbee2mqtt - zigbee2mqtt/Entrée Plafond 1/set - {« state »: « OFF », « transition »: 3}
Envoyer un message Zigbee2mqtt - zigbee2mqtt/Entrée Plafond 2/set - {« state »: « OFF », « transition »: 3}

Hello tout le monde ! J’ai toujours un soucis lors de l’extinction de mes lumières Hue GU10, je n’arrive pas a avoir une extinction progressive (avec ou sans « Hue Native Control » activé dans Z2M). Quelqu’un a une idée ? Voici un exemple d’une scene d’extinction qui n’est pas progressive