Contrôle du volume

Voici un petit temps déjà que je pense à la gestion du volume un peu plus “domotisée” pour mon ensemble multimédia.

Pour rappel, j’ai 3 équipements qui sont gérés par Jeedom via un Harmony Hub et plusieurs activités. J’ai donc quelques scenarii qui zappent automatiquement pour des émissions que nous regardons tous les jours, qui gère le choix de la chaîne des dessins animés pour notre fille aînée en fonction du jour.

Tout cela fonctionne très bien à part que de temps à autre, le Harmony Hub n’active pas l’activité de suite et cela m’oblige parfois à redémarrer le Harmony.

Sauf qu’aujourd’hui, j’ai de grosses différences de niveaux sonores entre certaines chaînes. Donc j’ai voulu mettre en place une solution pour que, suivant la chaîne choisie, le volume s’adapte.

Pour ce faire, j’ai créé un virtuel avec trois commandes: VolumeUp, VolumeDown (qui utilisent les commandes du plugin Harmony Hub liées au Home-Cinéma) ainsi que le volume en dB tel qui est affiché sur ce dernier, qui sera incrémentée ou décrémentée en fonction de l’utilisation des deux premières commandes.

Dans les deux commandes gérées par Harmony Hub, ici #[Séjour][MonAmpli][Volume Up]# et #[Séjour][MonAmpli][Volume Down]#, j’ai modifié la configuration pour incrémenter la variable quand on utilise les boutons manuellement.

Ensuite, il y a un scénario qui sera utilisé pour faire cette incrémentation ou décrémentation si elle n’est pas faite manuellement. J’utilise les tags de la v3 de jeedom pour transmettre le volume que je veux atteindre. Le scénario fait le calcul de combien il doit incrémenter ou décrémenter en fonction de la valeur en cours et choisit de diminuer ou augmenter en fonction du résultat du calcul, via une boucle.

- Nom du scénario : Gestion_Volume
- Objet parent : Séjour
- Mode du scénario : provoke
    
    ACTION
     (variable) Affectation de la variable : HOMEC_DIFFVOLUME à abs(variable(HOMEC_VOLUME))-abs(#target_volume#)
    
    SI variable(HOMEC_DIFFVOLUME) != 0
    ALORS
         
        POUR abs(variable(HOMEC_DIFFVOLUME))
        FAIRE
             
            SI variable(HOMEC_DIFFVOLUME) <0
            ALORS
             #[Séjour][vRemoteControl][VolumeDown]# - Options : {"enable":"1","background":"0"}
            SINON
             #[Séjour][vRemoteControl][VolumeUp]# - Options : {"enable":"1","background":"0"}
         (sleep) Pause de  : 1
    SINON

Ce scénario est appelé par chaque commande du plugin Telecommande Freebox (de la même manière que pour le VolumeUp et VolumeDown plus haut) afin de déterminer le volume sonore pour chaque chaine. Par d’autres choix possibles car les commandes du plugin ne sont pas disponibles dans la liste des commandes pouvant être utilisée comme déclencheur dans un scenario.

Ce scénario de gestion du volume pourrait être un peu plus étoffé en gérant les heures auxquels ils sont déclenchés ou sur d’autres critères afin d’éviter, par exemple, d’avoir un volume trop élevé si les enfants sont au lit. Voici l’ajout que j’ai fait afin de réduire le volume sonore défini par chaine si nos filles sont au lit.

        SI #[Chambre_Victoria][Th_Réversible_Victoria][Mode]# == "Sieste" OU #[Chambre_Eva][Th_Réversible_Eva][Mode]# == "Sieste"
        ALORS
         (variable) Affectation de la variable : HOMEC_DIFFVOLUME à abs(variable(HOMEC_VOLUME))-(abs(#target_volume#)+7)
        SINON
         
        SI #[Chambre_Eva][Th_Réversible_Eva][Mode]# == "Nuit" OU #[Chambre_Victoria][Th_Réversible_Victoria][Mode]# == "Nuit" 
        ALORS
         (variable) Affectation de la variable : HOMEC_DIFFVOLUME à abs(variable(HOMEC_VOLUME))-(abs(#target_volume#)+10)
        SINON
         
        SI #time# > 0700 ET #time# < 1000
        ALORS
         (variable) Affectation de la variable : HOMEC_DIFFVOLUME à abs(variable(HOMEC_VOLUME))-(abs(#target_volume#)+7)
        SINON

A voir à l’utilisation si cela convient à 100%…

Publié le 16 août 2018
Mis à jour le 8 septembre 2022

2 réflexions sur “Contrôle du volume”

    1. Si, c’est bel et bien possible mais il faut un réseau irréprochable. Dès qu’une commande http n’aboutit pas comme elle devrait, la valeur de la variable est alors désynchronisée de la réalité. C’est pour cela qu’on va voir sur la durée si cela fonctionne vraiment bien.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *