Intégration Color_Extractor

Salut à tous,

Cela fait maintenant des mois que j’essaie en vain de faire marcher cette intégration.

Bien entendu, j’ai rajouté le simple code dans mon fichier configuration.yaml.

Je vois donc le nouveau service, mais lorsque je tente un code parfaitement similaire à l’exemple donné, à savoir :

    - service: color_extractor.turn_on
      data_template:
        color_extract_url: '{{ states.media_player.chromecast.attributes.entity_picture }}'
        entity_id: light.shelf_leds

A marche po. Au mieux, rien ne se passe, au pire, je reçois un message d’erreur :

Voici les différents codes tentés :

service: color_extractor.turn_on
data_template:
  color_extract_url: '{{ states.media_player.spotify_quintus.attributes.entity_picture }}'
  entity_id: light.ambiance_salon

service: color_extractor.turn_on
data_template:
  color_extract_url: "{{ states.media_player.spotify_quintus.attributes.entity_picture }}"
  entity_id: light.ambiance_salon


service: color_extractor.turn_on
data_template:
  color_extract_path: /local/Images/test.png
  entity_id: light.ambiance_salon

service: color_extractor.turn_on
data_template:
  color_extract_url: 'http://192.168.X.X:8123{{ states.media_player.spotify_quintus.attributes.entity_picture }}'
  entity_id: light.ambiance_salon

service: color_extractor.turn_on
data_template:
  color_extract_url: "http://192.168.X.X:8123{{ states.media_player.spotify_quintus.attributes.entity_picture }}"
  entity_id: light.ambiance_salon

Les deux derniers sont sortis d’une théorie personnelle extravagante, pensant qu’il fallait mettre le chemin URL complet pour que ça marche. On ne sait jamais, hein…

Même résultat.

Je précise que je ne testais pas ceci dans l’onglet « Services » situé dans Outils de Développement, car conscient qu’il faut se servir du data_template.

Mes essais étaient donc dans une automatisation.

Je précise aussi que l’entity light.ambiance_salon est parfaitement compatible car RVB.

Preuve en est, l’AppDaemon « Media Player Lights Sync » marche. (Pour ceux qui ne connaissent pas, ça fait le même job. Dispo sur HACS sous ce même nom).

« Alors, pourquoi s’em****** avec Color_Extractor si Media Player Lights Sync marche? » Me direz-vous.

Car la fidélité des couleurs n’est pas tip top, la réactivité non plus, et je souhaitais donc comparer avec cette intégration officielle.

Je voudrais donc savoir si quelqu’un a déjà essayé (ou peut essayer de son coté) Color_Extractor et l’a fait correctement marcher.

Pendant longtemps j’ai pensé qu’il me manquait la configuration des allowlist external URLs. Je ne l’ai toujours pas fait et c’est surement ça la source du problème. Si quelqu’un peut m’éclairer dans mon cas de figure…

…mais comment expliquer que demander une URL interne comme je tente de le faire, ne marche pas? Sachant que des data_template basés sur des {{ states…attributes… }}, j’en ai déjà fait quelques uns qui marchent très bien.

Je ne trouve absolument rien là-dessus sur la toile. Ni sur les forums, ni sur les Discord ou autre. A croire que personne n’utilise cette intégration, ou n’a de soucis avec.

Merci d’avance, les gens :smiling_face_with_three_hearts:

Visiblement color_extract_url (comme son nom l’indique!) attend une URL. Tu as essayé avec une url vers une image. Par exemple https://www.chanel.com/images//t_one///q_auto:good,f_jpg,fl_lossy,dpr_1.2/w_280/le-rouge-crayon-de-couleur-mat-jumbo-longwear-matte-lip-crayon-259-provocation-0-04oz--swatch-187259-8828252192798.jpg
c’est un carré rouge. Donc, ta lumière devrait devenir rouge.
Ca marche ça?
J’aurais tendance à penser que {{ states.media_player.spotify_quintus.attributes.entity_picture }} n’est pas une URL avec http devant. Non?
Et donc, si c’est un chemin vers une image ce serait color_extract_path.

