Si vous avez trouvé une faute d’orthographe, veuillez nous en informer en sélectionnant le texte en question et en appuyant sur Ctrl + Entrée . (140 caractères max). L’envoi est anonyme.

Aujourd’hui je vous propose un scénario Jeedom permettant de faire un Fondu paramétrable des ampoules Yeelight.

Ça faisait longtemps que je n’avais pas fait d’article sur les scénarios Jeedom et pour cause, j’ai déménagé ! J’ai donc remis à plat mon Jeedom et j’en ai profité pour faire le ménage en repartant de zéro, sans sauvegarde, histoire d’être véritablement sur une installation parfaitement propre. Voilà pour la petite histoire.

Donc, ce scénario consiste à faire un fondu sur la luminosité de 0 à 100%, ou l’inverse. L’intérêt, c’est d’avoir un seul scénario et de saisir en paramètres la durée du fondu et la durée des cycles.

Pour cela, nous allons utiliser une nouveauté de Jeedom V3, les Tags de scénarios.

Prérequis.

Pour l’article j’utilise une ampoule Yeelight Blanche, mais le principe est rigoureusement le même pour les RGB, ou même pour une lampe de bureau, ou toute autre lumière avec un retour d’état du niveau de luminosité.

Pour les lampes n’ayant pas de retour d’état, comme la lampe de chevet, on pourra utiliser une variable pour faire office de retour d’état du niveau de luminosité.

Le scénario pour le fondu de la luminosité (Cible)

Fondu paramétrable des ampoules Yeelight Jeedom

Il faut faire un scénario pour le fondu de 0% à 100% et un pour 100% à 0%, on pourrait ajouter une option dans les paramètres mais je ne veux pas trop compliquer le scénario pour l’article, après, libre à vous d’ajouter ce que vous voulez.

Dans cet exemple, on va faire un fondu de 15 minutes, avec des cycles de 30 secondes qui commence avec une luminosité à 100 % pour finir à 0%.

Pour être totalement exact, je finis à 1%, car j’ai bloqué la valeur minimum dans les paramètres de la commande. Voir l’article Xiaomi Mijia – Lampe de Bureau pour plus de détails.

Les Tags

Le scénario va recevoir deux TAGs :

  • #DureeTotal# : La durée du fondu en minutes, c’est à dire la durée pour passer d’une luminosité de 100 % à 0 %, (15 minutes).
  • #DuréeCycle# : La durée d’un cycle en secondes, c’est à dire le temps entre deux changement de luminosité, (30 secondes).

A cause des tags vous ne pouvez pas provoquer le scénario directement, il faudra passer par un scénario source.

Les variables

Il n’est pas possible de faire des opérations avec les TAGs, donc nous allons les stocker dans des variables.

Nous allons affecter trois variables :

  • DureeTotal : On stock la valeur du TAG #DureeTotal#. (En minutes)
  • DureeCycle: On stock la valeur du TAG #DureeCycle#(En secondes)
  • ValeurFondu : 100/((variable(DureeTotal)*60)/variable(DureeCycle))
    • 100 : C’est la valeur de luminosité au début du fondu.
    • variable(DureeTotal)*60 : On convertit la durée totale en secondes. (15 minutes X 60 = 900 secondes)
    • /variable(DureeCycle) : On divise par la durée d’un cycle, pour obtenir la valeur de luminosité à décrémenter.
    • Exemple : 100/(900/30) = 3.3333333 
  • Commande#[Appartement][Virtuel Lumière][On]# On allume l’ampoule.
  • Commande : #[Appartement][Virtuel Lumière][Luminosité]# Valeur = 100. On règle la luminosité à 100 %.

La Boucle pour le fondu

Maintenant qu’on a nos valeurs et que l’ampoule est allumée à 100%, on peut commencer la boucle pour le fondu.

Le nombre de tour pour la boucle est définit par la durée du fondu (15 min) et la durée des cycles (30 sec). On va donc mettre dans la valeur de la boucle :

De 1 A (variable(DureeTotal)*60)/variable(DureeCycle) FAIRE

Ça doit vous rappeler quelque chose, c’est la même formule que l’on utilise pour le calcul de l’incrémentation de la luminosité. On aurait pu la mettre dans une variable.

Commande : #[Chambre][Yeelight Blanc][Rafraichir]#

Je rafraîchis les valeurs de l’ampoule, pour être sûr d’avoir le bon retour d’état de la commande info luminosité.

Sleep : Valeur = variable(DureeCycle)

C’est là qu’on utilise la durée du cycle reçue par le TAG #DureeCycle#(30 secondes)

