Couleur RGBW + luminosité

Justement le soucis viens bien du plugin.

J’ai aussi des ampoules hue et cela fait la même chose.

Je vais tester la modification que tu dis… Sinon je continuerai à utiliser un scénario qui remets la luminosité a son ancienne valeur.

Idem ampoules Leroy Merlin, Lidl … ca serait vraiment bien que le dev du plugin puisse y remedier si c’est possible.

Merci.

Tu nous diras si ça marche !

Et oui, le soucis vient du plugin car dans l’exemple de l’API Deconz pour changer l’état d’une ampoule, on voit bien qu’ils passent aussi Brightness en même temps que les valeurs de couleur.

Si jeedom passe aussi ces valeurs, cela devrait marcher.
Je regarderai ce soir les paquets qui sont envoyés par le plugin pour comprendre.

Pour info, avec Hue Essentials, je n’ai pas le problème de changement de luminosité et l’app passe aussi par l’API Deconz.

Super si tu peux faire des tests. Je suis absent jusqu’à mercredi soir, je ne peux donc pas faire d’essai d’ici là mais pour avoir utilisé soit Phoscom, soit hue essentiel, soit Jeedom, seul ce dernier réagit comme ça.

Je testerai avec le plugin Zigbee et je suis presque sur qu’il n’y aura pas de soucis.

Alors voici ce que j’ai trouvé en changeant JUSTE la couleur et pas la luminosité par Jeedom/Deconz.

[2021-02-02 20:29:12][DEBUG] : Execute commande : lights/10/state whith parameters : {"xy":[0.7002390003885107,0.29913033097117026],"on":true,"bri":72}
[2021-02-02 20:29:12][DEBUG] : 127.0.0.1:8484/api/7F236FAB4D/lights/10/state type : PUT
[2021-02-02 20:29:12][DEBUG] : {"00212EFFFF069B26":{"e":"changed","id":"10","r":"lights","state":{"alert":null,"bri":72,"colormode":"xy","ct":153,"effect":"none","hue":0,"on":true,"reachable":true,"sat":254,"xy":[0.7002,0.2991]},"t":"event","uniqueid":"58:8e:81:ff:fe:71:42:5a-01"}}

Pour comprendre.
Avant de changer JUSTE la couleur, j’ai passé la luminosité à 255, donc au max.
Ensuite, j’ai mis la couleur rouge et JUSTE la couleur. Je n’ai touché à rien d’autre.

Jeedom le traduit comme ça:

[2021-02-02 20:29:12][DEBUG] : Execute commande : lights/10/state whith parameters : {"xy":[0.7002390003885107,0.29913033097117026],"on":true,"bri":72}
{
  "xy": [
    0.7002390003885107,
    0.29913033097117026
  ],
  "on": true,
  "bri": 72
}

Ensuite, Jeedom fait un PUT 127.0.0.1:8484/api/7F236FAB4D/lights/10/state en passant une mauvaise valeur : « bri »: 72 alors que la luminosité était de 255.

{
  "00212EFFFF069B26": {
    "e": "changed",
    "id": "10",
    "r": "lights",
    "state": {
      "alert": null,
      "bri": 72,
      "colormode": "xy",
      "ct": 153,
      "effect": "none",
      "hue": 0,
      "on": true,
      "reachable": true,
      "sat": 254,
      "xy": [
        0.7002,
        0.2991
      ]
    },
    "t": "event",
    "uniqueid": "58:8e:81:ff:fe:71:42:5a-01"
  }
}

Traduction, c’est un BUG du plugin Deconz de Jeedom qui poste des valeurs ‹ random › en luminosité sans se baser sur la vraie valeur de la luminosité au moment où il y a un changement de couleur.
Je ne sais pas où déclarer ce bug…

Ce qui aurait été attendu dans mon cas:
PUT 127.0.0.1:8484/api/7F236FAB4D/lights/10/state

{
  "00212EFFFF069B26": {
    "e": "changed",
    "id": "10",
    "r": "lights",
    "state": {
      "alert": null,
      "bri": 255,
      "colormode": "xy",
      "ct": 153,
      "effect": "none",
      "hue": 0,
      "on": true,
      "reachable": true,
      "sat": 254,
      "xy": [
        0.7002,
        0.2991
      ]
    },
    "t": "event",
    "uniqueid": "58:8e:81:ff:fe:71:42:5a-01"
  }
}

Dans mon message précédant, on voit bien que c’est un bug du plugin, une régression peut-être car ça le fait sur toutes mes ampoules RGBW.
Merci!

Merci pour les tests.

