[ConcoursDash] Carte production solaire

Ce concours m’a incité a revoir ma carte existante de suivi de production solaire (ECU APSystems), trouvée initialement sur ce forum, intégralement en button card (que je ne saurais pas forcément maintenir pleinement au besoin) et qui singeait la présentation de l’app EMA de APSystems. L’idée était d’avoir quelque chose de plus simple et compact. La surveillance énergétique de la maison via Home Assistant étant un de mes principaux intérêts, j’aime à avoir ces informations accessibles.
Voici ma carte sur base de custom:vertical-stack-in-card, custom:expander-card, custom:entity-progress-card, tuile et custom:mushroom-chips-card, pour quelque chose de plus proche du « natif ».
Affichage du statut du système (prod en cours ou pas), puissance instantanée, énergie cumulée du jour, puissance individuelle des 2 panneaux et une rangée de chips pour les données de statut de l’onduleur. En bonus derrière l’expander-card, les données d’un second système de mesure shelly et des stats historiques.
A l’état hors production, seule le premier rang est visible et les chips de statut sont masquées a l’exception du contact shelly.

En cours de production.

Etendue

type: custom:vertical-stack-in-card
cards:
  - type: custom:expander-card
    cards:
      - square: false
        type: grid
        cards:
          - type: custom:entity-progress-card
            entity: sensor.shellyplus1pm_7c87ce7355b4_switch_0_power
            name: Shelly Power
            decimal: 0
            min_value: 0
            max_value: 780
            tap_action:
              action: more-info
            icon_tap_action:
              action: more-info
            theme: optimal_when_high
            bar_size: large
            unit: W
            icon: mdi:solar-power
          - type: custom:entity-progress-card
            entity: sensor.shellyplus1pm_today_energy
            name: Shelly Energy
            decimal: 2
            min_value: 0
            max_value: 6
            tap_action:
              action: more-info
            icon_tap_action:
              action: more-info
            theme: optimal_when_high
            bar_size: large
            unit: kWh
            icon: mdi:solar-power
          - type: tile
            entity: sensor.ecu_216300055006_lifetime_maximum_power
            name: Lifetime W
            vertical: false
            icon_tap_action:
              action: more-info
            features_position: bottom
          - type: tile
            entity: sensor.ecu_216300055006_lifetime_energy
            name: Lifetime kWh
            vertical: false
            icon_tap_action:
              action: more-info
            features_position: bottom
        columns: 2
    title-card:
      square: false
      type: grid
      cards:
        - type: custom:entity-progress-card-template
          entity: sensor.ecu_216300055006_current_power
          icon: mdi:solar-power
          name: ECU Power
          secondary: "{{ states(entity) }} W"
          badge_icon: |-
            {% if states('sensor.ecu_216300055006_inverters_online') == '1' %}
              mdi:power-on
            {% else %}
              mdi:power-off
            {% endif %}
          badge_color: |-
            {% if states('sensor.ecu_216300055006_inverters_online') == '1' %}
              green
            {% else %}
              grey
            {% endif %}
          bar_size: large
          min_value: 0
          max_value: 780
          percent: >-
            {% set pow = states('sensor.ecu_216300055006_current_power') | int
            %} {{ (pow / 780 * 100) | round(1) }}
          bar_color: >-
            {% set level = states('sensor.ecu_216300055006_current_power') | int
            %} {% if level > 624 %}
              linear-gradient(90deg, lightgreen, green)
            {% elif level > 156 %}
              linear-gradient(90deg, yellow, orange)
            {% else %}
              linear-gradient(90deg, orange, red)
            {% endif %}
          force_circular_background: true
          color: >-
            {% set level = states('sensor.ecu_216300055006_current_power') | int
            %} {% if level > 624 %}
              green
            {% elif level > 156 %}
              yellow
            {% else %}
              grey
            {% endif %}
          tap_action: more-info
          icon_tap_action: more-info
        - type: custom:entity-progress-card
          entity: sensor.ecu_216300055006_today_energy
          name: ECU Energy
          decimal: 2
          min_value: 0
          max_value: 6
          tap_action:
            action: more-info
          icon_tap_action:
            action: more-info
          theme: optimal_when_high
          bar_size: large
          unit: kWh
        - type: custom:entity-progress-card
          entity: sensor.inverter_703000573416_power_ch_1
          unit: W
          decimal: 0
          min_value: 0
          max_value: 390
          tap_action:
            action: more-info
          icon_tap_action:
            action: more-info
          theme: optimal_when_high
          bar_size: large
          name: Panneau 1
          visibility:
            - condition: state
              entity: sensor.inverter_703000573416_online
              state: "true"
        - type: custom:entity-progress-card
          entity: sensor.inverter_703000573416_power_ch_2
          unit: W
          decimal: 0
          min_value: 0
          max_value: 390
          tap_action:
            action: more-info
          icon_tap_action:
            action: more-info
          theme: optimal_when_high
          bar_size: large
          name: Panneau 2
          visibility:
            - condition: state
              entity: sensor.inverter_703000573416_online
              state: "true"
      columns: 2
    animation: true
    clear: true
    clear-children: true
    title-card-button-overlay: true
    padding: "0"
    title-card-clickable: false
  - type: custom:mushroom-chips-card
    chips:
      - type: template
        entity: switch.shellyplus1pm_7c87ce7355b4_switch_0
        icon: |-
          {% if is_state(entity, 'off') %} 
           mdi:toggle-switch-variant-off
          {% else %}
           mdi:toggle-switch-variant
          {% endif %}
        icon_color: |-
          {% if is_state(entity, 'off') %} 
           grey
          {% else %}
           green
          {% endif %}
        tap_action:
          action: more-info
      - type: template
        entity: switch.ecu_216300055006_query_ecu
        icon: |-
          {% if is_state(entity, 'off') %} 
           mdi:toggle-switch-off
          {% else %}
           mdi:toggle-switch-outline
          {% endif %}
        icon_color: |-
          {% if is_state(entity, 'off') %} 
           grey
          {% else %}
           green
          {% endif %}
        tap_action:
          action: more-info
      - type: conditional
        conditions:
          - condition: numeric_state
            entity: sensor.ecu_216300055006_inverters_online
            above: 0
        chip:
          type: template
          entity: sensor.inverter_703000573416_voltage
          icon: mdi:sine-wave
          icon_color: |-
            {% if is_state('switch.ecu_216300055006_query_ecu', 'on') %} 
             green
            {% else %}
             grey
            {% endif %}
          content: >-
            {{ states('sensor.inverter_703000573416_voltage') | float | round(0)
            }} V
          tap_action:
            action: more-info
          hold_action:
            action: none
          double_tap_action:
            action: none
      - type: conditional
        conditions:
          - condition: numeric_state
            entity: sensor.ecu_216300055006_inverters_online
            above: 0
        chip:
          type: template
          entity: sensor.inverter_703000573416_frequency
          icon: mdi:thermometer
          icon_color: |-
            {% if is_state('switch.ecu_216300055006_query_ecu', 'on') %} 
             green
            {% else %}
             grey
            {% endif %}
          content: >-
            {{ states('sensor.inverter_703000573416_frequency') | float |
            round(0) }} Hz
          tap_action:
            action: more-info
          hold_action:
            action: none
          double_tap_action:
            action: none
      - type: conditional
        conditions:
          - condition: numeric_state
            entity: sensor.ecu_216300055006_inverters_online
            above: 0
        chip:
          type: template
          entity: sensor.inverter_703000573416_temperature
          icon: mdi:sine-wave
          icon_color: |-
            {% if is_state('switch.ecu_216300055006_query_ecu', 'on') %} 
             green
            {% else %}
             grey
            {% endif %}
          content: >-
            {{ states('sensor.inverter_703000573416_temperature') | float |
            round(1) }} °C
          tap_action:
            action: more-info
          hold_action:
            action: none
          double_tap_action:
            action: none
      - type: conditional
        conditions:
          - condition: numeric_state
            entity: sensor.ecu_216300055006_inverters_online
            above: 0
        chip:
          type: template
          entity: sensor.inverter_703000573416_signal
          icon: mdi:signal
          icon_color: |-
            {% if is_state('switch.ecu_216300055006_query_ecu', 'on') %} 
             green
            {% else %}
             grey
            {% endif %}
          content: >-
            {{ states('sensor.inverter_703000573416_signal') | float | round(0)
            }} dBm
          tap_action:
            action: more-info
          hold_action:
            action: none
          double_tap_action:
            action: none
    alignment: start

Bonjour,
Tu n’as pas mis les liens pour les cartes utilisées.

  • Les ressources : Partager les liens vers les ressources nécessaires, carte custom, intégration… le but étant de permettre de pouvoir la reproduire.

Merci. c’est corrigé.