Commande : #[Appartement][Virtuel Lumière][Luminosité]# Valeur = #[Appartement][Virtuel Lumière ][Info Luminosité]#-round(variable(ValeurFondu)) 

  • #[Appartement][Virtuel Lumière ][Info Luminosité]# = C’est la valeur de la luminosité.
  • -round(variable(ValeurFondu))  = On décrémente la valeur de la variable(ValeurFondu) qu’on arrondit, car on ne peut pas affecter à la commande luminosité une valeur avec décimal.

Le scénario pour paramétrer les valeurs (Source)

Depuis un scénario source il faut lancer le scénario cible que l’on vient de créer avec les TAGs pour que le fondu commence.

Fondu paramétrable des ampoules Yeelight Jeedom

  • Depuis un autre Scénario
  • Insérer une commande : ACTION
  • Taper : scénario
  • Dans la liste déroulante, sélectionner le scénario que nous venons de créer.
  • Laisser l’action sur : Start
  • Dans la partie Tags, pour 5 minutes et 30 secondes, saisir : DureeTotal=5 DureeCycle=30.
    • Sans espace autour des signes « égal ».
    • Avec un espace entre les deux tags.
  • Cliquer sur exécuter et le fondu devrait commencer.
  • Pensez à mettre les Log du scénario sur « Temps réel » pour faire vos tests, sinon vous devrez attendre la fin du fondu pour voir les logs.Fondu paramétrable des ampoules Yeelight Jeedom
  • Commencez avec des fondus courts (1 minute et 10 secondes) par exemple : DureeTotal=1 DureeCycle=10

Exemple de log :

