HA Bilan energetique : nuage ApexCharts retire (axe X force en temps), texte conserve

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011uJ47NxgfpGnuuMr3f2n7Z
This commit is contained in:
Tallagrand Thierry
2026-09-29 00:02:24 +02:00
parent 71a71e40d7
commit 376a9f0a46

View File

@@ -247,80 +247,14 @@ views:
pleine à cette heure : au-delà de 25 %, la production maximale pleine à cette heure : au-delà de 25 %, la production maximale
observée est minorée et le bilan le signale.* observée est minorée et le bilan le signale.*
# Nuage soiree / nuit (28/09/2026) : meme donnees que Grafana « La nuit », # Nuage soiree / nuit : essaye en ApexCharts le 29/09 et RETIRE — la carte
# publiees par le service d'historisation dans sensor.evcs_nuit_maison_prevue_kwh # impose un axe X en temps et ignore un axe numerique (kWh affiches comme
# (attribut `nuage` = [soiree, nuit, voiture 0/1]). Graphique « ligne » a trait # des dates). Le nuage vit dans Grafana « La nuit ».
# nul + marqueurs = nuage de points ; axe X numerique (kWh), pas le temps.
- type: custom:apexcharts-card
header:
show: true
title: Soirée contre nuit — la soirée annonce la nuit
show_states: false
graph_span: 1d
apex_config:
chart:
height: 300
zoom: {enabled: false}
xaxis:
type: numeric
min: 2
max: 10.5
tickAmount: 8
decimalsInFloat: 1
title: {text: 'Soirée 18:00-21:30 (kWh, voiture exclue)'}
yaxis:
- min: 7
max: 16
decimalsInFloat: 0
title: {text: 'Nuit 21:30-09:00 (kWh)'}
markers:
size: [6, 6, 0, 11]
tooltip:
x:
formatter: 'EVAL:function(v) { return "soirée " + v.toFixed(2) + " kWh"; }'
legend:
show: true
series:
- entity: sensor.evcs_nuit_maison_prevue_kwh
name: Nuit sans voiture
type: line
stroke_width: 0
color: '#4caf50'
data_generator: |
return (entity.attributes.nuage || []).filter(p => !p[2])
.map(p => [p[0], p[1]]).sort((a, b) => a[0] - b[0]);
- entity: sensor.evcs_nuit_maison_prevue_kwh
name: Nuit avec voiture
type: line
stroke_width: 0
color: '#2196f3'
data_generator: |
return (entity.attributes.nuage || []).filter(p => p[2])
.map(p => [p[0], p[1]]).sort((a, b) => a[0] - b[0]);
- entity: sensor.evcs_nuit_maison_prevue_kwh
name: Régression
type: line
stroke_width: 2
color: '#ff9800'
data_generator: |
const a = entity.attributes.a, b = entity.attributes.b, n = entity.attributes.nuage || [];
if (a === null || b === null || !n.length) return [];
const xs = n.map(p => p[0]), lo = Math.min(...xs), hi = Math.max(...xs);
return [[lo, a + b * lo], [hi, a + b * hi]];
- entity: sensor.evcs_nuit_maison_prevue_kwh
name: Ce soir (prévu)
type: line
stroke_width: 0
color: '#f44336'
data_generator: |
const s = entity.attributes.soiree_kwh, v = parseFloat(entity.state);
return (s !== null && s !== undefined && !isNaN(v)) ? [[s, v]] : [];
- type: markdown - type: markdown
content: | content: |
{% set s = 'sensor.evcs_nuit_maison_prevue_kwh' %} {% set s = 'sensor.evcs_nuit_maison_prevue_kwh' %}
{% if is_number(states(s)) %}**Cette nuit** : soirée {{ state_attr(s, 'soiree_kwh') }} kWh → nuit prévue **{{ states(s) }} kWh** (moyenne {{ state_attr(s, 'nuit_moyenne_kwh') }}), soit **×{{ state_attr(s, 'facteur') }}** sur le profil du bilan.{% else %}Hors de la fenêtre 21:30 → 09:00 : pas de prévision de nuit en cours.{% endif %} {% if is_number(states(s)) %}**Cette nuit** : soirée {{ state_attr(s, 'soiree_kwh') }} kWh → nuit prévue **{{ states(s) }} kWh** (moyenne {{ state_attr(s, 'nuit_moyenne_kwh') }}), soit **×{{ state_attr(s, 'facteur') }}** sur le profil du bilan.{% else %}Hors de la fenêtre 21:30 → 09:00 : pas de prévision de nuit en cours.{% endif %}
Modèle sur {{ state_attr(s, 'nuits') }} nuits : nuit = {{ state_attr(s, 'a') }} + {{ state_attr(s, 'b') }} × soirée (r² {{ state_attr(s, 'r2') }}). Modèle sur {{ state_attr(s, 'nuits') }} nuits : nuit = {{ state_attr(s, 'a') }} + {{ state_attr(s, 'b') }} × soirée (r² {{ state_attr(s, 'r2') }}). Le nuage de points est dans Grafana, tableau « La nuit ».
- type: markdown - type: markdown
content: | content: |