Aide sur un passage en streamline card, je galère un peu

Hello,

J’ai commencé ma migration vers streamline card et ça se passe pas trop mal pour le moment
par contre je sèche sur une carte.

Le contexte 1 detection de présence, 1 lampe
Si detection de présence icone clignote en rouge si lumière éteinte
si detection de présence icone clignote en noir si lumière allumée
si pas de detection, pas d’icone

Code de départ
            - type: custom:button-card
              entity: binary_sensor.esp1_entree_radar_target
              icon: mdi:account
              name: Présence
              aspect_ratio: 1
              tap_action:
                action: more-info
              show_state: false
              show_name: false
              styles:
                card:
                  - background-color: rgba(0, 0, 0, 0)
                icon:
                  - color: |
                      [[[ 
                        return states['light.lampe_entree'].state === 'on' ? 'black' : 'red';
                      ]]]
                  - animation: none
              state:
                - value: "on"
                  styles:
                    icon:
                      - color: |
                          [[[ 
                            return states['light.lampe_entree'].state === 'on' ? 'black' : 'red';
                          ]]]
                      - animation: blink 1s infinite
                - value: "off"
                  styles:
                    icon:
                      - color: transparent
                      - animation: none
                    card:
                      - filter: opacity(0)
              style:
                top: 7%
                left: 26%
                width: 150px
                height: 100px
passage en streamline template + streamline card
streamline_templates:
  presence_zoom1L:
    card:
      type: custom:button-card
      entity: '[[entity]]'
      icon: mdi:account
      name: Presence
      aspect_ratio: 1
      tap_action:
        action: more-info
      show_state: false
      show_name: false
      styles:
        card:
          - background-color: rgba(0, 0, 0, 0)
        icon:
          - color: |
              [[[ 
                return states['[[entity_light]]'].state === 'on' ? 'black' : 'red';
              ]]]
          - animation: none
      state:
        - value: 'on'
          styles:
            icon:
              - color: |
                  [[[ 
                    return states['[[entity_light]]'].state === 'on' ? 'black' : 'red';
                  ]]]
              - animation: blink 1s infinite
        - value: 'off'
          styles:
            icon:
              - color: transparent
              - animation: none
            card:
              - filter: opacity(0)
            - type: custom:streamline-card
              template: presence_zoom1L
              variables:
                - entity: binary_sensor.esp1_entree_radar_target
                - entity_light: light.lampe_entree
              style:
                top: 7%
                left: 26%
                width: 150px
                height: 100px

là ou ça devient compliqué pour moi c’est avec la couleur de clignotement suivant l’état de plusieurs lampes

                             - color: |
                                  [[[ 
                                    return states['light.applique_g_cuisine'].state === 'on' || states['light.applique_d_cuisine'].state === 'on' || states['light.bandeau_cuisine'].state === 'on' ? 'black' : 'red';
                                  ]]]

avec 1 lampe pas de soucis ça fonctionne. vient la grande question, est il possible de faire un streamline template générique pour 1 à X lampe(s) pour ne pas avoir plusieurs template? dès qu’il y a deux lampes je n’arrive pas à trouver comment faire dans le streamline template. mon code de base fonctionne sans soucis jusque X lampes, mais je n’arrive pas à transposer la couleur de clignotement dans le streamline template + streamline card à X lampes.

si vous avez des idées, je suis preneur quitte à changer mon code

1

merci
cdt

Une idée comme ça en passant, est ce que ça ne serait pas plus simple, pour généraliser, de créer un groupe pour chaque piece.

Ainsi dans streamline tu testes l’état d’un groupe (et un seul groupe) dans tous les cas. Du coup c’est toujours la même structure…

Mais derrière, tu peux avoir des groupes d’une lampe, de deux lampes, de N lampes…

PS: c’est également valide pour les autres entités… Les groupes sont souvent une solution pratique…

1 « J'aime »

Hello,

C’est une possibilité, mais généralement je ne suis pas fan des groupes, exemple: j’ai 2 appliques dans la cuisine, parfois ça arrive peu mais ça arrive, zigbee décroche et n’allume qu’une lampe du groupe, et après c’est la galère, faut aller éteindre ou allumer l’autre lampe parce que le groupe n’a pas d’état ni on ni off vu que 1 allumée et 1 éteinte. mais ça reste une possibilité.

dans le contexte ça n’a que peu d’importance, au pire l’icone n’a pas la bonne couleur, mais bon c’est une histoire de visibilité sur le plan lampes allumées ou éteintes et c’est déjà le cas si zigbee décroche un peu

