Avant toute chose merci de (re)prendre connaissance de la charte et de la respecter.
Pour résumer :
- Avant de poser une question, je cherche si la réponse existe
- Je suis poli, courtois et je respecte tout un chacun sur le forum
- Si un post m'agace : je m'en éloigne plutôt que de répondre d'une façon qui pourrait être mal interprétée


Il n'est jamais du luxe que de rappeler des choses simples :
Courtoisie, amabilité, politesse et bonne humeur sont les maîtres mots pour un forum sympathique, bienveillant et accueillant :)

Toute la communauté vous remercie

Pilotage LED RGB selon température

Réservé à la création de scénarios dans JEEDOM
Répondre
lithium73fr
Timide
Messages : 276
Inscription : 29 avr. 2016, 09:52

Pilotage LED RGB selon température

Message par lithium73fr » 27 janv. 2017, 08:59

Bonjour à tous,

Je voudrais faire évoluer la couleur de LED contrôlées par un module RGBW-101 Fibaro en fonction de la valeur d’une sonde de température. L’idée est d’avoir une couleur évoluant dans le spectre du bleu au rouge selon la température mesurée, par exemple bleu pur à -20° jusqu’au rouge à 40°.
Est-ce quelqu’un aurait des conseils pour créer un tel scénario ou est ce qu’a votre connaissance un plugin existant aurait cette fonction ?
J’ai quelques pistes mais je ne sais pas trop comment appliquer ça Jeedom http://stackoverflow.com/questions/4615 ... arm-colors

Merci d’avance pour vos conseils

Avatar de l’utilisateur
maxmen
Timide
Messages : 88
Inscription : 17 févr. 2016, 13:42
Localisation : Strasbourg

Re: Pilotage LED RGB selon température

Message par maxmen » 27 janv. 2017, 09:49

Moi je l'ai fait avec ma hue, et j'ai testé deux types de scénarios.
Le premier qui se déclenche à chaque changement de température et j'ai fixé une échelle par ex: SI temp. > 10 ET SI temp. < 20 ALORS hue color = COULEUR (bleu)

Mais je me suis dit que déclencher le scénario à chaque changement de température ça fait beaucoup de scrutations pour jeedom, alors j'ai fait un déclenchement périodique toutes les heures.


Envoyé de mon iPhone en utilisant Tapatalk

lithium73fr
Timide
Messages : 276
Inscription : 29 avr. 2016, 09:52

Re: Pilotage LED RGB selon température

Message par lithium73fr » 27 janv. 2017, 12:08

le truc c'est que je voudrais que la couleur soit ¨calculée¨ en fonction de la température, c'est a dire avec en modifiant les ratios RGB pour chaque valeur de température.

Avatar de l’utilisateur
cadavor
Actif
Messages : 1005
Inscription : 21 juin 2015, 22:00
Localisation : 34

Re: Pilotage LED RGB selon température

Message par cadavor » 27 janv. 2017, 13:13

lithium73fr a écrit :le truc c'est que je voudrais que la couleur soit ¨calculée¨ en fonction de la température, c'est a dire avec en modifiant les ratios RGB pour chaque valeur de température.
Ton lien est intéressant, il va falloir faire de la conversion d'échelle en gros pour du calculé
On voit que les couleurs si codé en HSV varie pour H de 0 = rouge à 270 = bleu
Il faut faire la transformation d'échelle température mini = 270 et température max = 0
Les bornes des 2 échelles sont a déterminer pour le meilleur rendu.

Ensuite tu peux prendre la fonction décrite ici : https://gist.github.com/Jadzia626/2323023
pour transformer la couleur HSV en RGB pour l'appliquer au module Fibaro
Jeedom Stable 3.0.11
Rpi3 + SSD 120Go + Aeotec Z-Stick Gen5 + Inateck dongle BLE
Zwave FGMS-001 + FGDS-002 + FGFS-101 + FGK-101 + FGWPE-101
Orvibo AllOne + Playbulb + Miband2 + Mini-enceinte Jack (TTS)

Avatar de l’utilisateur
cadavor
Actif
Messages : 1005
Inscription : 21 juin 2015, 22:00
Localisation : 34

Re: Pilotage LED RGB selon température

Message par cadavor » 27 janv. 2017, 16:59

J'ai fait le petit bout de code suivant pour répondre à ta problematique à adapter au besoin :

Pour tester, créer un virtuel comme suit :
virtuel_tempcolor.png
virtuel_tempcolor.png (53.73 Kio) Consulté 848 fois
Puis créé un scénario "Avancée avec comme déclencheur l’élément "temp" du virtuel fraichement créé.
Avec un unique bloc code contenant :