C’est le cas depuis que j’ai ma première ampoule couleur donc presque 1 an. Mais vu que c’était une Ikea j’ai pas chercher plus loin et depuis 1 moi que j’ai aussi des Hue, j’ai bien vu que le soucis était général sur les couleurs via le plugin.

Utilisant une télécommande pour changer les couleur et vu que celle-ci est binder je ne passe pas par Jeedom.

Le seul moment ou Jeedom gère la couleur c’est sur des touches raccourci et sur des allumage automatique, dans ces cas pour le moment je crée une variable avec la valeur de luminosité, je change la couleur puis je renvoie une commande luminosité avec en valeur la variable.

As-tu essayé la modification que propose Loic ?

Bonjour,
Je vais me repeter a nouveau (n’hesitez pas a relire desfois ca sert). Une couleur c’est une composante R + une G + B mais malheureusement deconz ne comprend pas le rgb donc on passe en x et y. En x et y une couleur c’est du x, du y et bri (et oui 3 composante d’un coté c’est 3 composante de l’autre sinon on perd de l’information) . Je l’invente pas c’est ecris a pas mal d’endroit. Donc jeedom prend ce que vous lui demandez et traduit pour deconz. La meme chose est faite pour hue…

Voila les formule de conversion si ca vous intéresse :

Et par pitiez arrêtez de dire que c’est un bug, c’est fatiguant dès que ca marche pas comme vous le voulez c’est un bug. Vous vous rendez pas compte mais ca revient a dire tu vois le truc qui ta pris des centaine d’heure bénévolement ben c’est de le merde c’est tout bogué.

Hello Loic,

Il n’y avait pas d’agression dans ce que je disais et pour être tout à fait exact, tu as raison, il ne s’agit pas d’un bug mais d’une mauvaise définition fonctionnelle de la gestion des couleurs pour les périphériques RGBW.
Encore une fois, je ne blâme personne pour ça mais je vais apporter ma pierre, sur mon temps perso aussi pour résoudre ce problème qui touche certainement tout le monde qui utilise une ampoule de couleur avec la conbee par Jeedom.

Après avoir passé 2 heures à étudier la gestion des espaces sRGB, regardé la gestion de cet espace sur les HUE dans leur SDK et le snippet de ton code, je sais d’où vient le problème.

1- convertXYToRGB est bon et j’ai vu que tu as résolu le problème de Brightness en imposant directement une valeur maximale à 255 pour effectuer le calcul.
On aurait pu utiliser la valeur de la brightness venant de 01.state::brightness si l’on voulait être tout à fait exact dans l’approche.


Certains ne comprendront pas forcément pourquoi en lisant ce que je vais écrire pour le 2/ mais néanmoins, ça fait le job et c’est cool.

2- convertRGBToXY est aussi théoriquement bon dans les calculs. SI l’on voulait même aller plus loin, on pourrait faire le calcul de la valeur la plus proche pour chaque valeur calculée dans l’espace de couleur de l’ampoule, mais bon… c’est aussi vouloir friser la perfection et je doute que ce soit utile ici.
(source: PhilipsHueSDKiOS/ApplicationDesignNotes/RGB to xy Color conversion.md at master · mikz/PhilipsHueSDKiOS · GitHub )

Le biais dans l’approche est d’avoir voulu obtenir la « Brightness » d’une ampoule en utilisant la valeur Y calculée à partir de RGB. Le Y n’est pas la « Brightness » de l’ampoule mais la Luminance de la couleur, ce qui est totalement différent et surtout inutile pour nous. La luminance est la sensation visuelle de la luminosité et ne veut rien dire en dehors de la pure manipulation des couleurs et nous ne devons en aucun cas l’utiliser pour gérer une ampoule.

SOLUTION:

  1. convertXYToRGB
    Ne rien toucher, c’est ok comme ça.

  2. convertRGBToXY

  • Ne pas retourner un ‹ bri › calculé pour la couleur qui est en fait la luminance et pas la luminosité
    image
  • Retourner seulement ‹ x › et ‹ y ›
  • Utiliser la valeur ‹ bri › de l’ampoule courant avec le ‹ x › et le ‹ y › lors de l’envoie à l’API Deconz

Exemple pour le Rouge '255,0,0" qui était à 01.state::brightness=150
il faut donc passer :

  • x=0.64000
  • y=0.33000
  • bri=150

De mémoire c’était fait au tout debut et j’avais eu pas mal de retour negatif me disant quand je met une couleur il la rechange après par une proche mais pas par celle demandée.

