[Mon Dashboard] - @Quintus

non, pour l’instant j’ai mis de coté, histoire de m’occuper d’abord de mes lumieres.
Alors, j’ai bien installer homekit panel card, mais j’ai beau faire un long clic, un double ou n’importe quoi, je n’ai aucun popup qui s’ouvre.
dois-je modifier quelques chose dans les template ? car je n’arrive vraiment pas a ouvrir un popup.
pour l’intensité, tu sais dans quel template et ou je dois modifier pour qu’il m’affiche 100% a la place sur une lampe style plafonnier ?

On va essayer step by step.

Fais une nouvelle view en mode « panel » et fais cette carte (en changeant pour une entité lumière à toi) :

Code
enableColumns: true
masonry: false
home: false
rows:
  - columns:
      - column: 1
        entities:
          - entities:
              - card: custom:button-card
                cardOptions:
                  entity: light.meuble_tv
                  show_last_changed: true
                  state_display: |
                    [[[
                        if (entity.state === 'on')
                          return 'Allumée';
                        else
                          return 'Eteinte';
                      ]]]
                  custom_fields:
                    icon_hue: >
                      <svg viewBox="0 0 32 32"><path d="M8.4395,16.668
                      C8.9795,16.552
                       9.5115,16.895 9.6285,17.435 C9.7455,17.974 9.4025,18.506 8.8625,18.623
                       C8.3225,18.74 7.7905,18.397 7.6735,17.857 C7.5565,17.317 7.9005,16.785
                       8.4395,16.668 M13.3275,15.611 C13.8665,15.495 14.3985,15.838
                       14.5155,16.377 C14.6325,16.917 14.2895,17.449 13.7505,17.566
                       C13.2105,17.683 12.6775,17.34 12.5605,16.8 C12.4445,16.261
                       12.7875,15.729 13.3275,15.611 M18.2135,14.555 C18.7535,14.438
                       19.2865,14.781 19.4025,15.32 C19.5195,15.86 19.1765,16.393 18.6365,16.51
                       C18.0965,16.626 17.5645,16.283 17.4485,15.743 C17.3315,15.203
                       17.6735,14.671 18.2135,14.555 M23.1005,13.498 C23.6405,13.381
                       24.1725,13.724 24.2905,14.264 C24.4065,14.804 24.0635,15.336
                       23.5235,15.453 C22.9835,15.569 22.4515,15.227 22.3355,14.687
                       C22.2175,14.147 22.5615,13.614 23.1005,13.498 M10.6695,20.639
                       L25.4735,17.444 C26.5535,17.211 27.2405,16.147 27.0065,15.067
                       C26.4495,12.484 23.9035,10.842 21.3205,11.399 L6.5165,14.594
                       C5.4365,14.827 4.7505,15.891 4.9835,16.971 C5.5415,19.554 8.0865,21.196
                       10.6695,20.639 M25,26 C24.447,26 24,25.553 24,25 C24,24.447 24.447,24
                       25,24 C25.553,24 26,24.447 26,25 C26,25.553 25.553,26 25,26 M20,26
                       C19.447,26 19,25.553 19,25 C19,24.447 19.447,24 20,24 C20.553,24
                       21,24.447 21,25 C21,25.553 20.553,26 20,26 M15,26 C14.447,26 14,25.553
                       14,25 C14,24.447 14.447,24 15,24 C15.553,24 16,24.447 16,25 C16,25.553
                       15.553,26 15,26 M10,26 C9.447,26 9,25.553 9,25 C9,24.447 9.447,24 10,24
                       C10.553,24 11,24.447 11,25 C11,25.553 10.553,26 10,26 M27,22 L9,22 C5,22
                       4,19 4,18 L4,23 C4,25.762 6.238,28 9,28 L27,28 C27.553,28 28,27.553
                       28,27 L28,23 C28,22.447 27.553,22 27,22 M22,8 C21.447,8 21,7.553 21,7
                       C21,6.447 21.447,6 22,6 C22.553,6 23,6.447 23,7 C23,7.553 22.553,8 22,8
                       M17,8 C16.447,8 16,7.553 16,7 C16,6.447 16.447,6 17,6 C17.553,6 18,6.447
                       18,7 C18,7.553 17.553,8 17,8 M12,8 C11.447,8 11,7.553 11,7 C11,6.447
                       11.447,6 12,6 C12.553,6 13,6.447 13,7 C13,7.553 12.553,8 12,8 M7,8
                       C6.447,8 6,7.553 6,7 C6,6.447 6.447,6 7,6 C7.553,6 8,6.447 8,7 C8,7.553
                       7.553,8 7,8 M23,4 L5,4 C4.447,4 4,4.447 4,5 L4,9 C4,9.553 4.447,10 5,10
                       L23,10 C27,10 28,13 28,14 L28,9 C28,6.238 25.762,4 23,4"
                       style="fill:#C0C0C0;"></path> <g><circle cx="7" cy="7" r="0.878"
                       style="fill:var(--button-card-light-color)"/> <circle cx="17" cy="7"
                       r="0.878" style="fill:var(--button-card-light-color)"/> <circle cx="22"
                       cy="7" r="0.878" style="fill:var(--button-card-light-color)"/> <circle
                       cx="8.651" cy="17.646" r="0.878"
                       style="fill:var(--button-card-light-color)"/> <circle cx="13.538"
                       cy="16.589" r="0.878" style="fill:var(--button-card-light-color)"/>
                       <circle cx="18.425" cy="15.532" r="0.878"
                       style="fill:var(--button-card-light-color)"/> <circle cx="23.313"
                       cy="14.475" r="0.878" style="fill:var(--button-card-light-color)"/>
                       <circle cx="10" cy="25" r="0.878"
                       style="fill:var(--button-card-light-color)"/> <circle cx="15" cy="25"
                       r="0.878" style="fill:var(--button-card-light-color)"/> <circle cx="20"
                       cy="25" r="0.878" style="fill:var(--button-card-light-color)"/> <circle
                       cx="25" cy="25" r="0.878" style="fill:var(--button-card-light-color)"/>
                       <circle cx="12" cy="7" r="0.878"
                       style="fill:var(--button-card-light-color)"/></g> </svg>
                  styles:
                    card:
                      - font-family: Sf Display
                      - letter-spacing: 0.05vw
                      - font-weight: bold
                      - font-size: 100%
                    name:
                      - top: 30%
                      - left: 54%
                      - position: absolute
                    label:
                      - top: 42%
                      - left: 54%
                      - position: absolute
                    state:
                      - top: 36%
                      - left: 54%
                      - position: absolute
                    custom_fields:
                      icon_hue:
                        - top: 2%
                        - left: 2%
                        - width: 40%
                        - position: absolute
                      circle:
                        - top: 2%
                        - left: 74%
                        - width: 24%
                        - position: absolute
                        - letter-spacing: 0.03vw
                  template: light
                higherSize: 1
                wider: true
                widerSize: 2
                noPadding: true
            title: Ambiance
        tileOnRow: 2