Code : Tout sélectionner

$temp_value_cmd_string = "#[Test][Test Temp to RGB][temp]#";
$RGB_value_cmd_string = "#[Test][Test Temp to RGB][color]#";

$temp_min = 10; // mini echelle température en °C
$temp_max = 25; // max echelle température en °C
$temp_scale_step = 10; // nombre de point de l'échelle

$color_min = 240; // valeur H du modele HSV pour du bleu
$color_max = 0; // valeur H du modele HSV pour du rouge

// adaptation
if ($color_min > $color_max) { // inversion de l'echelle
  	$color_revert = $color_min;
	$color_min = $color_max;
  	$color_max = $color_revert;
} else {
  	$color_revert = 0;
}
$temp_min = round($temp_min * 10);
$temp_max = round($temp_max * 10);

$color_range = $color_max - $color_min;
$temp_range = $temp_max - $temp_min;
$temp_nb_points = round($temp_range / $temp_scale_step); // nombre de marche de l'echelle température
$scenario->setLog("temp_nb_points - ".$temp_nb_points);

$color_scale_step = $color_range / $temp_nb_points; // calcul la precision de l'echelle de couleur par rapport au nombre de point de l'echelle température
$scenario->setLog("color_scale_step - ".$color_scale_step);

$temp_value_cmd = cmd::byString($temp_value_cmd_string);
$temp_value = $temp_value_cmd->execCmd();
$scenario->setLog("temp_value - ".$temp_value);
$temp_value = round($temp_value * 10);
if ($temp_value < $temp_min) $temp_value = $temp_min;
if ($temp_value > $temp_max) $temp_value = $temp_max;

$value_on_color_scale = ((($temp_value - $temp_min) / $temp_scale_step) * $color_scale_step) + $color_min;
$scenario->setLog("value_on_color_scale - ".$value_on_color_scale);
$HofHSV = abs($value_on_color_scale - $color_revert);
$scenario->setLog("HofHSV - ".$HofHSV);

/*
**  Converts HSV to RGB values
** –––––––––––––––––––––––––––––––––––––––––––––––––––––
**  Reference: http://en.wikipedia.org/wiki/HSL_and_HSV
**  Purpose:   Useful for generating colours with
**             same hue-value for web designs.
**  Input:     Hue        (H) Integer 0-360
**             Saturation (S) Integer 0-100
**             Lightness  (V) Integer 0-100
**  Output:    String "R,G,B"
**             Suitable for CSS function RGB().
*/
function fGetRGB($iH, $iS, $iV) {
  if($iH < 0)   $iH = 0;   // Hue:
  if($iH > 360) $iH = 360; //   0-360
  if($iS < 0)   $iS = 0;   // Saturation:
  if($iS > 100) $iS = 100; //   0-100
  if($iV < 0)   $iV = 0;   // Lightness:
  if($iV > 100) $iV = 100; //   0-100
  $dS = $iS/100.0; // Saturation: 0.0-1.0
  $dV = $iV/100.0; // Lightness:  0.0-1.0
  $dC = $dV*$dS;   // Chroma:     0.0-1.0
  $dH = $iH/60.0;  // H-Prime:    0.0-6.0
  $dT = $dH;       // Temp variable
  while($dT >= 2.0) $dT -= 2.0; // php modulus does not work with float
  $dX = $dC*(1-abs($dT-1));     // as used in the Wikipedia link
  switch(floor($dH)) {
    case 0:
      $dR = $dC; $dG = $dX; $dB = 0.0; break;
    case 1:
      $dR = $dX; $dG = $dC; $dB = 0.0; break;
    case 2:
      $dR = 0.0; $dG = $dC; $dB = $dX; break;
    case 3:
      $dR = 0.0; $dG = $dX; $dB = $dC; break;
    case 4:
      $dR = $dX; $dG = 0.0; $dB = $dC; break;
    case 5:
      $dR = $dC; $dG = 0.0; $dB = $dX; break;
    default:
      $dR = 0.0; $dG = 0.0; $dB = 0.0; break;
  }
  $dM  = $dV - $dC;
  $dR += $dM; $dG += $dM; $dB += $dM;
  $dR *= 255; $dG *= 255; $dB *= 255;
  return array(round($dR),round($dG),round($dB));
}

