Créer un tableau

Rebonjour à tous,

Je cherche à réaliser un tableau avec par exemple :
image

Donc 4 colonnes, 05/10/2023 / 23.86kWh / 5h26 / 4.77€
La 4eme est facultative c’est juste une multiplication.

A ce stade ma difficulté n’est pas de faire le tableau mais d’enregistrer les données dans HA.

Savez vous si on peut enregistrer des données par une automatisation ou un script ?? Mais où ?

Je me demande s’il ne faut pas créer une entité qui a 3 paramètres, mais comment ?? c’est quoi ? un sensor avec 3 attributs ??

Je sens le truc mais je ne sais pas le réaliser concrètement…

Merci si vous avez fait ce genre de chose.

Salut

Exact

Exemple:
image

4 sensors (1 par ligne) avec des attributs et la colonne jour est calculée.

Bonsoir,
tu peu faire un template sensor avec des attributs.

exemple, avec deux attributs ( Mais tu peu en faire tant que tu veut ):

    - name: Poubelle verte jour
      unique_id: poubelle_verte_jour
      state: >-
        {% set delta = state_attr('calendar.poubelle_verte', 'start_time') | as_datetime | as_local - today_at() %}
        {{ {0: "Aujourd'hui", 1: "Demain"}.get(delta.days, 'Dans ' ~ delta.days ~  ' Jours') }}
      attributes:
        date: >-
          {{ as_timestamp(states.calendar.poubelle_verte.attributes.start_time) | timestamp_custom("%d/%m/%y", True) }}
        jours: "{{((as_timestamp(states.calendar.poubelle_verte.attributes.start_time)- as_timestamp(now())) /86400+1) | int}}"
      availability:  "{{ states('calendar.poubelle_verte') not in ['unknown', 'unavailable', 'none'] }}"

Je les fais directement en markdown personnellement (surtout si il y a des calculs dedans) :

Capture d’écran 2023-10-08 à 23.43.29

Avec le code suivant:

# Synthèse consommation
| Paramètre | Valeur | Unité |
|-----------|--------:| :----|
|Kilométrage total | **{{ states('sensor.cloucloute_odometer') | round(0) }}** | km |
|Kilométrage restant | **{{states('sensor.cloucloute_range') | round(0) }}** | km |
|Kilométrage il y a 30 j | **{{ states('sensor.last_cloucloute_km_mois')}}** | km |
|Kilométrage parcouru en 30 j. + restant | **{{ (states('sensor.cloucloute_odometer')|round(0) + states('sensor.cloucloute_range')|round(0) - (states('sensor.last_cloucloute_km_mois')|float)) | round(0) }}** | km |
|Total des charges | **{{ states('input_number.cloucloute_total_energie_chargee') | round(0) }}** | kWh |
|Total des charges il y a 30 j | **{{ states('sensor.last_cloucloute_total_energie_chargee_mois') | round(0) }}** | kWh |
|Total des charges du mois | **{{ (states('input_number.cloucloute_total_energie_chargee')| round(0) - states('sensor.last_cloucloute_total_energie_chargee_mois')| round(0)) }}** | kWh |
|Dernière consommation | **{{ states('input_number.cloucloute_consommation_30j') | round(1) }}** | kWh/100km |
2 « J'aime »

Merci à tous pour votre aide, je vois mieux comment créer un sensor/template avec des attributs, je vois bien comment afficher des entités différentes dans un tableau.

Mais ce dont j’ai besoin c’est d’afficher dans un tableau les 10 dernières valeurs de cette entité.

image

Sur ce tableau, c’est la même entité qui a 3 attributs + 1 calculé mais c’est la même entité.

C’est donc un genre d’historique sous forme de tableau.
Je continue à chercher.

J’ai regardé comment faisait l’intégration pronote, elle enregistre les évaluations dans des « sous attributs » de l’attribut evaluations? Je ne sais pas si on dit ainsi.

L’affichage se fait avec une boucle et un index.

type: markdown
content: |-
...
{% set items =  state_attr('sensor.pronote_xxxx_evaluations','evaluations')%} 
...
    {% for i in range(0, items | count, 1) %}
...
    {{ items[i].date.strftime("%d-%m") }}
...
    {{ items[i].subject }}
...
    {% endfor %}</td></tr>

Donc l’affichage n’est pas compliqué, on boucle pour afficher ce que l’on souhaite.

Les données sont bien dans l’attribut évalutations

Maintenant la question est comment on peut écrire ces données ??
Seule une intégration sait faire cela ???
Je voudrais écrire un enregistrement via un script ou une automatisation à chaque fin de charge électrique.

Merci si vous savez comment on fait cela