Start
//Les TAGS envoyés depuis le scénario source.
[#DureeTotal#] => 1
[#DureeCycle#] => 10 

//Les variables sont peuplées avec les valeurs des Tags
Affectation de la variable DureeTotal => 1 = 1
Affectation de la variable DureeCycle => 10 = 10

//On calcule la valeur du fondu
Affectation de la variable ValeurFondu => 100/((1*60)/10) = 16.666666666667

//On allume l'ampoule et on met la luminosité à 100 %
[Appartement][Virtuel Lumière][On] 
[Appartement][Virtuel Lumière][Luminosité] [slider] => 100

//On rafraîchit les valeurs de l'ampoule avant la pause, pour laisser le temps aux valeurs de remonter.
[Chambre][Yeelight Blanc][Rafraichir] 

//Pause de 10 secondes (#DureeCycle#) et on change la luminosité. (Luminosité - ValeurFondu)
Pause de 10 seconde(s)
[Appartement][Virtuel Lumière][Luminosité] [slider] => 83

//C'est reparti pour un tour
[Chambre][YeelightBlanc][Rafraichir]
Pause de 10 seconde(s)
[Appartement][VirtuelLumière][Luminosité][slider]=>66

[Chambre][YeelightBlanc][Rafraichir]
Pause de 10 seconde(s)
[Appartement][VirtuelLumière][Luminosité][slider]=>49

[Chambre][YeelightBlanc][Rafraichir]
Pause de 10 seconde(s)
[Appartement][VirtuelLumière][Luminosité][slider]=>32

[Chambre][YeelightBlanc][Rafraichir]
Pause de 10 seconde(s)
[Appartement][VirtuelLumière][Luminosité][slider]=>15

[Chambre][YeelightBlanc][Rafraichir]
Pause de 10 seconde(s)

//La dernière valeur est négative, mais la lumière ne s'éteint pas, car elle est bloquée à un mini de 1 dans les réglages
[Appartement][VirtuelLumière][Luminosité][slider]=>-2

Fin correcte du scénario

Évolutions possibles

  • Pour avoir un fondu qui augmente de 0% à 100 % de luminosité, il faut changer les commandes :
    • #[Appartement][Virtuel Lumière][Luminosité]# Valeur = 0.
    • #[Appartement][Virtuel Lumière][Luminosité]# Valeur = #[Appartement][Virtuel Lumière ][Info Luminosité]#+ round(variable(ValeurFondu)) 
  • Vous pouvez ajouter un Tag sur le sens du fondu et remplacer le de la commande :
    • #[Appartement][Virtuel Lumière ][Info Luminosité]# variable(SenseFondu) round(variable(ValeurFondu)) 
  • Vous pouvez ajouter un Tag sur la luminosité de départ qui est fixé à 100 dans l’exemple et remplacer les valeurs « 100 »  :
    • variable(DepartFondu)/((variable(DureeTotal)*60)/variable(DureeCycle))
    • #[Appartement][Virtuel Lumière][Luminosité]# Valeur = variable(DepartFondu)
  • Pour ne pas avoir des valeurs négatives ou supérieures à 100 %, vous pouvez ajouter un bloc :
    • SI #[Appartement][Virtuel Lumière ][Info Luminosité]#+ round(variable(ValeurFondu)) >= 0 ET #[Appartement][Virtuel Lumière ][Info Luminosité]#+ round(variable(ValeurFondu)) <= 100.
  • Vous pouvez aussi ajouter la gestion de la couleur sur une ampoule RGB.

Conclusion

Ce scénario peut être très utile dans un réveil matin par exemple. Personnellement je l’utilise le matin dans ma chambre avec la lampe de bureau pour me réveiller ou bien avec la gestion de la couleur sur une ampoule RGB le soir dans la chambre des enfants, pour qu’ils sachent que c’est la fin du temps libre et l’heure de dormir.

Si vous avez des idées de déclinaisons, d’optimisations, des remarques, ou besoin d’aide, n’hésitez pas à laisser un commentaire.

Cet article a 21 commentaires

  1. Ouquoi

    Merci pour cet article ca faisait longtemps comme tu dis 😉
    Scenario intéressant. Avec les yeelights tu peux egalement faire ca avec les flows non ?

    1. Guillaume Braillon

      Oui mais je trouve que ce n’est pas très intuitif et je préfère avoir la possibilité de l’adapter a n’importe quel type de lampe. Pour gérer les flows il faut encore apprendre de nouvelles règles.
      Désolé pour le délai, là je suis en train de préparer un article sur la gestion de la présence, les ASK via JPI, la gestion de la luminosité avec le bouton switch Xiaomi et après je m’attaque aux Designs avec gestion des tableaux … 😉

  2. Ronan

    Merci, je me suis levé ce matin en me disant : « il va falloir que je réfléchisse à un scénario de type levé du soleil … » et que vois-je ? juste ton article 😉

    Merci encore

    1. Guillaume Braillon

      Ça fait plaisir de savoir que mes articles tombent au bon moment 🙂

  3. Manuel

    Bonjour Guillaume,
    Merci pour ce tutoriel intéressant. Par contre, le problème que je vois, c’est que tu vas bloquer ton système domotique sur ton scénario pendant la durée totale du fondu.

    1. Guillaume Braillon

      Bonjour,
      Je ne vois pas en quoi le systeme domotique, en l’occurrence Jeedom, serait bloqué pendant le déroulement du scénario ?
      On peut très bien lancer plusieurs scénarios en même temps. Le sleep est bloquant pour le scénario mais pas pour les autres.
      Ta réflexion m’intéresse est ce que tu pourrais m’en dire plus ?

  4. Popix

    salut,
    On m’a déjà répondu plusieurs fois sur le forum ou sur le flux telegram qu’il fallait éviter les sleep car ça tire sur les ressources, il est préférable de faire du « DANS XX  » en bloc action.
    Je ne saurais pas rentrer dans le détail, désolé.

    Bel article en tout cas, merci pour ton temps, c’est clair et détaillé.

    ++

    1. Guillaume Braillon

      Oui il faut mieux utiliser la fonction dans lorsque l’on dépasse les 60 secondes. Dans le cas d’un fondu qui dure moins de 60 secondes le Sleep est tout indiqué. La fonction existe on peut donc l’utiliser il faut juste ne pas l’utiliser à la place de la fonction Dans.

  5. Donat

    Bonjour,
    L’idée d’indicateur lumineux dans la chambre des enfants est très intéressante, toutefois, comment gères-tu la lumière le reste du temps ? Si interrupteur normal, double allumage/extinction pour revenir sur le fonctionnement « normal » et déclenchement de ton scénario « coucher depuis le smartphone (ou autre) ? Ou remplacement des interrupteurs par bouton/interrupteur xiaomi ? ou autre….
    Merci

    1. Guillaume Braillon

      Bonjour,
      J’ai essayé plusieurs choses :
      1) Interrupteur bouton switch collé sur l’interrupteur normal. 1 clic = ON/OFF, 2 clic = Auto / Manu, long clic = luminosité +20. == > mon fils appuyait toujours sur le vrai interrupteur pour éteindre.
      2) Interrupteur mural Wireless collé à la place de l’interrupteur normal, j’ai connecté en direct les câbles électrique et supprimé l’interrupteur normal. Clic droit = ON/OFF, clic gauche = luminosité +20, double clic = Auto/Manu==> Ça fonctionne plutôt bien.

      Derrière j’ai des scenarios qui gère la luminosité en fonction de l’heure.

  6. PATRICK

    Super merci pour ton exemple si clair (logs, variables, etc…..)
    Je découvre Jeedom et tu viens de m’aider grandement
    Bonne continuation

  7. Ben

    Bonjour,
    Question bete , il faut quand même utiliser un plugin ? Lequel utilises tu ? Merci

    1. Guillaume Braillon

      Bonjour,
      Hormis le plugin Xiaomi Home il n’y a pas besoin de plugin.

  8. BX

    Pour ma part j’essai de faire le scénario à l’envers qui est d’allumer la lampe pour faire un réveil doux.
    Il faut garder le sleep ou une autre commande existe ?

  9. BX

    J’ai mis les valeurs suivantes pour le scénario source : DureeTotal=1 DureeCycle=10
    La lampe s’allume car j’ai mis 1 % au démarrage mais la luminosité n’augmente pas :
    Logs scénar source :
    [2018-02-06 19:00:31][SCENARIO] Start : 'Scenario lance manuellement'.
    [2018-02-06 19:00:31][SCENARIO] Exécution du sous-élément de type [action] : action
    [2018-02-06 19:00:31][SCENARIO] Lancement du scénario : Réveil matin semaine options : Array
    (
    [#DureeTotal#] => 1
    [#DureeCycle#] => 10

    Logs scénar :

    (
    [background] => 0
    [slider] => 16+round(100/((#DureeTotale#*60)/10))
    )
    [2018-02-03 12:57:49][SCENARIO] Exécution du sous-élément de type [action] : do
    [2018-02-03 12:57:49][SCENARIO] Exécution de la commande [Eclairage ][Yeelight][Rafraichir] avec comme option(s) :
    Array
    (
    [background] => 0
    )
    [2018-02-03 12:57:49][SCENARIO] Pause de 10 seconde(s)
    [2018-02-03 12:58:00][SCENARIO] Exécution de la commande [Eclairage ][Yeelight][Luminosité] avec comme option(s) :
    Array
    (
    [background] => 0
    [slider] => 16+round(100/((#DureeTotale#*60)/10))
    )
    [2018-02-03 12:58:00][SCENARIO] Exécution du sous-élément de type [action] : do
    [2018-02-03 12:58:00][SCENARIO] Exécution de la commande [Eclairage ][Yeelight][Rafraichir] avec comme option(s) :
    Array
    (
    [background] => 0
    )
    [2018-02-03 12:58:00][SCENARIO] Pause de 10 seconde(s)

    [2018-02-06 19:00:41][SCENARIO] Log : Lancement de boucles pendant minutes
    [2018-02-06 19:00:41][SCENARIO] Exécution d'un bloc élément : 4
    [2018-02-06 19:00:41][SCENARIO] Log : Fin de la scène de réveil, Scènes à à OFF.
    [2018-02-06 19:00:41][SCENARIO] Fin correcte du scénario

    Pouvez-vous me donner un coup de main svp ?

  10. BX

    Non personne pour me donner un coup de main ?!

    1. Guillaume Braillon

      Bonjour,
      désolé je n’avais pas vu le messager.
      A la ligne :
      [slider] => 16+round(100/((#DureeTotale#*60)/10))
      Tu ne devrais pas avoir la formule mais un nombre exemple :
      [slider] => 21
      Si tu ne trouve pas envoi moi un copie d’écran de ton scénario a contact@guillaumebraillon.fr

  11. stephane

    Salut Guillaume, je souhaite simplement utiliser l’effet de fondu pour un scénario couché rapide afin que la lumière s’éteigne proprement en fondu avant l’allumage d’une autre.
    Ton scénario est top mais malgré tout complexe surtout dans mon cas ou je veux faire un fondu simple et rapide à l’extinction.
    Sais-tu s’il existe d’autre méthode pour faire du fondu ?

    1. Guillaume Braillon

      Bonjour,
      Si c’est juste pour que la luminosité soit réduite à 1 avant extinction il suffit de mettre la valeur de la luminosité dans les action avant exécution des paramètres de la commande off.
      N’hésite pas si tu as besoin de plus de détails.

      1. stephane

        merci de ton retour,
        le simple fait de passer la valeur luminosité à 1 devrait faire l’effet de fondu que j’escompte ? en fait je trouve ça plus sympa un fondu qu’un simple ON/OFF brutal 🙂
        Je vais tester et te dirais alors

Les commentaires sont fermés.

Les liens d’affiliation vers les partenaires nous permettent de recevoir du matériel gratuit afin de proposer plus de tests. Nous refusons les partenaires qui ne nous laissent pas dire ce que nous voulons dans les articles. Les commissions perçues sont réutilisées pour l’achat de matériel et l’entretien du site.
Merci de soutenir les sites amateurs et indépendants !

Merci à ceux qui ont contribué.

Fermer le menu

Rapport de faute d’orthographe

Le texte suivant sera envoyé à nos rédacteurs :