Partage : Température de couleur (conversion en Kelvins)

Bonsoir,
Je partage simplement quelques petites modifications que j’ai apporté au plugin GSH (gsh_ColorSetting.class.php) afin de pouvoir modifier la température de couleur d’une lampe via Google Home.
On commence par modifier les température max/min en Kelvins transmises à l’API de Google :

        $return['attributes']['colorTemperatureRange'] = array(
          'temperatureMinK' => 2000,
          'temperatureMaxK' => 6000
        );

J’ai défini de 2000 à 6000 car cela correspond à mes lampes mais on peut mettre de 2000 à 9000, cela dépend de vos lampes et comme ces paramètres ne sont pas explicitement donnés pour chaque lampe dans Jeedom, je préfère prendre les mêmes bornes que ce qui va suivre même si ça ne change pas grand chose…
L’application Google Home présente plusieurs couleurs prédéfinies associées aux températures suivantes :
ivory : 2000K
daylight : 2700K
cool white : 3000K
warm white : 4000K
incandescent : 5000K
candlelight : 6000K
J’ai donc fait un petit calcul de façon à ce que ces boutons permettent de balayer l’ensemble des températures disponibles sur la lampe et cela donne la modification suivante :

if(is_object($cmd)){
              $value = $cmd->getConfiguration('maxValue')-(($execution['params']['color']['temperature']-2000)/4000)*($cmd->getConfiguration('maxValue')-$cmd->getConfiguration('minValue'));
              $cmd->execCmd(array('slider' => $value));
              $return = array('status' => 'SUCCESS');
              $return['on'] = true;
              return $return;
            }

Vous aurez remarqué que j’effectue le return plus tôt que prévu, c’est pas très propre mais comme j’ai remarqué que changer la température d’une lampe a pour effet de l’allumer, je retourne donc l’état à Google Home histoire d’éviter d’avoir des fausses informations sur l’app…

Tout cela est fait très rapidement mais ça serait super que ce soit intégré d’une quelconque manière dans le plugin de base, d’autant plus que certains posts sur ce forum en parlaient déjà il y a un certain temps mais la modif n’a visiblement jamais été faite…

Si vous avez des questions ou que cela ne marche pas de votre côté, n’hésitez pas à en parler, j’essaierais de vous aider si j’ai le temps :smiley:

Bonne semaine !
Alexis

merci beaucoup !

Bonsoir,

J’ai eu le temps de réfléchir au problème depuis mon premier post et j’en tire les conclusions suivantes.

Le fonctionnement de Google Smart Home est très particulier pour ce « trait ». Il n’utilise pas les valeurs max et min pour en faire un calcul mais simplement à titre indicatif pour afficher ou ne pas afficher certaines couleurs dans l’application Google Home.
Plusieurs solutions seraient envisageables :

  1. Tous les plugins qui gèrent la lumière utilisent les Kelvins pour la température de couleur (assez inenvisageable à mettre en place)
  2. Le plugin gsh ait une option pour effectuer la conversion ci-dessus automatiquement en lui indiquant les valeurs réelles min et max de température de couleur d’après les caractéristiques de notre lampe (plus réaliste)

En attendant, je déconseille d’utiliser la solution de mon premier post (pour éviter de modifier les fichiers d’un plugin) mais de réaliser une solution similaire avec des virtuels et des « formules de calcul ».

Bonne soirée,
Alexis