Dans son sujet sur le suivi de la consommation électrique, Roumano a mis en place l’écriture de ces consommations dans un fichier CSV.
J’avous avoir copié cette approche qui foctionne bien.
Obtenir le temps d’utilisation d’un appareil électrique sur une période donnée - Home Assistant - Tutoriels & Partages / Intégration - Home Assistant Communauté Francophone (hacf.fr)
L’intérêt est de garder un historique. Reste à trouver une façon d’afficher ce csv dans l’interface HA si besoin.

En complément de la proposition de @Gilles2 avec un CSV, transformer le CSV en sensor pour être lu dans un tableau.

il y a avec file, ou il y a la possibilité de lire un CSV.

Il y aussi ça : GitHub - custom-cards/flex-table-card: Highly Flexible Lovelace Card - arbitrary contents/columns/rows, regex matched, perfect to show appdaemon created content and anything breaking out of the entity_id + attributes concept qui permet de faire de beaux tableaux…

1 « J'aime »

Merci les amis mais c’est bien étrange tout cela, en dehors d’une intégration, on n’a pas de moyen d’écrire des données ?

Il me faudrait dans mes données (sensor.sessions_de_charge) quelque chose qui ressemble à :

updated_at: 2023-10-09T18:05:45.399387
sessionscharge: 
- date: '2023-10-06'
  début: '02:10'
  fin: '04:33'  
  consommation: '23.86'
- date: '2023-10-03'
  début: '02:10'
  fin: '05:13'  
  consommation: '22.18'

On ne peut pas écrire de données sans passer par une intégration ? avec un script ou une automatisation ?

@delphiki toi qui est développeur, je pense que tu sais écrire des données dans un attribut comme tu le fais pour les évaluations ou notes de pronote. Tu sais si on peut le faire sans une intégration ? Je bloque sur ce point.

Tout dépend d’où sont issues tes données, en dehors d’une intégration, je le fais pour un petit scrapper que j’ai codé pour récupérer la liste des livres empruntés par mes enfants à la médiathèque :

sensor:
  - platform: rest
    name: Livres Noa
    resource: 'http://192.168.1.12:8082/?user=noa'
    timeout: 60
    json_attributes:
      - books
    value_template: "{{ value_json.books|length }}"
    scan_interval: 3600

Mon scrapper ressort une liste de livres, que je stocke dans le sensor, ce qui va donner des attributs qui ressemblent à ça :

books: 
- type: livres
  thumbnail: https://images-na.ssl-images-amazon.com/images/I/51RET7njZRL._SL300_.jpg
  title: Dofus n° 6 Goultard le Barbare
  author: Tot
  returnDate: 25/10/2023
  late: false
- type: livres
  thumbnail: https://images-na.ssl-images-amazon.com/images/I/51Yq-7QoN7L._SL300_.jpg
  title: Dofus n° 7 La cité de Djaul
  author: Tot
  returnDate: 25/10/2023
  late: false

Salut @delphiki merci pour cette idée.

Mes données sont déjà dans HA et c’est une automatisation ou un script qui va les récupérer à la fin de la charge de ma voiture électrique. L’idée pourrait être de les écrire dans un fichier .json (dans /config/www/mondossierjson) puis de les scrapper avec rest pour les envoyer dans la base comme tu fais avec books

Je trouve dingue qu’il n’y ait pas un service qui permette d’envoyer des données dans la base directement ou je n’ai pas trouvé. Je continue à chercher…

Merci pour ta mise sur une voie, une bonne idée.

edit : je viens de lire qu’on pouvait écrire en base avec l’API Python… je regarde aussi

Salut

Si les données sont déjà dans HA c’est une usine à gaz ton idée ! Extraire pour réinjecter (avec nouvelle structure) puis afficher… (temps, doublement des informations, risque de panne :disappointed_relieved:)
Le but des cartes c’est justement de se charger de la mise en forme. Peu importe la structure de départ.

1 « J'aime »

oui je sais mais visiblement aucun service ne permet d’écrire de données.

Mes données de départ :
image

Ce que je souhaite afficher (en gros) :
image

Je ne vois pas d’autre moyen que de réécrire les données pour générer le tableau. Mon idée est décrire une ligne de données à chaque fin de charge.

Peut etre en passant par un script python… je regarde cette piste

Hello

image

C’est top, j’y suis arrivé sans faire le tour de France, je documente dès que j’ai terminé les regroupements par cout de la semaine, du mois, de l’année…

1 « J'aime »

image
:innocent:

1 « J'aime »

Bonjour Sigalou,
je cherche à faire quelque chose de similaire, et je serais intéressé par ta solution, Pourrais-tu partager ? merci d’avance !

C’est partagé.
Regarde sur mon blog :

Merci, je regarde ça…