[Article] Un beau dashboard, tout simplement

Salut
merci pour cette article et partage
Je vais essayer d’utiliser au maximum la carte tuile
Je me suis penché sur la carte tuile météo

:sun_behind_rain_cloud: Météo par heure :sun_behind_rain_cloud:

Code de la carte
type: tile
show_entity_picture: true
icon: mdi:account
color: green
entity: sensor.VOTRE_VILLE_heure
name: Météo
hide_state: false
state_content:
  - condition
  - temperature
  - humidity
  - precipitation
  - wind_speed
vertical: false
grid_options:
  columns: 12
  rows: 1

:sun_behind_rain_cloud: Prévisions :sun_behind_rain_cloud:

section prévision
square: false
type: grid
cards:
  - type: heading
    icon: mdi:weather-partly-snowy-rainy
    heading: Prévisions météo
    heading_style: title
  - type: tile
    entity: sensor.meteo_VOTRE_VILLE_0
    icon: mdi:account
    hide_state: false
    vertical: false
    name: Aujourd'hui
    state_content:
      - datetime
      - condition
      - templow
      - temperature
      - humidity
      - precipitation
    show_entity_picture: true
  - type: tile
    show_entity_picture: true
    icon: mdi:account
    color: green
    entity: sensor.meteo_VOTRE_VILLE_1
    name: Demain
    hide_state: false
    vertical: false
    grid_options:
      columns: 12
      rows: 1
    state_content:
      - datetime
      - condition
      - templow
      - temperature
      - humidity
      - precipitation
  - type: tile
    show_entity_picture: true
    icon: mdi:account
    color: green
    entity: sensor.meteo_VOTRE_VILLE_2
    name: Après demain
    hide_state: false
    vertical: false
    grid_options:
      columns: 12
      rows: 1
    state_content:
      - datetime
      - condition
      - templow
      - temperature
      - humidity
      - precipitation
  - type: tile
    show_entity_picture: true
    icon: mdi:account
    color: green
    entity: sensor.meteo_VOTRE_VILLE_3
    name: J+3
    hide_state: false
    vertical: false
    grid_options:
      columns: 12
      rows: 1
    state_content:
      - datetime
      - condition
      - templow
      - temperature
      - humidity
      - precipitation
  - type: tile
    show_entity_picture: true
    icon: mdi:account
    color: green
    entity: sensor.meteo_VOTRE_VILLE_4
    name: J+4
    hide_state: false
    vertical: false
    grid_options:
      columns: 12
      rows: 1
    state_content:
      - datetime
      - condition
      - templow
      - temperature
      - humidity
      - precipitation
grid_options:
  columns: full
columns: 1

Oui j’ai un temps magnifique :slight_smile:

:hammer_and_wrench: Configuration :hammer_and_wrench:

Pour obtenir les infos météo :

à ajouter en premier lieu les codes suivants dans le configuration.yaml ou template.yaml

Météo par heure :

Template (par heure)
- trigger:
    - trigger: time_pattern
      hours: /1
    - trigger: homeassistant
      event: start
  action:
    - action: weather.get_forecasts
      target:
        entity_id: weather.VOTRE_VILLE
      data:
        type: hourly
      response_variable: hourly
  sensor:
    - name: meteo VOTRE_VILLE heure
      unique_id: meteo_VOTRE_VILLE_heure
      state: "Something"
      picture: >
          {% set weather = hourly['weather.VOTRE_VILLE'].forecast[0].condition %}
          {% if is_state('sun.sun', 'above_horizon') %}
          {{ '/local/icones/meteo/' + weather + '.svg' }}
          {% else %}
          {{ '/local/icones/meteo/' + weather + '_night.svg' }}
          {% endif %}
      attributes:
        datetime: "{{ hourly['weather.VOTRE_VILLE'].forecast[0].datetime }}"
        condition: "{{ hourly['weather.VOTRE_VILLE'].forecast[0].condition }}"
        temperature: "🌡️{{hourly['weather.VOTRE_VILLE'].forecast[0].temperature }}°"
        humidity: "💧{{ hourly['weather.VOTRE_VILLE'].forecast[0].humidity }}%"
        precipitation: "☂️{{hourly['weather.VOTRE_VILLE'].forecast[0].precipitation }}mm"      
        precipitation_percent: "{{ hourly['weather.VOTRE_VILLE'].forecast[0].precipitation.probability }}"  
        wind_speed: "💨{{hourly['weather.VOTRE_VILLE'].forecast[0].wind_speed }}km/h"

Metéo par jour :