style: |
  :host {
    --tile-background: rgba(255, 255, 255, 0.1);
    --tile-border-radius: 10px;
    --tile-width: 100px;
    --tile-height: 100px;
    --tile-on-background: none;
    --tile-name-text-color: rgba(255, 255, 255, 1);
    --tile-on-name-text-color: rgba(0, 0, 0, 1);
    --tile-state-text-color: rgba(0, 0, 0, 0.7);
    --tile-on-state-text-color: rgba(255,255,255, 1);
    --tile-state-changed-text-color: rgb(255, 255, 255);
    --tile-unavailable-state-text-color: rgba(255, 0, 0, 1);
    --tile-value-text-color: rgba(255, 0, 0, 1);
    --tile-icon-color: rgba(0, 0, 0, 0.6);
    --tile-on-icon-color: #F7D959;
    --tile-width-mobile: 140px;
    --tile-height-mobile: 140px;
    background: none;
  } 
type: custom:homekit-card

Dans ton éditeur de configuration Lovelace, colle ça en haut :

Code
button_card_templates:
  base:
    aspect_ratio: 1/1
    show_state: true
    show_icon: false
    state_display: |
      [[[
          if (entity.state === 'on')
            return 'Allumé';
          else
            return 'Eteint';
        ]]]
    state:
      - value: 'on'
        styles:
          card:
            - background-color: rgba(255, 255, 255, 0.8)
            - font-weight: bold
          name:
            - color: rgba(0, 0, 0, 1)
            - font-weight: bold
          state:
            - color: rgba(0, 0, 0, 0.6)
          label:
            - color: rgba(0, 0, 0, 0.6)
      - value: 'off'
        styles:
          name:
            - color: rgba(0, 0, 0, 1)
            - font-weight: bold
    tap_action:
      action: toggle
      haptic: light
    styles:
      name:
        - top: 74%
        - left: 6%
        - position: absolute
      label:
        - top: 84%
        - left: 40%
        - position: absolute
      state:
        - top: 84%
        - left: 6%
        - position: absolute
      icon:
        - top: 44%
        - left: 11%
        - position: absolute
      card:
        - font-family: Sf Display
        - letter-spacing: 0.05vw
        - font-weight: bold
        - color: rgba(0, 0, 0, 0.4)
        - font-size: 80%
        - background-color: rgba(140, 140, 140, 0.8)
        - border-radius: 0.8vw
        - box-shadow: none
        - transition: none
      custom_fields:
        circle:
          - top: 4%
          - left: 66%
          - width: 30%
          - position: absolute
          - letter-spacing: 0.03vw
  loader:
    custom_fields:
      loader: >
        [[[ if (entity.state === 'on') {  return '<img
        src="/local/Icones/loader.svg" width="100%">'; } ]]]
    styles:
      custom_fields:
        loader:
          - filter: '[[[ return entity.state === ''off'' ? ''invert(1)'' : ''none''; ]]]'
          - top: '-4%'
          - left: 70%
          - width: 36%
          - position: absolute
          - opacity: 0.6
  light:
    styles:
      card:
        - box-shadow: 0px 0px 20px 3px var(--button-card-light-color-no-temperature)
    template:
      - base
    custom_fields:
      circle: >
        [[[ if (entity.state === 'on' && entity.attributes.brightness) { const
        brightness = Math.round(entity.attributes.brightness / 2.54); const
        radius = 20.5; const circumference = radius * 2 * Math.PI;  return `<svg
        viewBox="0 0 50 50"><circle cx="25" cy="25" r="${radius}"
        stroke="#b2b2b2" stroke-width="1.5" fill="none" style=" transform:
        rotate(-90deg); transform-origin: 50% 50%; stroke-dasharray:
        ${circumference}; stroke-dashoffset: ${circumference - brightness / 100
        * circumference};" /> <text x="50%" y="54%" fill="#8d8e90"
        font-size="14" text-anchor="middle"
        alignment-baseline="middle">${brightness}<tspan
        font-size="10">%</tspan></text></svg>`; } ]]]
    hold_action:
      action: fire-dom-event
      browser_mod:
        command: popup
        card:
          actionSize: 60px
          actions:
            - color: rgb(180, 200, 250)
              name: Froid
              service: light.turn_on
              service_data:
                entity_id: '[[[ return entity.entity_id ]]]'
                rgb_color:
                  - 126
                  - 150
                  - 255
            - color: rgb(80, 100, 250)
              name: Myrtille
              service: light.turn_on
              service_data:
                entity_id: '[[[ return entity.entity_id ]]]'
                rgb_color:
                  - 43
                  - 3
                  - 255
            - color: rgb(0, 250, 200)
              name: Turquoise
              service: light.turn_on
              service_data:
                entity_id: '[[[ return entity.entity_id ]]]'
                rgb_color:
                  - 0
                  - 255
                  - 200
            - color: rgb(255, 220, 150)
              name: Chaud
              service: light.turn_on
              service_data:
                entity_id: '[[[ return entity.entity_id ]]]'
                rgb_color:
                  - 255
                  - 255
                  - 126
          actionsInARow: 4
          brightnessHeight: 300px
          brightnessWidth: 120px
          entity: '[[[ return entity.entity_id ]]]'
          icon: mdi:led-strip
          settings:
            closeButton: Retour
            openButton: Roue Chromatique
          settingsCard:
            cardOptions:
              cards:
                - entities:
                    - brightness: false
                      brightness_icon: weather-sunny
                      child_card: true
                      color_picker: true
                      color_temp: true
                      color_wheel: true
                      consolidate_entities: false
                      effects_list: false
                      entity: '[[[ return entity.entity_id ]]]'
                      full_width_sliders: false
                      hide_header: true
                      persist_features: false
                      shorten_cards: false
                      show_slider_percent: false
                      smooth_color_wheel: true
                      temperature_icon: thermometer
                      type: custom:light-entity-card
                      white_icon: file-word-box
                      white_value: false
                  style: |
                    ha-card {
                      border-radius: 40px;
                      background: none;
                      box-shadow: none;
                      }
                  type: entities
                - entities:
                    - colors:
                        - icon_color: rgb(180, 200, 250)
                          service: light.turn_on
                          service_data:
                            entity_id: '[[[ return entity.entity_id ]]]'
                            rgb_color:
                              - 126
                              - 150
                              - 255
                          type: call-service
                        - icon_color: rgb(80, 100, 250)
                          service: light.turn_on
                          service_data:
                            entity_id: '[[[ return entity.entity_id ]]]'
                            rgb_color:
                              - 43
                              - 3
                              - 255
                          type: call-service
                        - icon_color: rgb(0, 0, 250)
                          service: light.turn_on
                          service_data:
                            entity_id: '[[[ return entity.entity_id ]]]'
                            rgb_color:
                              - 0
                              - 2
                              - 255
                          type: call-service
                        - icon_color: rgb(220, 0, 250)
                          service: light.turn_on
                          service_data:
                            entity_id: '[[[ return entity.entity_id ]]]'
                            rgb_color:
                              - 146
                              - 2
                              - 255
                          type: call-service
                        - icon_color: rgb(240, 100, 250)
                          service: light.turn_on
                          service_data:
                            entity_id: '[[[ return entity.entity_id ]]]'
                            rgb_color:
                              - 255
                              - 0
                              - 250
                          type: call-service
                        - icon_color: rgb(255, 0, 0)
                          service: light.turn_on
                          service_data:
                            entity_id: '[[[ return entity.entity_id ]]]'
                            rgb_color:
                              - 255
                              - 0
                              - 0
                          type: call-service
                        - icon_color: rgb(255, 100, 0)
                          service: light.turn_on
                          service_data:
                            entity_id: '[[[ return entity.entity_id ]]]'
                            rgb_color:
                              - 255
                              - 40
                              - 0
                          type: call-service
                        - icon_color: rgb(255, 200, 0)
                          service: light.turn_on
                          service_data:
                            entity_id: '[[[ return entity.entity_id ]]]'
                            rgb_color:
                              - 255
                              - 200
                              - 0
                          type: call-service
                        - icon_color: rgb(255, 220, 150)
                          service: light.turn_on
                          service_data:
                            entity_id: '[[[ return entity.entity_id ]]]'
                            rgb_color:
                              - 255
                              - 255
                              - 126
                          type: call-service
                        - icon_color: rgb(0, 250, 200)
                          service: light.turn_on
                          service_data:
                            entity_id: '[[[ return entity.entity_id ]]]'
                            rgb_color:
                              - 0
                              - 255
                              - 200
                          type: call-service
                        - icon_color: rgb(40, 200, 40)
                          service: light.turn_on
                          service_data:
                            entity_id: '[[[ return entity.entity_id ]]]'
                            rgb_color:
                              - 0
                              - 255
                              - 2
                          type: call-service
                      entity: light.lumieres_cuisine
                      justify: center
                      size: 42
                      type: custom:rgb-light-card
                  entity: '[[[ return entity.entity_id ]]]'
                  style: |
                    ha-card {
                      border-radius: 40px;
                      background: none;
                      box-shadow: none;
                      }
                  type: entities
              type: vertical-stack
            cardStyle: |
              background-color:#FFF;
            type: entities
          sliderColoredByLight: true
          switchHeight: 400px
          switchWidth: 150px
          type: custom:light-popup-card
          deviceID:
            - this
        large: true
        style:
          $: |
            .mdc-dialog .mdc-dialog__container {
              width: 100%;
            }
            .mdc-dialog .mdc-dialog__container .mdc-dialog__surface {
              width:100%;
              box-shadow:none;
            }
          .: |
            :host {
              --mdc-theme-surface: rgba(0,0,0,0);
              --secondary-background-color: rgba(0,0,0,0);
              --ha-card-background: rgba(0,0,0,0);
              --mdc-dialog-scrim-color: rgba(0,0,0,0.8);
              --mdc-dialog-min-height: 100%;
              --mdc-dialog-min-width: 100%;
              --mdc-dialog-max-width: 100%;
            }
            mwc-icon-button {
              color: #FFF;
            }
        title: Fermer

Histoire de me remettre en question et vérifier ce que je te renseigne, j’ai créé un nouveau dashboard vierge et j’ai utilisé ces codes. Cela marche pour moi.

As-tu installé également ceci dans HACS? :

Je suis désolé, je ne comprends pas la question. Pourrais-tu me montrer par une image?

alors, oui, j’ai bien ceci:

Capture d’écran 2021-08-16 à 12.16.46

Mais confirme moi: il y a bien une fenetre popup qui dois s’ouvrir avec par exemple un long appuie pour pouvoir regler l’intensité ou la couleur ? car ca, par contre je n’ai rien. ni appuie long, ni double clic.

Capture d’écran 2021-08-16 à 12.18.48

et pour les 100% que je voulais te dire, je m’explique.
j’ai certaine ampoule qui, quand j’allume la lampe, me met NaN a la place de 50% ou 100% etc…(et encore, juste parce qu’elle eclaire blanc ) si je met bleue, ca fonctionne, mais bon soit, je voudrais pour les lampe que je ne sais pas regler une intensité ou la couleur, comme c’est le cas pour mon plafonnier dans une de mes chambre, qu’il m’affiche dans l’etat allumer, 100% pour ne plus avoir l’erreur du « NaN ».
voila, rien de plus.
Encore merci pour prendre de ton temps pour me donner un coup de main, c’est vraiment sympa…

Ah d’accord.

Je te confirme, lorsque je fais un clic long, une popup chez moi. C’est problématique. Tu me confirmes que tu as bien installé « light-popup-card »?

Pour cette histoire de NaN, je ne vois pas d’où cela pourrait venir. Je crois que c’est quand ça ne retourne pas d’info. La seule feinte que je peux te proposer c’est d’essayer de faire une condition afin de ne rien afficher si NaN est renvoyé. Avec un code du style :

      [[[
          if (entity.state === 'NaN')
            return '';
          else
            return entity.state;
        ]]]

Je ne sais pas, je propose :sweat_smile:

oui, je te confirme que light-popup-card est bien installé

c’est bien celui-ci:

Capture d’écran 2021-08-16 à 12.43.50

Tu as vidé le cache de ton navigateur? Là je commence à sécher :confused:

Peut-être que d’autres camarades connaissent le souci…?

Je viens de vider le cache, mais ca ne change rien.

Voici en bref ce que j’ai tester:

A savoir que:
bureau: ampoule piloter par local tuya
hifi et ambiante: ampoule legerement différente a celle du bureau mais en local tuya aussi.
Avant (et arriere) gauche - droite: yeelight
led tv: en zigbee
sonos: lampe et haut parleur en wifi (de chez ikea)

et voila donc le résultat quand j’allume. (tous sont allumer en blanc) et je n’ai pas la couleur désirer sur l’image de l’ampoule car ils sont configurer tous les 4 les même !
la première, j’ai bien le % les trois autres non.

et aucune de ces icônes ne fonctionne avec un long appuie pour ouvrir une popup carte.

Donc voila, je suis un peu bloquer a cette étape, et je ne sais pas quoi faire.
De même que, icône éteinte, je n’ai pas un fond noir. (comme mon fond d’écran, voir l’icône air pure) elle est grise, et j’aimerais avoir la même couleur que le fond (noir). je ne sais pas du tout ou changer cela.
Le tout est mis en page par une carte « grille » première carte en 4 colonnes, deuxième carte en 3 colonnes

Merci pour toute info interessante qui me permetterais d’avancer un peu plus loin.

Donc là tu es en blanc partout, mais quand tu mets de la couleur, l’icone ne suit pas, c’est bien cela? Si c’est ça, c’est le code de l’icone qui n’est pas bon. En exemple, ton post avec mon code, un peu plus haut, semble être en bleu (bon, par contre les LEDs ne sont pas alignées, bizarre…)

Sur tes 3 autres entités, tu as bien un attribut « brightness » avec une valeur entre 0 et 255?

Toujours un mystère pour moi. Si tu as bien suivi mes étapes, je ne vois pas ce qui cloche…

Pour ceci, je pense pouvoir t’aider :

Cela se passe dans l’éditeur de configuration de Lovelace. Dans le template « base », tu as le « styles » de la card. Ici tu y trouveras la valeur du background-color à modifier à ta guise. N’oublie pas de sauver en sortant et recharger Lovelace pour appliquer la MAJ.

Le code en question (j'ai abrégé pour mieux identifier ce qui t'intéresse) :
  base:
    aspect_ratio: 1/1
    show_state: true
    show_icon: false
    state_display: |
      ....

    state:
      - ...
    tap_action:
      action: toggle
      haptic: light
    styles:
      card:
        - ...
        - background-color: rgba(140, 140, 140, 0.8)
        - ...

Donc si tu veux un noir absolu, change pour background-color: rgba(0, 0, 0, 0.8) ou bien background-color: rgba(140, 140, 140, 0)

ce sont des lampe tuya, je ne sais pas si cela fait quelque chose. bizarrement, j’ai le NaN uniquement en blanc, si je met bleu par exemple, il me met bien le % correcte.

non, les couleurs suivent, mais quand je met le blanc, le rendu sur l’icone n’est pas blanc, mais presque jaune. et pas le meme jaune sur toute les icone, regarde la difference entre le premier et le deuxieme.

Pour le fond noir, c’est regler, merci pour l’info.

ok, j’ai trouver.
merci pour le coup de main. super sympa de ta part… :wink:

je rencontre une erreur avec la liste de course:

Logger: homeassistant.components.command_line.sensor
Source: components/command_line/sensor.py:120
Integration: command_line (documentation, issues)
First occurred: 11:58:15 (6 occurrences)
Last logged: 12:03:17

Unable to parse output as JSON: <b>Liste de Courses:</b><br>

une idée ? @Quintus

Là comme ça, non.

Le mieux serait de repasser en revue tout ce beau monde.

Pourrais-tu donc copier/coller le contenu de ton fichier shopping_list.py, ainsi que la partie qui nous intéresse dans ton fichier sensor.py…?

Merci

Oui bien sur, mais j’ai exactement la même chose que plus haut :

voici le shopping_list.py

#!/usr/local/bin/python
# coding: utf8
import json

with open('/config/.shopping_list.json') as data_file:
    shoppingListData = json.load(data_file)

content = u"<b>Liste de Courses:</b><br>"
for entry in shoppingListData:
    if not entry['complete']:
        content += u"- %s<br>" % entry['name']

content += u"<br>"

print(content)

Sensor:

   ############################################################
   ##                                                        ##
   ##                   SHOPPING LIST                        ##
   ##                                                        ##
   ############################################################

- platform: command_line
  name: Liste de Courses
  command: python3 /config/shopping_list.py
  json_attributes:
      - name

script:

liste_courses:
  alias: '[Liste de Courses] Envoyer Notification Liste'
  sequence:
    - data: {}
      entity_id: sensor.liste_de_courses
      service: homeassistant.update_entity
    - delay:
        hours: 0
        minutes: 0
        seconds: 3
        milliseconds: 0
    - service: notify.notify
      data_template:
        data:
          sticky: 'true'
          subject: <b>Liste de Courses</b>
        message: '{{ states(''sensor.liste_de_courses'') }}'
        title: Home Assistant
  mode: single

Ton fichier s’appelle bien : shopping.py ?

Car dans tes sensors, tu renvoies vers shopping_list.py

J’espère que c’est de là que vient le problème…

C’est bien shopping list.py c’est une erreur de frappe sur le forum

Alors là…

À moins que tu n’aies pas placé ton fichier « shopping_list.py » dans le même dossier de « .shopping_list.json », je ne vois pas d’où vient le problème.

Si quelqu’un d’autre a une idée…?

Au fait, @Clemalex, as-tu trouvé une solution pour palier à la limite des 255 caractères ?

Moi, oui :innocent:

Partage dans un topic :+1:

Je passe par une requête api et jq… Mais pas. Eu le temps de partager.

L’avantage des requête api via rest_command c’est que tu peux créer des attributs… Qui ne sont pas limité a 255.

Oui, ils sont bien tout les deux à la racine du dossier config\