SAK (Swiss Army Knife) - Aide conditions de couleur de l'icone

Salut la commu,

Je me tourne vers vous car là je suis à court d’idée, pourtant ce que je cherche ne me semble pas complexe.

Mon problème

J’essaie d’adapter le magnifique travail d’AmoebeLabs et notamment sa card Météo (Sake 1)

Jusque là, 0 problème, je veux juste remplacer la qualité de l’air par l’indicateur d’alerte météo France.

Mon problème (simple), je veux que mon icone (statique) d’alerte prenne la couleur de l’alerte.
image

Le code de mon icone
type: icon
id: 2
position:
  cx: 50
  cy: 40
  icon_size: 12
entity_index: 3
icon: 'mdi:alert-octagon-outline'
styles:
  icon:
    opacity: 0.6
    fill: >
      [[[
        if (entity.state == 2) 
          return '#FDD74B';
        else
          return '#FE6A69';
      ]]]

Ce qui me rend fou c’est que si je mets une valeur statique genre

fill: '#FDD74B'

L’icône s’affiche de la bonne couleur mais dès que je veux mettre une condition, l’icône reprend sa couleur de base.
J’avoue ne pas capter la différence entre le « > » ou « | » quand on met du code. J’ai essayé tout ce qui pouvait me passer par la tête et mes recherches :

  • utiliser {% if state(…)… %}),
  • utiliser des simples quotes, double quotes pour les résultats,
  • créer mon code avec le Modèle de démonstration de l’outil de développement
  • utiliser les codes rgb / nom de couleurs

Bien sûr j’ai parcouru la doc HA, la doc SAK, je passe certainement à côté de l’info mais là je sature.
J’ai aussi parcouru le forum traitant de ce sujet et essayant d’adapter les solutions apportées, mais rien n’y fait, c’est comme si la configuration n’acceptait pas mon if.

L’icone est intégré dans une card custom dont je mets le code si cela peut aider