My 2c. sachant que je n’ai jamais utilisé cette intégration.

Bonjour,

Pour ma culture personnelle, le principe de cette integration :

  • recupere la couleur dominante d’une image
  • la remet sur une lampe RGB ?

ALors, je pense qu’il faut le faire :wink: pour tenter
Dans ton fichier de configuration.yaml :
sous l’option/propriété

homeassistant:

Tu mets ceci :

allowlist_external_urls:
    - "http://images.com/image1.png"

Avec l’url de l’image dont tu souhaites extraire la couleur. Enfin c’est ce que je comprends de la doc.

Pour éviter l’emm…maximal si appdaemon disparait et que le dev de Media Player Light Sync ne le maintient plus.
Je suis un fervent defenseur d’utiliser un maximum l’interne :wink:

Merci pour vos réponses rapides.

Malheureusement non. J’ai pourtant bien pensé à rajouter ce lien dans les Allow External URLs, à reloader le Core, puis à l’intégrer dans mon automatisation. Sans succès.

Je ne sais pas trop quoi en penser. Je dirais quand meme que c’est plutot de type URL, car pour mon cas, l’attribut « entity_picture » de mon entité « media_player.spotify_quintus » équivaut à :

/api/media_player_proxy/media_player.spotify_quintus?token=dd3ca8056fe94bb6ba2cac26fbb9bc3184053a048f316d2ed97d108d2f55a60a&cache=3f77e973404a7802

Et si l’on y rajoute mon URL d’accès à HA, ça nous emmène bien sur une image :

D’où mon essai farfelu :

color_extract_url: "http://192.168.X.X:8123{{ states.media_player.spotify_quintus.attributes.entity_picture }}"

Qui équivalait à faire ceci:

color_extract_url: "http://192.168.X.X:8123/api/media_player_proxy/media_player.spotify_quintus?token=dd3ca8056fe94bb6ba2cac26fbb9bc3184053a048f316d2ed97d108d2f55a60a&cache=3f77e973404a7802"

Je suppose donc que la procédure dans mon cas est bien en color_extract_url. Et ce qui est étrange c’est que je ne demande pas la lune, seulement faire ce qui est donné dans l’exemple officiel de l’intégration. C’est pour ça que je trouve zarb’ que cela ne marche pas. Pensez-vous que meme si c’est techniquement un lien interne, il faille rajouter quelque chose dans les Allow External URLs? Si oui, quoi?

C’est exactement ça.

C’est aussi exactement ça :grin:




J’ai l’impression que le problème vient d’autre part. Je n’ai pas encore essayé de virer complètement l’intégration, puis la remettre.

C’est pour ça que j’aimerais que quelqu’un avec une config’ complètement différente s’essaie à cette intégration qui semble pourtant très basique. A votre bon cœur… :blush:

Et avec color_extract_path cela n’a rien donné non plus ?

Tu n’as aucun message d’erreur ?

Toute la question est là. Est-ce équivalent?
Normalement pour concatener dans jinja2 c’est le +…

« Type » URL n’est pas URL :slight_smile: La doc dit bien que tu dois avoir le protocole (HTTP ou HTTPS) devant…

J’avais justement le petit message d’erreur affiché dans ma premiere quote

[EDIT]: MAIS ATTENDEZ! L’essai de golfvert avec son lien « chanel » marche finalement! J’avais juste rajouté rapidement ce lien dans les Allowlist External DIRs…comme un boloss".

Après l’avoir rajouté là où il faut, ça marche!!! :clap:

Merci golfvert, tu m’as donc démontré que cette intégration fonctionne et qu’il n’y a pas d’autre souci particulier, ce qui est déjà énorme!