cdt

Attention, je parle de groupe dans HA, pas dans Z2M…

Dans HA le groupe a toujours un état !

Et dans la configuration du groupe tu as une option pour définir l’état du groupe quand tous les membres ne sont pas dans le même état:

  • ON dès qu’un élément est ON
  • ON seulement si tous les éléments sont ON.

Dans mon cas, j’utilise en général l’option ON dès qu’un élément est ON…

Je considère que le salon est allumé dès qu’une des lampes est allumée…
Pareil si on parle de détecteur de mouvement / présence
Pareil pour des volets ou des ouvertures

Re,

Merci je garde cette solution sous le coude, c’est plus pour ne pas multiplier les streamline template, parce qu’à quoi bon « simplifier » le code, si c’est pour le réalourdir par 5/6 templates :smiley:

cdt

Si c’est une démarche générale, ça te permet aussi d’avoir une couche d’abstraction entre tes capteurs / éléments et ton dashboard / tes automatisations.

Ainsi si tu ajoutes, remplaces, changes un capteur, il te suffit de l’ajouter au groupe pour que ce soit pris en compte partout.
Idem, tu ajoutes une lumière dans ton salon (par exemple la guirlande du sapin à la saison kivabien…) tu n’as qu’à l’ajouter au groupe lumières_du_salon pour que ton dashboard, tes automatisations, etc… soient mises à jour…

C’est un choix à réfléchir… mais il y a d’autres avantages que juste streamline… Et même sans utiliser streamline ça peut être utile…

1 « J'aime »

re,

finalement ça fonctionne comme attendu avec un groupe,du coup je vais pas me prendre la tête

je peux utiliser mon streamline template + streamline card du 1er message, sans soucis, vu qu’on reste sur une entité. si une entité du groupe change; ça bascule bien :+1:

1

streamline template
streamline_templates:
  presence_zoom1L:
    card:
      type: custom:button-card
      entity: '[[entity]]'
      icon: mdi:account
      name: Presence
      aspect_ratio: 1
      tap_action:
        action: more-info
      show_state: false
      show_name: false
      styles:
        card:
          - background-color: rgba(0, 0, 0, 0)
        icon:
          - color: |
              [[[ 
                return states['[[entity_light]]'].state === 'on' ? 'black' : 'red';
              ]]]
          - animation: none
      state:
        - value: 'on'
          styles:
            icon:
              - color: |
                  [[[ 
                    return states['[[entity_light]]'].state === 'on' ? 'black' : 'red';
                  ]]]
              - animation: blink 1s infinite
        - value: 'off'
          styles:
            icon:
              - color: transparent
              - animation: none
            card:
              - filter: opacity(0)
  mouvement_zoom1L:
    card:
      type: custom:button-card
      entity: '[[entity]]'
      icon: mdi:motion-sensor
      name: Mouvement
      aspect_ratio: 1
      tap_action:
        action: more-info
      show_state: false
      show_name: false
      styles:
        card:
          - background-color: rgba(0, 0, 0, 0)
        icon:
          - color: |
              [[[ 
                return states['[[entity_light]]'].state === 'on' ? 'black' : 'red';
              ]]]
          - animation: none
      state:
        - value: 'on'
          styles:
            icon:
              - color: |
                  [[[ 
                    return states['[[entity_light]]'].state === 'on' ? 'black' : 'red';
                  ]]]
              - animation: blink 1s infinite
        - value: 'off'
          styles:
            icon:
              - color: transparent
              - animation: none
            card:
              - filter: opacity(0)
streamline card
  - type: custom:streamline-card
    template: presence_zoom1L
    variables:
      - entity: binary_sensor.esp1_labo_radar_target
      - entity_light: light.lampes_labo
    style:
      top: 7%
      left: 26%
      width: 150px
      height: 100px
  - type: custom:streamline-card
    template: mouvement_zoom1L
    variables:
      - entity: binary_sensor.esp1_labo_radar_still_target
      - entity_light: light.lampes_labo
    style:
      top: 4%
      left: 32%
      width: 150px
      height: 100px

groupe de lampe

merci @BBE

cdt

2 « J'aime »

Un petit commentaire en passant.

Suivant comment tu définis ton streamline, tu n’es pas obligé de définir un groupe lorsque tu n’as qu’une entité. Il te suffit lors de ta déclaration de carte streamline de mettre comme entité soit une light, soit un groupe de lights…

Re, oui pas de soucis, mes cartes avec 1 seule lampe et donc 1 entité light et pas groupe étaient déjà en place :wink:

Cdt

1 « J'aime »