Code de la carte
    - type: 'custom:swiss-army-knife-card'
      entities:
        - entity: sensor.06_weather_alert           #Index 54
          attribute: Vagues-submersion
          icon: 'mdi:waves-arrow-up'
        
      aspectratio: 2/2.3

      disable_card: false

      dev:
        debug: false
        
      layout:
        styles:
          card:
          toolsets:
            filter: url(#nm-1)
        toolsets:
          # ==============================================================================
          - toolset: card-title
            position:
              cx: 5
              cy: 5
            tools:
              # Area
              - type: area
                id: 10
                position:
                  cx: 50
                  cy: 50
                entity_index: 0
                styles:
                  area:
                    font-size: 12em
                    font-weight: 400
                    text-anchor: start
                    alignment-baseline: hanging
                    fill: var(--primary-text-color)
                    letter-spacing: 0em
                    opacity: 1

              # weather type description
              - type: state
                id: 3
                position:
                  cx: 50
                  cy: 70
                entity_index: 7
                styles:
                  state:
                    font-size: 10em
                    font-weight: 400
                    text-anchor: start
                    font-style: italic
                  # uom:
                    # alignment-baseline: central

          - toolset: alertmeteo
            position:
              cx: 173.5
              cy: 60
            tools:
              - type: 'circle'
                id: 0
                position:
                  cx: 50
                  cy: 50
                  radius: 22
                styles:
                  circle:
                    opacity: 1
                    fill: var(--primary-background-color)

              - type: 'segarc'
                id: 1
                entity_index: 2
                position:
                  cx: 50
                  cy: 50
                  start_angle: 1
                  end_angle: 361
                  width: 2
                  radius: 20
                scale:
                  min: 1
                  max: 5
                  width: 2
                  offset: -1
                show:
                  scale: true
                  style: 'colorstops'

                segments:
                  colorstops:
                    gap: 1
                    colors:
                      1: '#A8E05F'
                      2: '#FDD74B'
                      3: '#FE9B57'
                      4: '#FE6A69'
                styles:
                  foreground:
                    fill: var(--theme-gradient-color-01)
                  background:
                    fill: var(--cs-theme-default-darken-15)
                    filter: url(#is-1)
              ####################
              # Exclamation point
              ####################
              - type: icon
                id: 2
                position:
                  cx: 50
                  cy: 40
                  icon_size: 12
                entity_index: 2
                icon: 'mdi:alert-octagon-outline'
                styles:
                  icon:
                    opacity: 0.6
                    fill: >
                      [[[
                        if (entity.state == 2) 
                          return '#FDD74B';
                        else
                          return #FE6A69;
                      ]]]

              - type: icon
                id: 3
                position:
                  cx: 50
                  cy: 55
                  icon_size: 12
                entity_index: 54
                styles:
                  icon:
                    filter: url(#is-1)
                    opacity: 0.6

Merci pour les courageux !

Ma configuration


System Information

version core-2022.11.4
installation_type Home Assistant Supervised
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.10.7
os_name Linux
os_version 5.10.103-v7l+
arch armv7l
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4898
Installed Version 1.28.4
Stage running
Available Repositories 1226
Downloaded Repositories 16
Home Assistant Cloud
logged_in true
subscription_expiration 13 décembre 2022 à 01:00
relayer_connected true
remote_enabled true
remote_connected true
alexa_enabled false
google_enabled false
remote_server eu-central-1-2.ui.nabu.casa
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Raspbian GNU/Linux 10 (buster)
update_channel stable
supervisor_version supervisor-2022.11.2
agent_version null
docker_version 20.10.13
disk_total 117.1 GB
disk_used 10.0 GB
healthy true
supported failed to load: Unsupported
supervisor_api ok
version_api ok
installed_addons Home Assistant Google Drive Backup (0.109.2), File editor (5.4.2), Node-RED (13.5.3), Mosquitto broker (6.1.3), MariaDB (2.5.1), Grafana (8.1.0), Zigbee2MQTT (1.28.4-1), InfluxDB (4.5.0), Samba share (10.0.0), Terminal & SSH (9.6.1)
Dashboards
dashboards 4
resources 14
views 27
mode storage
Recorder
oldest_recorder_run 27 novembre 2022 à 17:20
current_recorder_run 6 décembre 2022 à 11:36
estimated_db_size 360.45 MiB
database_engine sqlite
database_version 3.38.5
___

Salut Matilas,
Je pense avoir trouvé ta solution:

type: custom:swiss-army-knife-card
entities:
  - entity: sensor.06_weather_alert
    attribute: Inondation #mod
    icon: mdi:waves-arrow-up
aspectratio: 1/1
#suppr pour alléger mon test
layout:
#suppr pour alléger mon test
  toolsets:
    - toolset: alertmeteo
      position:
        cx: 50 #mod
        cy: 50 #mod
      tools:
        - type: circle
          id: 0
          position:
            cx: 50
            cy: 50
            radius: 22
          styles:
            circle:
              opacity: 1
              fill: var(--primary-background-color)
        - type: segarc
          id: 1
          entity_index: 2
          position:
            cx: 50
            cy: 50
            start_angle: 1
            end_angle: 361
            width: 2
            radius: 20
          scale:
            min: 1
            max: 5
            width: 2
            offset: -1
          show:
            scale: true
            style: colorstops
          segments:
            colorstops:
              gap: 1
              colors:
                '1': '#A8E05F'
                '2': '#FDD74B'
                '3': '#FE9B57'
                '4': '#FE6A69'
          styles:
            foreground:
              fill: var(--theme-gradient-color-01)
            background:
              fill: var(--cs-theme-default-darken-15)
              filter: url(#is-1)
              ####################
              # Exclamation point
              ####################
        - type: icon
          id: 2
          position:
            cx: 50
            cy: 40
            icon_size: 12
          entity_index: 0 #mod
          icon: 'mdi:alert-octagon-outline'
          animations:
            - state: 'Rouge'
              styles:
                icon:
                  fill: red
            - state: 'Jaune'
              styles:
                icon:
                  fill: yellow
            - state: 'Vert'
              styles:
                icon:
                  fill: green
#suppr pour alléger mon test

Remets bien tes numéros d’entités et ça devrait aller!

Désolé pour le déterrage de topic mais j’ai dû m’absenter depuis.
Merci beaucoup pour ta réponse, j’ai rajouté les animations mais malheureusement ça ne fonctionne pas de mon côté
Les states de mon sensor.06_weather_alert sont 1 / 2 / 3 / 4, j’ai essayé les valeurs entre quotes (sans, c’est en erreur) et rien n’y fait

Visiblement pour les états numériques, les ‹ animations › de SAK ont besoin d’un opérateur.

type: custom:swiss-army-knife-card
entities:
  - entity: sensor.06_weather_alert
aspectratio: 1/1
layout:
  toolsets:
    - toolset: whatever
      position:
        cx: 50
        cy: 50
      tools:
        - type: icon
          position:
            cx: 50
            cy: 50
            icon_size: 50
          entity_index: 0
          icon: mdi:alert-octagon-outline
          animations:
            - state: '1'
              operator: '=='
              icon: mdi:hexagon-outline
              styles:
                icon:
                  fill: blue
            - state: '2'
              operator: '=='
              icon: mdi:hexagon-slice-2
              styles:
                icon:
                  fill: green
            - state: '3'
              operator: '=='
              icon: mdi:hexagon-slice-4
              styles:
                icon:
                  fill: yellow
            - state: '4'
              operator: '=='
              icon: mdi:hexagon-slice-6
              styles:
                icon:
                  fill: red

Merci pour ton retour, malheureusement cela ne fonctionne pas non plus.
J’ai mis les 2 éléments, couleur et changement d’icônes pour voir si c’était juste un problème de couleur, mais l’icône ne change pas non plus (après actualisation et redémarrage rapide)

Ce code fonctionne comme tel chez moi. Je n’ai changé que mon entité de test (input_select.test) pour la tienne.
Tu peux essayer avec une autre entité?

Et si ton HA est monté dans une VM, redémarre la machine qui héberge tout ça.
Malheureusement je n’ai pas d’autres pistes de réflexion :confused:

J’ai essayé, sans succès :frowning:
Merci beaucoup pour tes pistes en tout cas !