Maintenant, charge à moi de découvrir le problème de demander un lien interne et qui ne fonctionne pas. Je suis du coup maintenant persuadé qu’il faut rajouter un lien dans la Allowlist External URLs, mais laquelle, selon vous? Un truc du style « localhost »?

Tant mieux si c’est cela :wink:

J’essaierais avec l’url externe non ?

et avec extract_path le chemin interne, donc comme ceci

- service: color_extractor.turn_on
      data_template:
        color_extract_path: '{{ states.media_player.chromecast.attributes.entity_picture }}'
        entity_id: light.shelf_leds

Mon accès Externe à HA? Oui, c’est pas idiot.

Si ça règle mon problème, je ne vais pas faire la fine bouche du fait que ça n’appelle pas une URL Interne :smirk:

l’interne devrait fonctionner aussi :wink:
essaie le code que je t’ai donne ci-dessus

Pas sûr… Je me dis que la façon dont tu écris « http://… »{{…}} dans jinja2 ça ne doit pas te sortir une URL « propre ». Mais, bon, jinja2 et moi, on n’est pas trop potes. Donc, ce n’est qu’une idée.

J’ai à nouveau un message d’erreur

Je suis certain d’être à deux doigts de la solution. Etant donné que ta théorie avec un lien externe a été concluante, je suis actuellement sur la piste qu’il faille rajouter quelque chose dans les autorisations de liens externes, ou bien aussi dans dossiers externes (car mes tentatives avec color_extract_path ont également échouées).

Je n’ai pas encore essayé de rajouter mon lien d’accès externe à HA dans la liste.

Ce n’est pas un « path » non plus. Juste un bout d’URL…
Il faut peut-être dans ce cas passer par un truc à deux coups:

  • faire un sensor qui stocke l’URL avec un data_template
  • et dans extract_url appeler l’état de ce sensor

Je pense en effet qu’il faudrait peut-être ruser ainsi.

Mais selon toi, en faisant comme ça, il ne sera pas nécessaire de rajouter un lien interne dans la liste?

Je ne sais pas ce que HA considère comme external… Si tu mets l’IP de HA probablement pas. La doc n’est pas très explicite :wink:

C’est clair.

Je vais continuer mes expérimentations.

Mais grace à vous, j’ai déjà bien avancé.

Merci beaucoup

Merci!!
Mais j’ai dit une bêtise sur le plus pour jinja2. Par contre sur la concaténation qui ne marche pas toujours voir Récupérer les dimmers zwave de jeedom dans HA - #2 par golfvert

Pour shell_command ça marche mais pas pour sensor. Aucune idée pourquoi…

Résultat des courses :

J’ai donc rajouté mon accès externe dans les « allowlist_external_urls », reloadé le Core.

Puis j’ai utilisé ce code :

service: color_extractor.turn_on
data_template:
  entity_id: light.ambiance_salon
  color_extract_url: >-
    https://XXXXX.ui.nabu.casa{{ states.media_player.spotify_quintus.attributes.entity_picture }}

(Il faut croire que mon idée farfelue n’était pas si farfelue que ça! :sunglasses:)

Et ça marche! Bon…faut pas etre pressé, car la prise en compte prend environ 10 bonnes secondes. La fidélité des couleurs laisse autant à désirer que Media Player Lights Sync, mais je vais me satisfaire de ce résultat.

Vous aurez donc compris que je fais appel à un lien externe pour que ça passe. Merci encore à vous deux pour les astuces.

Le bonus serait donc de trouver la solution pour un lien en interne, mais je me contente de ça pour le moment :wink:

[EDIT] Trouvé.

Rajouter son lien interne dans les « allowlist_external_urls » (où est passée la logique? :thinking:)

Et utiliser ce type de code :

service: color_extractor.turn_on
data_template:
  entity_id: light.ambiance_salon
  color_extract_url: >-
    http://192.168.X.X:8123{{ states.media_player.spotify_quintus.attributes.entity_picture }}

Et non !!

Par rapport à

La différence ce sont les " c’est volontaire?