Template (par jour)
- trigger:
    - trigger: time_pattern
      hours: /1
    - trigger: homeassistant
      event: start
  action:
    - action: weather.get_forecasts
      target:
        entity_id: weather.VOTRE_VILLE
      data:
        type: daily
      response_variable: daily
  sensor:
    - name: meteo VOTRE_VILLE jour 1
      unique_id: meteo_VOTRE_VILLE_jour_1
      state: "Something"
      picture: >
          {% set weather = daily['weather.VOTRE_VILLE'].forecast[1].condition %}
          {{ '/local/icones/meteo/' + weather + '.svg' }}
      attributes:
        datetime: >
          {{ daily['weather.VOTRE_VILLE'].forecast[1].datetime | as_timestamp | timestamp_custom('%d/%m', true) }}
        condition: "{{ daily['weather.VOTRE_VILLE'].forecast[1].condition }}"
        temperature: "🔺{{ daily['weather.VOTRE_VILLE'].forecast[1].temperature }}°"
        humidity: "💧{{ daily['weather.VOTRE_VILLE'].forecast[1].humidity }}%"
        templow: "🔻{{ daily['weather.VOTRE_VILLE'].forecast[1].templow }}°"

Code à multiplier selon le nombre de jours souhaités
forecast[0] : Jour J
forecast[1] : Jour J+1
forecast[2] : Jour J+2
etc…

Tout les attributs disponibles sont visibles dans outils de développement > Actions > Météo: Obtenir les prévisions

:sun_with_face: Icones :sun_with_face:

Pour les icônes animés j’ai pris celle ci :
https://bas.dev/work/meteocons

Il faudra prendre celle qui vous interesse pour toutes les conditions visibles sur ce lien :

Vous pourrez mettre les variantes « nuit » utile pour la météo par heure
Toutes les icones seront à enregistrer en local de préférence
exemple pour moi /local/icones/meteo/

Attention il faut que les noms des icônes soit identique au nom des conditions « weather HA »
rajouter _night dans le nom des icônes pour les versions nuits

:spiral_notepad: Notes :spiral_notepad:

suite à test avec @jerome6994
La synchronisation des sensors peuvent mettre du temps, ne vous inquiétez pas si rien apparait dans les données des sensors.
Cela met un peu de temps
Idem pour le lien avec les icônes.

L’affichage sur téléphone semblent accepter uniquement 5 états, pensez y :slight_smile:

EDIT:
On peu forcer les noms à se mettre à jour en fonction des forecasts
voici le code à utiliser :

  - name: "{{ daily['weather.VOTRE_VILLE'].forecast[2].datetime | as_timestamp | timestamp_custom('%a', true) | replace('Mon', 'Lundi') | replace('Tue', 'Mardi') | replace('Wed', 'Mercredi') | replace('Thu', 'Jeudi') | replace('Fri', 'Vendredi') | replace('Sat', 'Samedi') | replace('Sun', 'Dimanche') }}"
    unique_id: meteo_VOTRE_VILLE_jour_2
    state: "Something"
    picture: >
        {% set weather = daily['weather.VOTRE_VILLE'].forecast[2].condition %}
        {{ '/local/icones/meteoV2/' + weather + '.png' }}
    attributes:
      datetime: >
        {{ daily['weather.VOTRE_VILLE'].forecast[2].datetime | as_timestamp | timestamp_custom('%d/%m', true) }}
      condition: "{{ daily['weather.VOTRE_VILLE'].forecast[2].condition | replace('clear', 'Ciel dégagé') | replace('clear-night', 'Nuit clair') | replace('cloudy', 'Nuageux') | replace('rainy', 'Pluie') | replace('hail', 'Risque de grèle') | replace('snowy', 'neige') | replace('windy', 'Venteux') | replace('fog', 'Brouillard') | replace('partlycloudy', 'Eclaircies') | replace('pouring', 'Pluie forte') | replace('lightning', 'Orages') | replace('sunny', 'Ensoleillé') | replace('windy-variant', 'Venteux variant') | replace('Exceptional', 'Exceptionnel') | replace('snowy-rainy', 'Pluie verglaçante') | replace('lightning-rainy', 'Pluie orageuse')}}"
      temperature: "🔺{{ daily['weather.VOTRE_VILLE'].forecast[2].temperature }}°"
      humidity: "💧{{ daily['weather.VOTRE_VILLE'].forecast[2].humidity }}%"
      templow: "🔻{{ daily['weather.VOTRE_VILLE'].forecast[2].templow }}°"
      precipitation: "☂️{{ daily['weather.VOTRE_VILLE'].forecast[2].precipitation }}mm"

J’ai également intégré la traduction des conditions.

ATTENTION:
bien mettre un ID_Unique
Le temps de synchronisation des jours n’est pas instantanée cela peu prendre quelque minutes.

4 « J'aime »