$RGB_array = fGetRGB($HofHSV, 100, 100);
$RGB_value = sprintf("#%02X%02X%02X", $RGB_array[0], $RGB_array[1], $RGB_array[2]);
$scenario->setLog("RGB - ".$RGB_value);

$RGB_value_cmd = cmd::byString($RGB_value_cmd_string);
$RGB_value_cmd->execCmd(array('color' => $RGB_value));
Cela donne le résultat suivant sur le widget du virtuel :
A 10°C (mini)
widget_tempcolor_cool.png
widget_tempcolor_cool.png (5.68 Kio) Consulté 848 fois
A 25°C (maxi)
widget_tempcolor_hot.png
widget_tempcolor_hot.png (6.17 Kio) Consulté 848 fois
Il faudra bien sur adapter le début du code avec le nom des commandes à associer, l'échelle de température souhaitée et le nombre de pas

Code : Tout sélectionner

$temp_value_cmd_string = "#[Test][Test Temp to RGB][temp]#";
$RGB_value_cmd_string = "#[Test][Test Temp to RGB][color]#";

$temp_min = 10; // mini echelle température en °C
$temp_max = 25; // max echelle température en °C
$temp_scale_step = 10; // nombre de point de l'échelle
Jeedom Stable 3.0.11
Rpi3 + SSD 120Go + Aeotec Z-Stick Gen5 + Inateck dongle BLE
Zwave FGMS-001 + FGDS-002 + FGFS-101 + FGK-101 + FGWPE-101
Orvibo AllOne + Playbulb + Miband2 + Mini-enceinte Jack (TTS)

lithium73fr
Timide
Messages : 276
Inscription : 29 avr. 2016, 09:52

Re: Pilotage LED RGB selon température

Message par lithium73fr » 29 janv. 2017, 08:04

Un grand merci pour on aide cadavor !!
Je viens de créer le virtuel de test, ça fonctionne parfaitement. Je vais maintenant l'adapter avec mes équipements.

Avatar de l’utilisateur
cadavor
Actif
Messages : 1005
Inscription : 21 juin 2015, 22:00
Localisation : 34

Re: Pilotage LED RGB selon température

Message par cadavor » 29 janv. 2017, 11:46

Avec plaisir, n'hésite pas si besoin.
Jeedom Stable 3.0.11
Rpi3 + SSD 120Go + Aeotec Z-Stick Gen5 + Inateck dongle BLE
Zwave FGMS-001 + FGDS-002 + FGFS-101 + FGK-101 + FGWPE-101
Orvibo AllOne + Playbulb + Miband2 + Mini-enceinte Jack (TTS)

epgdurand
Timide
Messages : 156
Inscription : 18 août 2016, 16:19

Re: Pilotage LED RGB selon température

Message par epgdurand » 05 févr. 2017, 21:46

Merci Cadavor

J'ai créé le virtuel et le scénario.

Ensuite je bute. Comment lier le virtuel au thermomètre et ma ma lampe couleur.
J'ai essayé dans le virtuel d'associer via la commande équipement un thermomètre mais cela ne semble pas fonctionner.

Merci pour ton aide

epgdurand
Timide
Messages : 156
Inscription : 18 août 2016, 16:19

Re: Pilotage LED RGB selon température

Message par epgdurand » 05 févr. 2017, 23:20

Ok je crois que je commence a comprendre. Je dois le faire dans le scénario.

Avatar de l’utilisateur
cadavor
Actif
Messages : 1005
Inscription : 21 juin 2015, 22:00
Localisation : 34

Re: Pilotage LED RGB selon température

Message par cadavor » 06 févr. 2017, 12:04

epgdurand a écrit :Ok je crois que je commence a comprendre. Je dois le faire dans le scénario.
Oui dans le scnéario...
Le virtuel n'était là que pour la démonstration/test.
Au final tu ne devrais pas avoir besoin du virtuel.
Jeedom Stable 3.0.11
Rpi3 + SSD 120Go + Aeotec Z-Stick Gen5 + Inateck dongle BLE
Zwave FGMS-001 + FGDS-002 + FGFS-101 + FGK-101 + FGWPE-101
Orvibo AllOne + Playbulb + Miband2 + Mini-enceinte Jack (TTS)

epgdurand
Timide
Messages : 156
Inscription : 18 août 2016, 16:19

Re: Pilotage LED RGB selon température

Message par epgdurand » 06 févr. 2017, 16:56

Merci pour ta réponse. Ca fonctionne très bien.

Avatar de l’utilisateur
Giome
Timide
Messages : 117
Inscription : 03 oct. 2015, 06:18

Re: Pilotage LED RGB selon température

