Bonjour à tous.
Après avoir galéré a avoir une config nickel suite à l’installation d’un onduleur Deye et d’un pack de Batteries chez moi (et bien sur des panneaux PV), voici les correspondances nécessaire entre Solar Assistant (Connecté au Deye “avec” MQTT). Si ca aide du monde, c’est cool 
Voici ce que ca donne coté graphique :
Je suis en triphasé pour information.
Et voici le code:
Voir le code
type: custom:sunsynk-power-flow-card
cardstyle: lite
show_solar: true
battery:
energy: 30000 # Capacité totale de la batterie en Wh (30000 Wh = 30 kWh)
shutdown_soc: 20 # Seuil de SOC (%) pour état d’arrêt/alerte (affichage, calculs)
show_daily: true # Affiche les totaux journaliers (charge/décharge) de la batterie
solar:
show_daily: true # Affiche la production PV journalière
mppts: 3 # Nombre de trackers MPPT (PV1/PV2/PV3)
load:
show_daily: true # Affiche la consommation journalière (côté charge)
grid: # Section “Réseau”
show_daily_buy: true # Affiche l’énergie quotidienne importée du réseau
show_daily_sell: true # Affiche l’énergie quotidienne injectée vers le réseau
entities:
use_timer_248: false # État/commande “Use timer” (registre 248) ; false = désactivé (pas d’horaires forçants)
priority_load_243: switch.sunsynk_toggle_priority_load # Commutateur de “Priorité charges” (registre 243) pour l’onduleur
inverter_status_59: sensor.device_mode # Mode/état de l’onduleur (ex. normal, bypass, etc.) (registre 59)
grid_connected_status_194: binary_sensor.sunsynk_grid_connected_status # Connecté au réseau ou non (registre 194)
inverter_voltage_154: sensor.deye_sunsynk_sol_ark_3_phase_ac_output_voltage # Tension AC de sortie de l’onduleur (r154)
load_frequency_192: sensor.deye_sunsynk_sol_ark_3_phase_ac_output_frequency # Fréquence AC mesurée côté charge (r192)
inverter_current_164: ac_output_current # Courant AC de sortie total de l’onduleur (r164)
inverter_power_175: sensor.load_power # Puissance délivrée par l’onduleur vers la/les charges (r175)
battery_voltage_183: sensor.deye_sunsynk_sol_ark_3_phase_battery_voltage # Tension batterie (r183)
battery_soc_184: sensor.deye_sunsynk_sol_ark_3_phase_battery_state_of_charge # État de charge SOC (%) (r184)
battery_power_190: sensor.deye_sunsynk_sol_ark_3_phase_battery_power # Puissance batterie (+ = décharge, - = charge) (r190)
battery_current_191: sensor.deye_sunsynk_sol_ark_3_phase_battery_current # Courant batterie (r191)
battery_temp_182: sensor.deye_sunsynk_sol_ark_3_phase_battery_temperature # Température batterie (r182)
day_battery_charge_70: sensor.deye_sunsynk_sol_ark_3_phase_battery_energy_in # Énergie journalière chargée dans la batterie (r70)
day_battery_discharge_71: sensor.deye_sunsynk_sol_ark_3_phase_battery_energy_out # Énergie journalière déchargée de la batterie (r71)
grid_power_169: sensor.grid_power # Puissance instantanée au point de couplage réseau (import/export) (r169)
day_grid_import_76: sensor.deye_sunsynk_sol_ark_3_phase_grid_energy_in # Énergie journalière importée depuis le réseau (r76)
day_grid_export_77: sensor.deye_sunsynk_sol_ark_3_phase_grid_energy_out # Énergie journalière exportée vers le réseau (r77)
grid_ct_power_172: sensor.deye_sunsynk_sol_ark_3_phase_grid_power_1 # Puissance lue par la pince/CT réseau Phase 1 (r172)
grid_ct_power_L2: sensor.deye_sunsynk_sol_ark_3_phase_grid_power_2 # Puissance lue par la pince/CT réseau Phase 2
grid_ct_power_L3: sensor.deye_sunsynk_sol_ark_3_phase_grid_power_3 # Puissance lue par la pince/CT réseau Phase 3
day_load_energy_84: sensor.deye_sunsynk_sol_ark_3_phase_load_energy # Consommation journalière totale côté charge (r84)
load_power_L1: sensor.deye_sunsynk_sol_ark_3_phase_load_power_1 # Puissance charge sur la phase L1
load_power_L2: sensor.deye_sunsynk_sol_ark_3_phase_load_power_2 # Puissance charge sur la phase L2
load_power_L3: sensor.deye_sunsynk_sol_ark_3_phase_load_power_3 # Puissance charge sur la phase L3
essential_power: none # Entité pour “charges essentielles” ; none = non fournie (la carte l’infère si possible)
nonessential_power: none # Entité pour “charges non essentielles” ; none = non fournie (affecte l’affichage)
aux_power_166: sensor.auxiliary_pv_power # Puissance PV auxiliaire/secondaire (souvent PV via AUX) (r166)
pv_total: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_power # Total PV instantané (somme des strings/entrées AUX)
day_pv_energy_108: sensor.deye_sunsynk_sol_ark_3_phase_pv_energy # Énergie PV journalière (r108)
total_pv_generation: sensor.deye_sunsynk_sol_ark_3_phase_pv_energy # Total PV cumulé (ou journalière selon capteur) — doublon ici
pv1_power_186: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_power_1 # Puissance PV string 1 (r186)
pv2_power_187: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_power_2 # Puissance PV string 2 (r187)
pv3_power_188: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_power_3 # Puissance PV string 3 (r188)
pv1_voltage_109: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_voltage_1 # Tension PV string 1 (r109)
pv1_current_110: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_current_1 # Courant PV string 1 (r110)
pv2_voltage_111: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_voltage_2 # Tension PV string 2 (r111)
pv2_current_112: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_current_2 # Courant PV string 2 (r112)
pv3_voltage_113: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_voltage_3 # Tension PV string 3 (r113)
pv3_current_114: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_current_3 # Courant PV string 3 (r114)
inverter: # Options spécifiques à l’onduleur/au rendu de la carte
three_phase: true # Le système est triphasé (L1/L2/L3)
auto_scale: true # Mise à l’échelle automatique des jauges/flèches selon les puissances
autarky: power # Calcul de l’autarcie basé sur la puissance (vs énergie)
model: deye # Modèle d’onduleur (utilise les conventions Deye)
modern: true # Active le rendu “moderne” de la carte (visuel et interactions)
Petite mise à jour concernant le sens des flux…
Voir le code YAML
type: custom:sunsynk-power-flow-card
cardstyle: lite
show_solar: true
battery:
energy: 30000
shutdown_soc: 20
show_daily: true
invert_power: true
show_absolute: false
solar:
show_daily: true
mppts: 3
load:
show_daily: true
grid:
show_daily_buy: true
show_daily_sell: true
show_nonessential: true
entities:
use_timer_248: false
priority_load_243: switch.sunsynk_toggle_priority_load
inverter_status_59: sensor.device_mode
grid_connected_status_194: binary_sensor.sunsynk_grid_connected_status
inverter_voltage_154: sensor.deye_sunsynk_sol_ark_3_phase_ac_output_voltage
load_frequency_192: sensor.deye_sunsynk_sol_ark_3_phase_ac_output_frequency
inverter_current_164: ac_output_current
inverter_power_175: sensor.load_power
battery_voltage_183: sensor.deye_sunsynk_sol_ark_3_phase_battery_voltage
battery_soc_184: sensor.deye_sunsynk_sol_ark_3_phase_battery_state_of_charge
battery_power_190: sensor.deye_sunsynk_sol_ark_3_phase_battery_power
battery_current_191: sensor.deye_sunsynk_sol_ark_3_phase_battery_current
battery_temp_182: sensor.deye_sunsynk_sol_ark_3_phase_battery_temperature
day_battery_charge_70: sensor.deye_sunsynk_sol_ark_3_phase_battery_energy_in
day_battery_discharge_71: sensor.deye_sunsynk_sol_ark_3_phase_battery_energy_out
grid_power_169: sensor.grid_power
day_grid_import_76: sensor.deye_sunsynk_sol_ark_3_phase_grid_energy_in
day_grid_export_77: sensor.deye_sunsynk_sol_ark_3_phase_grid_energy_out
grid_ct_power_172: sensor.deye_sunsynk_sol_ark_3_phase_grid_power_1
grid_ct_power_L2: sensor.deye_sunsynk_sol_ark_3_phase_grid_power_2
grid_ct_power_L3: sensor.deye_sunsynk_sol_ark_3_phase_grid_power_3
day_load_energy_84: sensor.deye_sunsynk_sol_ark_3_phase_load_energy
load_power_L1: sensor.deye_sunsynk_sol_ark_3_phase_load_power_1
load_power_L2: sensor.deye_sunsynk_sol_ark_3_phase_load_power_2
load_power_L3: sensor.deye_sunsynk_sol_ark_3_phase_load_power_3
essential_power: none
nonessential_power: none
aux_power_166: sensor.auxiliary_pv_power
pv_total: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_power
day_pv_energy_108: sensor.deye_sunsynk_sol_ark_3_phase_pv_energy
total_pv_generation: sensor.deye_sunsynk_sol_ark_3_phase_pv_energy
pv1_power_186: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_power_1
pv2_power_187: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_power_2
pv3_power_188: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_power_3
pv1_voltage_109: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_voltage_1
pv1_current_110: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_current_1
pv2_voltage_111: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_voltage_2
pv2_current_112: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_current_2
pv3_voltage_113: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_voltage_3
pv3_current_114: sensor.deye_sunsynk_sol_ark_3_phase_auxiliary_pv_current_3
inverter:
three_phase: true
auto_scale: true
autarky: power
model: deye
modern: true
battery2:
invert_power: true
card_mod:
style: |
/* Fond crème + suppression totale des bordures noires */
:host {
--ha-card-border-width: 0;
--ha-card-border-color: transparent;
--ha-card-box-shadow: none;
}
ha-card {
border: none !important;
border-radius: 18px;
padding: 14px 14px 10px;
background: #fdfcf7; /* blanc crème */
color: #111; /* texte lisible sur fond clair */
box-shadow: 0 6px 18px rgba(0,0,0,0.10); /* ombre douce */
}
/* Optionnel : adoucir tout éventuel séparateur interne */
ha-card * {
border-color: transparent !important;
box-shadow: none;
}
Salut.
Ton interface est vraiment pas mal.
Quel est le modèle de ton onduleur DEYE ?
Solar Assistant ne te sert que a visualiser les flux ou peut tu commander le DEYE, pour gérer le 0 injection par exemple.
Bonsoir @Reinald ,
Désolé du temps de réponse.
C’est un Tri en 18Kw, je n’ai pas le modèle exacte mais oui, solar Assistant me permet de visualiser (pas tout :() et de piloter le deye (Via MQTT).
Concernant la charge, j’y suis depuis plusieurs mois. Ce n’est pas facile mais j’approche du but. Pas simple à pilote la bete…
Quand tu parle le Zero injection, c’est pour garder et stocker la prod des PV dans tes batteries?
La partie pilotage du DEYE m’intéresse beaucoup. J’aimerais savoir si tu parviens à modifier les horaires ainsi que les seuils minimum de batterie dans le mode « Time Of Use ».
L’idée serait de pouvoir effectuer une charge à 100% une fois par semaine afin de préserver le pack batterie durant l’hiver. J’aimerais également pouvoir ajuster le seuil minimum en fonction des prévisions de production du jour, dans le but d’optimiser à la fois la durée de vie du parc batterie (le plus souvent proche de 50%) et son utilisation (utilisation de la capacité maximale).
J’avoue ne pas m’être encore penché sur Solar Assistant, il va falloir visiblement. De base je pensais interfacer mon futur Deye en Modbus.
Salar assistant etait “vendu” avec le deye, je l’utilise du coup.
Ce que tu veux faire, je l’ai fait. Je recharge en heure creuse. La batterie oscille entre 20% et 50/60% suivant les jour et 100% quand il y a du soleil. Voici mon code (Merci le chat, GPT
, il aide beaucoup mais pas encore assez lol ):
alias: Deye — Charge HC (30% → cible + relance -10%)
description: >
Charge réseau en heures creuses selon le jour : - Week-end (samedi, dimanche)
: cible 60 % - Semaine (lundi à vendredi) : cible 50 % Logique : - démarre si
SoC < 30 % en HC, - coupe quand le SoC atteint la cible, - si la charge
s'arrête avant la cible, la relance, - si la cible a été atteinte et que le
SoC retombe 10 points plus bas
avant la fin des HC, relance une charge,
- hors HC, remet tout dans l'état normal et réinitialise le flag. Après toute
charge nocturne, UseTimer reste OFF jusqu'à la fin des HC.
triggers:
- trigger: time_pattern
minutes: /1
- trigger: homeassistant
event: start
- trigger: state
entity_id: sensor.deye_sunsynk_sol_ark_3_phase_battery_state_of_charge
- trigger: state
entity_id:
- select.deye_sunsynk_sol_ark_3_phase_grid_charge
- switch.deye_sunsynk_sol_ark_3_phase_grid_charge_point_1
- switch.deye_sunsynk_sol_ark_3_phase_grid_charge_point_2
- switch.deye_sunsynk_sol_ark_3_phase_grid_charge_point_3
- switch.deye_sunsynk_sol_ark_3_phase_use_timer
conditions: []
actions:
- choose:
- conditions:
- condition: time
after: "00:06:00"
before: "07:46:00"
- condition: template
value_template: >
{% set soc =
states('sensor.deye_sunsynk_sol_ark_3_phase_battery_state_of_charge')|float(0)
%} {% set wd = now().weekday() %} {% set weekend = wd in [5, 6] %}
{% set target = 60 if weekend else 50 %} {{ soc >= target }}
sequence:
- action: select.select_option
data:
option: Disabled
target:
entity_id: select.deye_sunsynk_sol_ark_3_phase_grid_charge
- delay: "00:00:15"
- action: switch.turn_off
target:
entity_id: switch.deye_sunsynk_sol_ark_3_phase_use_timer
- delay: "00:00:15"
- action: switch.turn_off
target:
entity_id:
- switch.deye_sunsynk_sol_ark_3_phase_grid_charge_point_1
- switch.deye_sunsynk_sol_ark_3_phase_grid_charge_point_2
- switch.deye_sunsynk_sol_ark_3_phase_grid_charge_point_3
- action: input_boolean.turn_on
target:
entity_id: input_boolean.deye_hc_60_atteint
- conditions:
- condition: time
after: "00:06:00"
before: "07:46:00"
- condition: template
value_template: >
{% set soc =
states('sensor.deye_sunsynk_sol_ark_3_phase_battery_state_of_charge')|float(0)
%} {% set wd = now().weekday() %} {% set weekend = wd in [5, 6] %}
{% set target = 60 if weekend else 50 %} {% set relaunch = target
- 10 %} {% set flag =
is_state('input_boolean.deye_hc_60_atteint','on') %}
{% set grid =
states('select.deye_sunsynk_sol_ark_3_phase_grid_charge') %} {%
set use_timer_on =
is_state('switch.deye_sunsynk_sol_ark_3_phase_use_timer','on') %}
{% set p1 =
is_state('switch.deye_sunsynk_sol_ark_3_phase_grid_charge_point_1','on')
%} {% set p2 =
is_state('switch.deye_sunsynk_sol_ark_3_phase_grid_charge_point_2','on')
%} {% set p3 =
is_state('switch.deye_sunsynk_sol_ark_3_phase_grid_charge_point_3','on')
%}
{% set currently_charging = (grid == 'Enabled' and not
use_timer_on and p1 and p2 and p3) %}
{{ (not currently_charging)
and (
soc < 30
or (not flag and soc < target)
or (flag and soc < relaunch)
)
}}
sequence:
- action: switch.turn_on
target:
entity_id:
- switch.deye_sunsynk_sol_ark_3_phase_grid_charge_point_1
- switch.deye_sunsynk_sol_ark_3_phase_grid_charge_point_2
- switch.deye_sunsynk_sol_ark_3_phase_grid_charge_point_3
- delay: "00:00:15"
- action: switch.turn_off
target:
entity_id: switch.deye_sunsynk_sol_ark_3_phase_use_timer
- delay: "00:00:15"
- action: select.select_option
target:
entity_id: select.deye_sunsynk_sol_ark_3_phase_grid_charge
data:
option: Enabled
- conditions:
- condition: or
conditions:
- condition: time
before: "00:06:00"
- condition: time
after: "07:46:00"
sequence:
- action: select.select_option
data:
option: Disabled
target:
entity_id: select.deye_sunsynk_sol_ark_3_phase_grid_charge
- delay: "00:00:15"
- action: switch.turn_on
target:
entity_id: switch.deye_sunsynk_sol_ark_3_phase_use_timer
- delay: "00:00:15"
- action: switch.turn_off
target:
entity_id:
- switch.deye_sunsynk_sol_ark_3_phase_grid_charge_point_1
- switch.deye_sunsynk_sol_ark_3_phase_grid_charge_point_2
- switch.deye_sunsynk_sol_ark_3_phase_grid_charge_point_3
- action: input_boolean.turn_off
target:
entity_id: input_boolean.deye_hc_60_atteint
mode: restart
Petite subtilité, les ordres de démarrage et d’arret de charge doivent prendre leur temps et il faut vérifier l’etat de temps en temps. Je ne sais pas si ca vient du SolarAssistant ou pas.
Il faudrai que quelqu’un puisse nous dire si c’est pas plus stable en direct (ModBus)
Autre point, j’ai des PV avec micro onduleurs et une chaine de PV sans, le deye sait les distinguer mais pas SA…