Après attention au calcul c’est pas vraiment le y qui est utilisé, le vrai y est divisé par la somme des autres composante.

  1. Pour la couleur proche, je pense que tu as bien fait de ne pas le laisser car effectivement les gens ne comprendraient pas que les couleurs diffèrent entre ce qu’il demandent et ce qui s’affiche. HUE a une particularité, c’est que leur couleurs sont très très propres et la valeur théorique est très très proche de la couleur perçue, de ce que j’ai vu dans leur SDK.

  2. Oui pour le y, je vois ce que tu veux dire. Je parlais du Y lorsque l’on convertit xy => xyz et pas celui de départ.

J’espère que ça pourra t’aider en tout cas car je pense que ce serait un tout petit changement qui ferait bien des heureux! (Et passer le mots aux dev du plugin Zigbee aussi car le problème va se poser aussi…)

C’est le changement que j’ai proposé dans mon tout premier post mais j’ai toujours pas eu de retour donc j’attends.

Pas de soucis, je me doute bien que tout le monde court après le temps.
Après, je pense que le jour où tu pourras le faire, tout le monde sera d’accord pour remplacer ‹ bri › actuel venu de la luminance par le ‹ current bri › avant changement de couleur :slight_smile:

Je peux le immediatement si il faut juste il faut que quelqu’un me valide c’est bon ca corrige le soucis c’est tout ce que j’attend. Je peux pas le faire de mon coté j’ai pas la materiel.

Allez, je fais ça en rentrant ce soir et je te tiens au courant du résultat.
Après, si quelqu’un est chez lui aujourd’hui et peut le faire, c’est encore mieux car il faut que je rattrape mon retard au taf maintenant ! :sweat_smile:

De mon côté, je testerai sur HUE/LIDL/Tradfri. Si qqn a d’autres devices que celles-là, ça peut être bien aussi : Leroy Merlin / Osram par exemple.

Je n’ai pas le code sous les yeux mais j’ai une question, au cas où pour tout à l’heure.

SI je commente :

$parameters[‹ bri ›] = $color[‹ bri ›];

la valeur de ‹ bri › sera automatiquement prise sur la valeur courante ou il faut aller la récupérer ailleurs et avoir qqchose du style:

$parameters[‹ bri ›] = $current[‹ bri ›]; ?

Merci pour le temps que vous passez tous les deux. Loin de moi l’idée de t’agresser Loïc, je remonte juste une sensation d’utilisateur, ensuite je n’ai pas vos compétences.

Comme dit dans un des premiers message, je rentre ce soir chez moi donc je ne pouvais pas tester ta proposition avant.

@jfavier j’ai dû hue, LM, Ikéa et Gledopto

Je sais pas je pense que si ya pas ben elle change pas donc il reprend la valeur courante

SI tu peux faire HUE, LM et Gledopto, je ferai IKEA (gu10/e27), LIDL (GU10, e27, e14, led strip).
A priori, si on n’est pas obligé de repasser le ‹ bri › courant, ça devrait faire pareil pour toutes les ampoules de toutes ces marques.

Si tu commentes la ligne et que ça ne marche pas (bug dans les logs ou couleur qui ne change pas), ça veut dire qu’il faudra récupérer le ‹ bri › courant et le passer dans le PUT.
Tiens nous au courant!

Salut a tous,

Pour moi le fait de commenter la ligne :

$parameters['bri'] = $color['bri'];

à réglé le problème de changement de luminosité et de ce fait l’utilisation des ampoules couleurs devient plus agréable.

Log des ampoules avant/après avec comme couleur demandé Rouge (FF0000), Vert(00FF00) et Bleue(0000FF)

Scénario :

Bleue

