# Zendure et solution tierce

# Comment gérer au mieux la consommation electrique avec Zendure et une solution tierce

Je dispose sur mon toit d'une solution PV Qcell, elle produit au mieux 1600W au plus fort...

Ma consommation "habitation" est d'environ 450W.  
Ma consommation "loisir" (pompe piscine, climatisation, console de jeu, etc...) est d'environ de 1000W.

Avec ma solution existante QCells, la production des PV part donc directement dans la consommation de la maison !

J'ai donc décidé de voir ce qu'il etait possible de faire et je me suis orienté vers Zendure et ses solutions SolarFlow

J'ai donc commandé mon premier Kit SolarFlow 800 avec 2 PV de 520W.

L'avantage de ce kit est qu'il permet d'injecter directement sa production dans le réseau électrique de la maison.  
Biensur cela nécessite de respecter certaines normes.  
J'ai donc tiré une ligne dédiée à ce kit vers mon tableau électrique.

Ensuite c'est un jeu d'enfant, vous trouverez une intégration Zendure pour HA dans la liste HACS

[![image.png](https://docs.mistrallabs.fr/uploads/images/gallery/2026-02/scaled-1680-/3e0mxesMdrfA7ce4-image.png)](https://docs.mistrallabs.fr/uploads/images/gallery/2026-02/3e0mxesMdrfA7ce4-image.png)

Je m'etendrai pas sur sa configuration, mais une fois intégré à votre compte elle vous remonte vos équipements Zendure

[![image.png](https://docs.mistrallabs.fr/uploads/images/gallery/2026-02/scaled-1680-/cElwxZMYxh7RTTlO-image.png)](https://docs.mistrallabs.fr/uploads/images/gallery/2026-02/cElwxZMYxh7RTTlO-image.png)

L'autre solution est directement dans l'application mobile Zendure !

Elle propose de paramétrer un client MQTT sur chaque équipement :

[![Screenshot_20260209_221702_Zendure.jpg](https://docs.mistrallabs.fr/uploads/images/gallery/2026-02/scaled-1680-/qq3w1hjXsPPLGZ46-screenshot-20260209-221702-zendure.jpg) ](https://docs.mistrallabs.fr/uploads/images/gallery/2026-02/qq3w1hjXsPPLGZ46-screenshot-20260209-221702-zendure.jpg)[![Screenshot_20260209_221715_Zendure.jpg](https://docs.mistrallabs.fr/uploads/images/gallery/2026-02/scaled-1680-/jRjr9QLcX4sj9po1-screenshot-20260209-221715-zendure.jpg)](https://docs.mistrallabs.fr/uploads/images/gallery/2026-02/jRjr9QLcX4sj9po1-screenshot-20260209-221715-zendure.jpg)

Donc vous avez le choix de dépendre du cloud, ou alors être autonome, en local via MQTT.

NB : Zendure propose son propre systeme de suivis de la consommation mais malheureusement je ne peux pas le relier avec mon installation QCells.  
Il me fallait donc un "cerveau" pour optimiser au mieux la consommation.  
Home Assistant est ce cerveau et visiblement les petits gars de Zendure l'ont bien compris !

# Optimisation de la production

J'ai donc en production PV :   
\- Une installation existante "historique" Qcells   
\- Une installation Zendure SolarFlow 800 (Toit Veranda)  
\- Une installation Zendure SolarFlow 800 + AB2000 (Abri bois)

QCells suit la consommation de la maison via un compteur entre mon disjoncteur abonné et mon tableau.

Si ma production PV est supérieur à ce que consomme ma maison, le surplus est stocké dans sa batterie  
Si ma production PV est plus faible que ce que consomme ma maison, l'onduleur QCells va chercher à compenser en déchargeant sa batterie.

Autre chose, le système QCells se charge uniquement avec ses PV !  
Il n'est pas capable de se charger depuis l'EDF...

Donc pour conclure, je ne peux pas piloter l'installation QCells... mais je peux l'influencer ! Comment ?

Mes kits Zendure produisent et injectent directement dans le circuit de la maison.  
L'onduleur QCells voit donc une consommation plus faible de la maison et donc il va décider d'injecter moins de courant dans la maison en provenance de ses panneaux.  
Il injectera la quantité nécessaire, le reste sera stocké dans sa batterie !

OK, la première étape est fonctionnelle nativement !

C'est bien jolie ca mais si je produis plus que ce que je consomme?

Explication :  
PV QCells : 1000W de production  
PV Zendure Veranda : 500W de production  
Consommation maison : 600W

Le courant étant très faignant il va au plus proche !

Zendure couvrira 500W des 600W de la maison et Qcells couvrira les 100W restant, le reste 900W ira dans sa batterie.  
Ca c'est facile.

Maintenant ajoutons un second kit Zendure

PV QCells : 1000W de production  
PV Zendure Veranda : 500W de production  
PV Zendure Abri Bois : 500W de production  
Consommation maison : 600W

Les PV Zendure produisent donc 1000W et couvre la consommation de la maison (600W), 400W sont donc en trop !  
Les PV Qcells produisent 1000W et le besoin de la maison étant deja couvert, il stocke tout dans sa batterie.

Nous reste donc 400W en trop !

Il faut donc trouver un moyen de forcer le stockage de ce surplus dans la batterie du kit Zendure avec l'AB2000.

C'est la qu'Home Assistant rentre en jeu !

Je vais donc vérifier toutes les 30sec la consommation de la maison et ajuster l'injection dans la maison du Kit Zendure avec sa batterie.  
Explication :   
Si j'injecte du courant vers EDF (surproduction) alors je baisse la valeur qu'envoie le kit Zendure de 50W.

<p class="callout info">alias: Ajustement Zendure à la baisse  
description: ""  
triggers:  
 - trigger: time\_pattern  
 seconds: /30  
conditions:  
 - condition: state  
 entity\_id: sensor.linky\_current\_price  
 state:  
 - HEURE PLEINE  
 - condition: numeric\_state  
 entity\_id: sensor.qcells\_consommation\_reseau  
 below: -90  
actions:  
 - data:  
 value: &gt;  
 {{ \[ (states('sensor.sol\_bois\_output\_home\_power') | float - 50), 0 \] |  
 max }}  
 action: number.set\_value  
 target:  
 entity\_id: number.sol\_bois\_output\_limit  
mode: single  
</p>

Et inversement si je consomme trop d'EDF (plus de 300W), j'ajuste l'envoi du kit Zendure vers la maison :

<p class="callout info">  
alias: Ajustement Zendure a la hausse  
description: ""  
triggers:  
 - trigger: time\_pattern  
 seconds: /30  
conditions:  
 - condition: or  
 conditions: \[\]  
 enabled: false  
 - condition: and  
 conditions:  
 - condition: state  
 entity\_id: sensor.linky\_current\_price  
 state:  
 - HEURE PLEINE  
 - condition: or  
 conditions:  
 - condition: numeric\_state  
 entity\_id: sensor.qcells\_inverter\_production\_2  
 above: 100  
 - condition: state  
 entity\_id: sensor.qcells\_etat  
 state:  
 - Standby  
 - condition: and  
 conditions:  
 - condition: state  
 entity\_id: sensor.linky\_current\_price  
 state:  
 - HEURE PLEINE  
 - condition: or  
 conditions:  
 - condition: numeric\_state  
 entity\_id: sensor.qcells\_consommation\_reseau  
 above: 300  
 - condition: numeric\_state  
 entity\_id: sensor.qcells\_consommation\_reseau  
 below: 0  
 enabled: false  
actions:  
 - data:  
 value: &gt;  
 {{ \[ (states('sensor.sol\_bois\_output\_home\_power') | float + 50), 0 \] |  
 max }}  
 action: number.set\_value  
 target:  
 entity\_id: number.sol\_bois\_output\_limit  
mode: single  
  
</p>

Alors pourquoi ce seuil de 300W sur l'ajustement à la hausse ?

QCells étant directement réglé sur la consommation EDF via son compteur, il va s'adapter tout seul pour compenser la demande.  
Si cela ne suffit pas, Zendure prendra le relais avec Home Assistant.

Maintenant, comme j'ai prevu de charger ma batterie en Heure Creuse, je vais bloqué la décharge de la batterie Zendure lors que je vais passer des Heures Pleines aux Heures Creuses.

Et oui, si la batterie Zendure est à 50%, il serait dommage de continuer de la decharger en heures creuses pour la recharger ensuite...

Pour cela on fait l'automatisation suivante quand on passe des HP au HC !

<p class="callout info">alias: Zendure - Arret décharge en Heure Creuse  
description: ""  
triggers:  
 - trigger: state  
 entity\_id:  
 - sensor.linky\_current\_price  
 from:  
 - HEURE PLEINE  
 - HEURE CREUSE  
conditions:  
 - type: is\_battery\_level  
 condition: device  
 device\_id: 418e6ac1bef4a12c0d749944774359f1  
 entity\_id: 541529170ee1baaf8d9c14d5ea8269dc  
 domain: sensor  
 above: 10  
actions:  
 - device\_id: 70a4513924f81e4d371fa317f91a2c54  
 domain: number  
 entity\_id: d7663f5b3008dc8ca9a9734a89016bd8  
 type: set\_value  
 value: 0  
mode: single  
</p>

Enfin on va également faire en sorte de charger la batterie Zendure en heure creuse pour restituer en heure pleine !

Ici dans le Vaucluse (Villelaure) les HC sont de 21h50 à 4h50.

<p class="callout info">alias: Zendure - Activer Charge si HCreuse et Qcells vide  
description: &gt;  
 Change le mode de l'onduleur en 'Input mode' uniquement si tarif HC et Qcells  
 en Standby  
triggers:  
 - trigger: time\_pattern  
 minutes: /5  
conditions:  
 - condition: and  
 conditions:  
 - condition: time  
 after: "00:00:00"  
 before: "04:45:00"  
 - condition: state  
 entity\_id: sensor.linky\_current\_price  
 state: HEURE CREUSE  
 - condition: state  
 entity\_id: sensor.qcells\_etat  
 state: Standby  
actions:  
 - data:  
 option: input  
 action: select.select\_option  
 target:  
 entity\_id: select.sol\_bois\_ac\_mode  
 - device\_id: 418e6ac1bef4a12c0d749944774359f1  
 domain: number  
 entity\_id: 202a1b0adf36466ceca985036295d359  
 type: set\_value  
 value: 0  
 - device\_id: 418e6ac1bef4a12c0d749944774359f1  
 domain: number  
 entity\_id: 4cdc3d29b80f3ddd84c330bfd8805f51  
 type: set\_value  
 value: 600  
mode: single  
</p>

Donc avec Zendure, je viens fixer la charge à 600W entre 00h et 04h45.  
Cela permet de passer la batterie de 10% à 100% sans probleme.

Et puis quand on repasse en HP, on active la décharge

<p class="callout info">alias: Zendure - Passer en Output Mode quand HEURE PLEINE  
description: &gt;  
 Si le tarif Linky devient HEURE PLEINE, passer l'onduleur en Output Mode avec  
 les limites définies (input = 0, output = 350).  
triggers:  
 - entity\_id: sensor.linky\_current\_price  
 to: HEURE PLEINE  
 trigger: state  
conditions: \[\]  
actions:  
 - data:  
 option: output  
 action: select.select\_option  
 target:  
 entity\_id: select.sol\_bois\_ac\_mode  
 - data:  
 value: "0"  
 action: number.set\_value  
 target:  
 entity\_id: number.sol\_bois\_input\_limit  
 - data:  
 value: "600"  
 action: number.set\_value  
 target:  
 entity\_id: number.sol\_bois\_output\_limit  
mode: single  
</p>

Voici ce que cela donne sur une journée un peu ensoleillée :

[![image.png](https://docs.mistrallabs.fr/uploads/images/gallery/2026-02/scaled-1680-/qcNeoFvgzy2k0tbK-image.png)](https://docs.mistrallabs.fr/uploads/images/gallery/2026-02/qcNeoFvgzy2k0tbK-image.png)