Message par Giome » 20 sept. 2017, 17:06

@cadavor : J'ai mis en place ton code et il est bien sympathique, MERCI !!! Me reste une "petite" difficulté => l'effet WAF n'est pas encore au rdv...

Ma chère et tendre voudrait savoir la température actuelle mais aussi le maximum en journée et le minimum de nuit... bien entendu je pourrais déjà le faire en l’état par "flash de couleur" mais elle voudrait un dégradé de couleur, c'est a dire :

- le matin il fait 15 : couleur "verte"
- Le max dans la journée est prévu a 30 : couleur "rouge"
=> donc changement du RGB du vert puis jaune puis orange puis rouge sur 5 ou 10 secondes (si on peut choisir la durée ce serait top)

- fin de journée il fait 28 : couleur "rouge"
- le minimum du lendemain (donc dans la nuit) est prévu a 10 : couleur "bleu"
=> donc changement du RGB par dégradé du rouge au bleu

Du coup madame saura directement comment s'habiller... Et je pense rajouter un petit son de pluie, orage, des oiseaux, grillons, vent, ... pour les prévisions par la suite...

=> tu penses que ton code pourrait s'adapter pour la "prévision" de la température ?

Merci d'avance

Avatar de l’utilisateur
cadavor
Actif
Messages : 1005
Inscription : 21 juin 2015, 22:00
Localisation : 34

Re: Pilotage LED RGB selon température

Message par cadavor » 21 sept. 2017, 13:27

Mon code ne fait que la conversion température<->couleur. A toi de l'utiliser via un scénario pour en faire ce que tu veux...
Jeedom Stable 3.0.11
Rpi3 + SSD 120Go + Aeotec Z-Stick Gen5 + Inateck dongle BLE
Zwave FGMS-001 + FGDS-002 + FGFS-101 + FGK-101 + FGWPE-101
Orvibo AllOne + Playbulb + Miband2 + Mini-enceinte Jack (TTS)

Avatar de l’utilisateur
fwehrle
Actif
Messages : 2501
Inscription : 01 juil. 2015, 11:03
Localisation : Strasbourg

Re: Pilotage LED RGB selon température

Message par fwehrle » 22 sept. 2017, 22:10

Merci Cadavor. Je le garde sous le coude celui-la.. Il ira très bien compléter mon scenario de reveil en fonction de la meteo.. (playlist selon le temps)
Jeedom 3 sur Debian 9 en VM Proxmox 5 sur NUC Intel.
(Anciennement sur Docker sur Syno DS-415+ / MariaDB / DSM 6)
Teleinfo / RFXCom / Stick ZWave / IPX / Serveur Traccar / Blea

epgdurand
Timide
Messages : 156
Inscription : 18 août 2016, 16:19

Re: Pilotage LED RGB selon température

Message par epgdurand » 23 sept. 2017, 17:39

Giome a écrit :
20 sept. 2017, 17:06
@cadavor : J'ai mis en place ton code et il est bien sympathique, MERCI !!! Me reste une "petite" difficulté => l'effet WAF n'est pas encore au rdv...

Ma chère et tendre voudrait savoir la température actuelle mais aussi le maximum en journée et le minimum de nuit... bien entendu je pourrais déjà le faire en l’état par "flash de couleur" mais elle voudrait un dégradé de couleur, c'est a dire :

- le matin il fait 15 : couleur "verte"
- Le max dans la journée est prévu a 30 : couleur "rouge"
=> donc changement du RGB du vert puis jaune puis orange puis rouge sur 5 ou 10 secondes (si on peut choisir la durée ce serait top)

- fin de journée il fait 28 : couleur "rouge"
- le minimum du lendemain (donc dans la nuit) est prévu a 10 : couleur "bleu"
=> donc changement du RGB par dégradé du rouge au bleu

Du coup madame saura directement comment s'habiller... Et je pense rajouter un petit son de pluie, orage, des oiseaux, grillons, vent, ... pour les prévisions par la suite...

=> tu penses que ton code pourrait s'adapter pour la "prévision" de la température ?

Merci d'avance
J'ai mis en place temp actuelle et temp + 5h sur 2 ampoules différentes avec allumage le matin entre 7h et 8h grace au code de Cadavor.
C'est très simple mais il te faut 2 ampoules.
Ensuite pour faire du dégradé sur yeelight tu peux t'inspirer de l'article de Lunarok :
https://lunarok-domotique.com/2017/02/t ... -yeelight/

Répondre

Revenir vers « Scénarios »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité