Statistiques via des données d'une autre base de données

Bonjour,

J’aimerai pouvoir utiliser et afficher des statistiques issues d’une table dans une autre DB que celle de ha.

J’ai une base de données mariadb locale qui contient pour l’instant une table (charging sessions) reprenant les rechargements de ma voiture électrique. Je n’ai pas d’accès pour recevoir mes données automatiquement mais j’ai un relevé de chaque rechargement.

Admettons, j’encode les kWh et le prix en € :

  • 20/10/2024 : 25.43 : 7.48
  • 25/10/2024: 26.60 : 7.85
    etc…

Comment puis récupérer ces données pour en tirer des statistiques par semaine, moi, année?

Le but est de connaître la consommation réelle de mon habitation sans la part de cette voiture qui est normalement remboursée par mon employeur et donc de voir si tout est OK au final :slight_smile:

D’avance merci de votre aide.

Ma configuration


core-2024.10.1

System Information

version core-2024.10.1
installation_type Home Assistant Container
dev false
hassio false
docker true
user root
virtualenv false
python_version 3.12.4
os_name Linux
os_version 4.4.302+
arch x86_64
timezone Europe/Brussels
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
HACS Data ok
GitHub API Calls Remaining 5000
Installed Version 2.0.1
Stage running
Available Repositories 1456
Downloaded Repositories 20
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Dashboards
dashboards 4
resources 12
views 24
mode storage
Recorder
oldest_recorder_run October 19, 2024 at 2:07 PM
current_recorder_run October 30, 2024 at 5:34 PM
estimated_db_size 469.47 MiB
database_engine sqlite
database_version 3.45.3
___

Tu peux utiliser cette intégration pour pousser les données dans les long-term statistics de HA : GitHub - klausj1/homeassistant-statistics: This HA integration allows to import long term statistics from a file like csv or tsv

1 « J'aime »

Déjà merci pour cette piste.

J’ai pu pousser mes données de l’année mais après ???

J’arrive bien à les voir dans historique mais comment pourrais-je les utiliser pour afficher par exemple une card avec la consommation totale de cette semaine (ça je sais faire via les données reçu de mon dispositif) et pour cette semaine la part de recharge de la voiture? Et éventuellement le prix remboursé (que je sais également obtenir mais que je n’ai pas pu pousser via ce système).

Merci :slight_smile:

Comment tu le fais habituellement ?

Et bien je suis toujours en train de tester une solution pour la consommation totale d’électricité… Je ne sais même pas si elle est correcte :slight_smile:

  1. J’ai ajouter des utility_meter dans mon yaml
utility_meter:
  energy_quarter:
    source: sensor.p1_meter_energy_import
    unique_id: energy_quarter
    cycle: quarter-hourly    
  energy_hour:
    source: sensor.p1_meter_energy_import
    unique_id: energy_hour
    cycle: hourly  
  energy_daily:
    source: sensor.p1_meter_energy_import
    unique_id: energy_daily
    cycle: daily
    name: Daily Energy
  energy_weekly:
    source: sensor.p1_meter_energy_import
    unique_id: energy_weekly
    cycle: weekly
    name: Weekly Energy
  energy_monthly:
    source: sensor.p1_meter_energy_import
    unique_id: energy_monthly
    cycle: monthly  
    name: Monthly Energy

Ensuite j’ai créer des input_number pour conserver mes données que je rempli tous les cycles avec des automations.

Exemple, pour avoir mes statistiques de conso des 4 1/4h précédant, j’ai 4 input_number et une automation qui met en cascade la valeur du précédent.

donc pour 1/4h précédant :

action: input_number.set_value
data:
  value: "{{ state_attr('sensor.energy_quarter', 'last_period') | float(0) }}"
target:
  entity_id: input_number.quarter_1

Pour 30 minutes avant :

action: input_number.set_value
data:
  value: "{{ states('input_number.quarter_1') | float(0) }}"
target:
  entity_id: input_number.quarter_2

etc…

J’ignore si c’est la solution la plus facile :slight_smile: D’ailleurs, je suis preneuse s’il en existe une autre :slight_smile:

Je pourrai faire une intégration sql avec un déclencheur qui met à jour toutes les jours.

J’ai bien la requête qui me ramène la somme au moment de l’exécution :

SELECT COALESCE(sum(statistics.state), 0) AS somme
FROM statistics
INNER JOIN statistics_meta ON statistics_meta.id = statistics.metadata_id
WHERE statistics_meta.statistic_id = 'sensor.car_charging_session'
AND start_ts BETWEEN strftime('%s', datetime('now', 'start of month', '+2 hours'))
AND strftime('%s', datetime('now', 'start of month', '+1 month', '-1 second', '+2 hours'));

Est-ce une bonne piste?

Finalement, je crois que je suis arrivée à quelque chose avec l’intégration SQL sur une db locale mariadb qui contient mes valeurs.

Des automations qui gardent les valeurs précédentes.
Une automation qui met à jour mes entités de l’intégration SQL avec chacune de mes requêtes.

A voir dans le temps car mes stats ne tournent que depuis aujourd’hui mais ça donnerai ça :