Avant
[2021-02-03 18:12:57][DEBUG] : Execute commande : lights/37/state whith parameters : {"xy":[0.13550301400290363,0.03987867049354716],"on":true,"bri":12}
[2021-02-03 18:12:57][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/37/state type : PUT
[2021-02-03 18:12:57][DEBUG] : Execute commande : lights/44/state whith parameters : {"xy":[0.13550301400290363,0.03987867049354716],"on":true,"bri":12}
[2021-02-03 18:12:57][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/44/state type : PUT
[2021-02-03 18:12:57][DEBUG] : Execute commande : lights/6/state whith parameters : {"xy":[0.13550301400290363,0.03987867049354716],"on":true,"bri":12}
[2021-02-03 18:12:57][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/6/state type : PUT
2021-02-03 18:12:57][DEBUG] : Execute commande : lights/26/state whith parameters : {"xy":[0.13550301400290363,0.03987867049354716],"on":true,"bri":12}
[2021-02-03 18:12:57][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/26/state type : PUT

Apres
[2021-02-03 18:02:40][DEBUG] : Execute commande : lights/37/state whith parameters : {"xy":[0.13550301400290363,0.03987867049354716],"on":true}
[2021-02-03 18:02:40][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/37/state type : PUT
[2021-02-03 18:02:40][DEBUG] : Execute commande : lights/44/state whith parameters : {"xy":[0.13550301400290363,0.03987867049354716],"on":true}
[2021-02-03 18:02:40][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/44/state type : PUT
[2021-02-03 18:02:40][DEBUG] : Execute commande : lights/6/state whith parameters : {"xy":[0.13550301400290363,0.03987867049354716],"on":true}
[2021-02-03 18:02:40][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/6/state type : PUT
[2021-02-03 18:02:40][DEBUG] : Execute commande : lights/26/state whith parameters : {"xy":[0.13550301400290363,0.03987867049354716],"on":true}
[2021-02-03 18:02:40][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/26/state type : PUT


Rouge

Avant
[2021-02-03 18:12:53][DEBUG] : Execute commande : lights/37/state whith parameters : {"xy":[0.7006712414275954,0.2993287585724047],"on":true,"bri":72}
[2021-02-03 18:12:53][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/37/state type : PUT
[2021-02-03 18:12:53][DEBUG] : Execute commande : lights/44/state whith parameters : {"xy":[0.7006712414275954,0.2993287585724047],"on":true,"bri":72}
[2021-02-03 18:12:53][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/44/state type : PUT
[2021-02-03 18:12:53][DEBUG] : Execute commande : lights/6/state whith parameters : {"xy":[0.7006712414275954,0.2993287585724047],"on":true,"bri":72}
[2021-02-03 18:12:53][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/6/state type : PUT
[2021-02-03 18:12:53][DEBUG] : Execute commande : lights/26/state whith parameters : {"xy":[0.7006712414275954,0.2993287585724047],"on":true,"bri":72}
[2021-02-03 18:12:53][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/26/state type : PUT

Apres
[2021-02-03 18:07:45][DEBUG] : Execute commande : lights/37/state whith parameters : {"xy":[0.7006712414275954,0.2993287585724047],"on":true}
[2021-02-03 18:07:45][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/37/state type : PUT
[2021-02-03 18:07:45][DEBUG] : Execute commande : lights/44/state whith parameters : {"xy":[0.7006712414275954,0.2993287585724047],"on":true}
[2021-02-03 18:07:45][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/44/state type : PUT
[2021-02-03 18:07:45][DEBUG] : Execute commande : lights/6/state whith parameters : {"xy":[0.7006712414275954,0.2993287585724047],"on":true}
[2021-02-03 18:07:45][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/6/state type : PUT
[2021-02-03 18:07:45][DEBUG] : Execute commande : lights/26/state whith parameters : {"xy":[0.7006712414275954,0.2993287585724047],"on":true}
[2021-02-03 18:07:45][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/26/state type : PUT

Vert

Avant
[2021-02-03 18:12:55][DEBUG] : Execute commande : lights/37/state whith parameters : {"xy":[0.1724161431490603,0.7467966085220437],"on":true,"bri":170}
[2021-02-03 18:12:55][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/37/state type : PUT
[2021-02-03 18:12:55][DEBUG] : Execute commande : lights/44/state whith parameters : {"xy":[0.1724161431490603,0.7467966085220437],"on":true,"bri":170}
[2021-02-03 18:12:55][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/44/state type : PUT
[2021-02-03 18:12:55][DEBUG] : Execute commande : lights/6/state whith parameters : {"xy":[0.1724161431490603,0.7467966085220437],"on":true,"bri":170}
[2021-02-03 18:12:55][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/6/state type : PUT
[2021-02-03 18:12:55][DEBUG] : Execute commande : lights/26/state whith parameters : {"xy":[0.1724161431490603,0.7467966085220437],"on":true,"bri":170}
[2021-02-03 18:12:55][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/26/state type : PUT

Apres
[2021-02-03 18:07:39][DEBUG] : Execute commande : lights/37/state whith parameters : {"xy":[0.1724161431490603,0.7467966085220437],"on":true}
[2021-02-03 18:07:39][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/37/state type : PUT
[2021-02-03 18:07:39][DEBUG] : Execute commande : lights/44/state whith parameters : {"xy":[0.1724161431490603,0.7467966085220437],"on":true}
[2021-02-03 18:07:39][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/44/state type : PUT
[2021-02-03 18:07:39][DEBUG] : Execute commande : lights/6/state whith parameters : {"xy":[0.1724161431490603,0.7467966085220437],"on":true}
[2021-02-03 18:07:39][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/6/state type : PUT
[2021-02-03 18:07:39][DEBUG] : Execute commande : lights/26/state whith parameters : {"xy":[0.1724161431490603,0.7467966085220437],"on":true}
[2021-02-03 18:07:39][DEBUG] : 192.168.2.88:8080/api/01751AFD89/lights/26/state type : PUT