C’est l’application Enphase qui donne ça.
Ahhhh ok, tant pis.
Je m’échine à reproduire ça avec HA
Mais c’est pas simple
J’ai fais qqe-chose qui ressemble avec Plottly:
type: custom:plotly-graph
entities:
- entity: sensor.envoy_122307065303_current_power_consumption_l1
name: Conso L1
unit_of_measurement: kW
yaxis: y1
line:
color: rgba(3, 73, 252, 1)
- entity: sensor.envoy_122307065303_current_power_consumption_l2
name: Conso L2
unit_of_measurement: kW
yaxis: y1
line:
color: rgba(3, 161, 252, 1)
- entity: sensor.envoy_122307065303_current_power_consumption_l3
name: Conso L3
unit_of_measurement: kW
yaxis: y1
line:
color: rgba(3, 211, 252, 1)
- entity: sensor.envoy_122307065303_current_power_consumption
name: Total conso
unit_of_measurement: kW
yaxis: y1
fill: tozeroy
fillcolor: rgba(3, 74, 255, 0.2)
line:
color: rgba(3, 74, 255, 0.1)
- entity: sensor.envoy_122307065303_current_power_production_l1
name: Product L1
unit_of_measurement: kW
yaxis: y1
line:
color: rgba(252, 115, 3, 1)
filters:
- multiply: -1
- entity: sensor.envoy_122307065303_current_power_production_l2
name: Product L2
unit_of_measurement: kW
yaxis: y1
line:
color: rgba(252, 161, 3, 1)
filters:
- multiply: -1
- entity: sensor.envoy_122307065303_current_power_production_l3
name: Product L3
unit_of_measurement: kW
yaxis: y1
line:
color: rgba(252, 194, 3, 1)
filters:
- multiply: -1
- entity: sensor.envoy_122307065303_current_power_production
name: Total product
unit_of_measurement: kW
yaxis: y1
fill: tozeroy
fillcolor: rgba(252, 65, 3, 0.2)
line:
color: rgba(252, 65, 3, 0.1)
filters:
- multiply: -1
- entity: sensor.envoy_122307065303_current_net_power_consumption
name: Net power conso
yaxis: y1
unit_of_measurement: kW
line:
color: rgba(92, 235, 52, 1)
- entity: sensor.energy_enphase_current_battery
name: Energie batterie
yaxis: y2
line:
color: rgba(194, 63, 242, 1)
filters:
- multiply: 0.001
unit_of_measurement: kWh
- entity: sensor.power_enphase_net_charge_batterie
name: Total batterie
unit_of_measurement: kW
yaxis: y1
fill: tozeroy
fillcolor: rgba(201, 73, 230, 0.2)
line:
color: rgba(201, 73, 230, 0.1)
layout:
margin:
r: 50
legend:
x: 0
"y": 1.2
groupclick: togglegroup
title:
side: top right
yaxis:
visible: true
position: 0
yaxis2:
visible: true
fixedrange: true
range:
- 0
- 3.5
xaxis:
rangeselector:
"y": 1.1
x: 0.7
buttons:
- count: 1
step: hour
- count: 12
step: hour
- count: 1
step: day
- count: 7
step: day
config:
scrollZoom: true
hours_to_show: 24
refresh_interval: 10
title: Phases
height: 800
A adapter bien sur (je suis en triphasé donc j’ai aussi un détail par phase)
Ca donne qqe-chose comme ça:
EDIT: ou ça qui est encore plus proche
type: custom:config-template-card
entities:
- input_select.apex_span
variables:
span: states['input_select.apex_span'].state
selectionSpan: |
span => {
switch (span) {
case '1h':
return '1h';
case '1d':
return '4h';
case '1w':
return '1d';
case '4w':
return '1w';
case '15w':
return '4w';
case '52w':
return '4w';
}
}
groupBy: |
span => {
switch (span) {
case '1h':
return '1m';
case '1d':
return '30m';
case '1w':
return '1h';
case '4w':
return '4h';
case '15w':
return '1d';
case '52w':
return '1w';
}
}
card:
type: custom:apexcharts-card
header:
show: false
title: Optimisation Photovoltaïque
show_states: false
colorize_states: false
yaxis:
- id: left
show: true
series:
- entity: sensor.total_puissance_consommee_instantanee_w
type: column
yaxis_id: left
stroke_width: 1
opacity: 1
fill_raw: last
show:
extremas: true
in_brush: false
group_by:
func: avg
duration: ${groupBy(span)}
- entity: sensor.total_puissance_produite_instantanee_w
type: area
yaxis_id: left
stroke_width: 1
opacity: 0.3
fill_raw: last
show:
extremas: true
in_brush: true
group_by:
func: avg
duration: ${groupBy(span)}
- entity: sensor.total_puissance_importee_instantanee_w
type: column
yaxis_id: left
stroke_width: 1
opacity: 1
fill_raw: last
show:
extremas: true
group_by:
func: avg
duration: ${groupBy(span)}
color: darkgray
- entity: sensor.total_puissance_exportee_instantanee_w
type: column
yaxis_id: left
stroke_width: 1
opacity: 1
fill_raw: last
show:
extremas: true
group_by:
func: avg
duration: ${groupBy(span)}
invert: true
color: gray
graph_span: ${span}
all_series_config:
type: column
qui donne ça (avec changement d’échelle en bas)
Nickel merci.
J’ai également avancé avec apexcharts-card & card-mod.
J’obtiens ceci:
et voici le code:
type: custom:apexcharts-card
experimental:
hidden_by_default: true
now:
show: true
label: ""
color: red
yaxis:
- id: value
apex_config:
tickAmount: 7
forceNiceScale: true
decimalsInFloat: 1
- id: Conso1
show: false
apex_config:
chart:
stacked: true
height: 400
width: 600
offsetY: -10
offsetX: -10
redrawOnParentResize: true
parentHeightOffset: 0
legend:
show: false
xaxis:
labels:
format: HH
style:
fontSize: 11px
fill:
type: gradient
gradient:
type: vertical
shadeIntensity: 0
inverseColors: false
opacityFrom: 0.9
opacityTo: 0.7
stops:
- 10
span:
offset: +0h
graph_span: 24h
update_interval: 30s
header:
show: false
show_states: true
colorize_states: true
series:
- entity: sensor.ecu_current_power
show:
hidden_by_default: false
name: Solar now
color: "#ffc166"
type: column
yaxis_id: value
unit: W
group_by:
func: last
duration: 10m
- entity: sensor.puissance_consome_neg
show:
hidden_by_default: false
name: Conso totale
color: "#9c75da"
type: column
yaxis_id: value
unit: W
group_by:
func: last
duration: 10m
card_mod:
style: |
ha-card {
height: 400px !important;
width: 600px !important;
}
C’est pas encore pile poil ce que je veux mais ca progresse.
Là c’est le graph de la journée d’hier, mais on vois bien que ton intégration fait un super taf, malgré les variations dues à la journée trèèèèès nuageuses que nous avons eu en gironde.
Bonjour jean Marc,
Merci pour ce retour. Cela veut dire que je passe uniquement via l’interface GUI ? (c’est ce que j’avais fait au début mais sans succès aussi). Entre temps, il y a eu des mises à jour Home Assistant et de Solar optimizer.
Je vais tout virer et ré-installer proprement avec la dernière version.
Rebonjour Jean-Marc,
Suite à une re-install et reconf via GUI, j’ai pu valider mes paramètres de conf SO pour ma TESLA (et mon Chauffe eau). Y’a plus qu’à attendre que j’ai besoin de recharger mon véhicule pour vérifier que cela fonctionne bien.
Quelques question supplémentaires :
Sur le template d’utilisabilité, j’ai ajouté la condition " is_state(‹ input_select.charge_mode ›, ‹ Solaire ›)" comme dans l’exemple.
→ Est-ce que cette condition est propre à Solar Optimizer (du genre un calcul de delta entre ma production et ma conso basée sur les sensors renseignés lors de la configuratioon de SO) ou est-ce un sensor qu’il faut créer (si on a pas) ou renseigner le sensor de la conso nette ?
→ Aussi, dans le prix d’achat de l’énergie, considérant les heures pleines et les heures creuses, je ne peux pas renseigner directement le compteur public jour (celui OOTB fournis avec HA), je ne peux renseigner que l’un de mes compteurs dérivés (HC ou HP) de celui ci que j’ai créés. Le problème (je suppose) est que de ce fait, il ne va me prendre en compte qu’un seul tarif (?).
→ Enfin, mais ça pour plus tard, je suis chez un fournisseur d’énergie qui me « Stocke » de manière virtuelle mon énergie produite en surplus et me la restitue (sur la facture) sur ma consommation réseau moyennant les taxes d’acheminement RTE par kW/h restitués. Çà peut s’apparenter a un « Pourcentage de taxe de revente » du genre je vends mon électricité non consommée au même prix que je l’achète, diminuée de ce pourcentage.
Pour faire cela, j’ai renseigné le « Prix de vente de l’énergie » avec mon compteur HC car ils me restituent HC en priorité (voir quasi tout le temps puisque je chargeait essentiellement la nuit mon véhicule) mais cela pourrait changer maintenant que je vais tirer directement sur la prod solaire.
Bref, savoir si à l’avenir tu va coder cette spécificité ou pas (?)
Voilà, je débute sur HA et SO, j’espère avoir été assez compréhensible dans mes explications
D’avance, merci
Salut à tous
Je viens de constater que ma grosse charge (CE de 3kW) c’est mis en route en même temps que mon autre chauffe eau de 1kW alors que ma production ne dépasse pas les 2kW et sachant que j’ai environ 180W de talon de conso
Voici les attributs de mon chauffe eau de 3kW
is_enabled: true
is_active: true
is_waiting: true
is_usable: false
can_change_power: false
current_power: 3000
requested_power: 3000
duration_sec: 60
duration_power_sec: 60
power_min: -1
power_max: 3000
next_date_available: "2025-05-13T08:10:01.418650+02:00"
next_date_available_power: "2025-05-11T18:24:01.488623+02:00"
battery_soc_threshold: 0
battery_soc: 0
device_name: ECS cave CHPT
friendly_name: Solar Optimizer-ECS cave CHPT Active
Je confirme n’avoir aucun autre source de déclenchement de cette charge d’active à ce moment là !
Merci d’avance
PS @Jean-Marc_Collin, je ne crois pas avoir eu de réponse à mon précédent message
Hello all,
Pour info, j’ai publié ce week-end une version beta qui prend en compte une gestion de priorité. Si ca vous intéresse, je l’ai testé avec succès et elle est dispo ici: Release 3.5.0.beta1 · jmcollin78/solar_optimizer · GitHub
(vous devez forcer la version sous HACS pour installer une version beta).
Lisez bien le README pour comprendre comment ça marche et à votre dispo si ce n’est pas clair.
Hello @Benj31 ,
C’est un input_select que j’ai créé spécialement pour mon cas d’usage ou je veux choisir le mode de charge de la voiture (manuel ou solaire). Ca fait doublon avec l’entité enable qui autorise SO a gérer la charge maintenant. Tu peux l’oublier je pense.
Non il faut que le input_number que tu donnes à SO soit à jour par rapport aux prix HC / HP et ce sera prix en compte dynamiquement. Mais entre nous, en HC (la nuit) y a pas de soleil donc c’est pas très utile. Ca peut l’être quand on aura des HC la journée, je crois que c’est en réflexion chez EDF.
Je n’ai rien besoin de faire à partir du moment ou ton input_number qui donne le prix est à jour avec le vrai prix.
Hello @yoyouri,
Je ne peux juste avec ces infos voir ce qui s’est passé. La config à l’air bonne. Il me faut des courbes : production / conso et équipements activés par SO (total power) pour y voir une incohérence.
Si tu parles de la priorisation, j’ai répondu juste au-dessus par la beta qui prend en compte la priorisation. Je veux bien ton retour sur son bon fonctionnement. Lis bien le README_fr pour comprendre comment ça marche.
Merci je vais tester ça, ça m’interresse bcp !!!
PS, il y a un $ de trop dans cette ligne : ($la)
- la priorisation d’équipements par rapport à d’autres peut dégrader l’optimisation de la consommation de la production solaire. Il est donc normal d’avoir du surplus non consommé si vous utilisez les priorités. Vous pouvez régler le dégré de prise en charge de $la priorité en réglant le poids de la priorité
Re,
il faut forcement la version HA 2025.5.1 ( qui est sorti il y a 4 jours ) ?
Salut @Jean-Marc_Collin
Voici les courbes demandés pour la période où j’ai constaté ce problème
La courbe de conso depuis le réseau pendant ce problème
Et là la courbe de puissance élec globale (si sup à zéro c’est que ça vient du réseau
N’y a t-il pas une vérif sur un laps de temps de la puissance disponible avant l’enclenchement d’une charge !
Super, je test ça dans les prochains jours
Encore merci
Oui elle est faite pour un système à jour. Tu peux y aller sans risque sur ha2025.05
Bonjour,
Voici un autre résultat de Solar Optimizer, ayant un système completement different, je ne peut pas avoir le type de graphique:
J’ai un mppt fonctionnant en courent continue , une batterie en courent continue et un onduleur Central transformant le courent continue en AC.
Ayant pas de contrat de revente, je n’exporte pas mes excédent solaire sur le réseau et donc si ma batterie est plein et que je manque de consommateur, ça arrête ou ça baisse ma production solaire de manière automatique
Sur le graph du haut :
- en jaune, ce que j’ai produit
- en bleu, ce que j’aurais put produire (simulation de production via un pyranometre qui me donne une valeur en W/m²)
Sur le graph du bas, les 5 équipements utiliser/activer par Solar Optimizer (a partir de 12h30-13h, eau chaude et il a fait suffisamment chaud dans la maison , donc plus de consommateur activer par Solar Optimizer)
Bonne journée
Excellent ! Merci pour le partage.
Y a des fournisseurs d’électricité qui font batterie virtuelle pour ton suprlus, une fois ta batterie chargée. Je ne sais pas si tu as regardé.
Salut @Jean-Marc_Collin
J’ai constaté encore aujourd’hui des surconsommation hors surplus et aussi bien le matin que le soir
Demain travaillant de mon domicile je pourrais constater potentiellement plus de chose ayant la possibilité d’être devant mon HA
Par contre a tu un idée de ce que tu aurais besoin de plus pour comprendre cette consommation hors surplus ?
Merci d’avance
En complément ce que je viens de constater en direct
J’ai un gros problème car les charges se mettent en route alors qu’il n’y a pas la puissance de disponible
Que faut-il faire ?
Tout désinstaller et réinstaller !
Activer le mode débug de l’extension puis partagé les logs
Ce ne serait pas lié au temps minimum de fonctionnement de tes appareils qui fait que les consommateurs se « chevauchent » ?
C’est une supposition, ce cas est peut être déjà géré dans SO