Je viens de faire quelques tests, vite fait, et cela semble pouvoir fonctionner pour 2 H2K, Il faut juste supprimer le mode grappe (cluster) dans l’application.
Je n’ai pas encore testé le mode intelligent avec tes automatisations, dans les jours à venir je pense.
Mais la charge, décharge indépendante de chaque H2K est possible déjà.
Je tiendrai informé sur ce topic.
Ah ouais sympas tes évolutions, je suis partie dans une trajectoire totalement différente de côté
Mais au final, on a le même truc globalement, mais tes configs sont beaucoup plus propres que les miennes !
Bonjour Julien
j’avance lentement, parce que, jai des erreurs. peux tu me renseigner, j’ai beau reprendre ton tuto , je n’identifie pas dans l’automation « charge » le sensor « number.iobroker_zendure_p_limite_entree_zendure ». tu peux m’éclairer ?
Bonjour,
le sensor « number.iobroker_zendure_p_limite_entree_zendure » correspond au control MQTT de la puissance d’entrée de l’hyper. Celui-ci :
- name: "P Limite Entrée AC"
unique_id: "Hyper2000_setInputLimit"
state_topic: "zendure-solarflow/0/xxxxxx/yyyyyyyy/control/setInputLimit"
command_topic: "zendure-solarflow/0/xxxxxx/yyyyyyyy/control/setInputLimit/set"
value_template: >
{{ int(value, 0) }}
min: 0
max: 1200
step: 5
mode: box
unit_of_measurement: "W"
icon: "mdi:home-plus"
Bonjour,
Une question a ceux qui ont mis en place le iobroker, vous êtes à quelle version ?
Je suis en 1.10.0 alors que sur le github il devrait-être en 1.10.6
Mais peut être est-ce normal.
Hello,
tout d’abord un grand merci à @Julien_Galliot pour le tuto est les automatisations
pour ioBroker, la 1.10.0 est la dernière version stable, la 1.10.6 est sur le dépôt beta.
A+
Hello @Julien_Galliot,
J’ai regardé l’automatisation de Décharge pour le problème de limitation de la puissance et je penses avoir corrigé le problème, j’ai également déplacé le code redondant des choix suivant la puissance à compenser à la fin des choix
alias: Zendure - Décharge AC
description: ""
triggers:
- trigger: time_pattern
seconds: /10
conditions: []
actions:
- if:
- condition: device
device_id: 8380f796ee4d748c326e7ae2b055d6cd
domain: select
entity_id: 783c076b0ca3e78ce50139bc39425e8a
type: selected_option
option: "2"
then:
- if:
- condition: numeric_state
entity_id: sensor.niveau_batterie_zendure
above: 15
then:
- choose:
- conditions:
- condition: numeric_state
entity_id: sensor.shellypro3em_a0dd6ca18868_phase_c_active_power
above: 50
below: 200
sequence:
- action: input_number.increment
metadata: {}
data: {}
target:
entity_id: input_number.zendure_consigne_decharge_ac
- conditions:
- condition: numeric_state
entity_id: sensor.shellypro3em_a0dd6ca18868_phase_c_active_power
above: 200
below: 500
sequence:
- repeat:
count: 2
sequence:
- action: input_number.increment
metadata: {}
data: {}
target:
entity_id: input_number.zendure_consigne_decharge_ac
- conditions:
- condition: numeric_state
entity_id: sensor.shellypro3em_a0dd6ca18868_phase_c_active_power
above: 500
sequence:
- repeat:
count: 4
sequence:
- action: input_number.increment
metadata: {}
data: {}
target:
entity_id: input_number.zendure_consigne_decharge_ac
- conditions:
- condition: numeric_state
entity_id: sensor.shellypro3em_a0dd6ca18868_phase_c_active_power
below: 0
above: -200
sequence:
- action: input_number.decrement
metadata: {}
data: {}
target:
entity_id: input_number.zendure_consigne_decharge_ac
- conditions:
- condition: numeric_state
entity_id: sensor.shellypro3em_a0dd6ca18868_phase_c_active_power
below: -200
above: -500
sequence:
- repeat:
count: 2
sequence:
- action: input_number.decrement
metadata: {}
data: {}
target:
entity_id: input_number.zendure_consigne_decharge_ac
- conditions:
- condition: numeric_state
entity_id: sensor.shellypro3em_a0dd6ca18868_phase_c_active_power
below: -500
sequence:
- repeat:
count: 4
sequence:
- action: input_number.decrement
metadata: {}
data: {}
target:
entity_id: input_number.zendure_consigne_decharge_ac
- if:
- condition: numeric_state
entity_id: input_number.zendure_consigne_decharge_ac
above: input_number.zendure_p_limite_sortie_ac
then:
- action: input_number.set_value
target:
entity_id: input_number.zendure_consigne_decharge_ac
data:
value: "{{ states('input_number.zendure_p_limite_sortie_ac') }}"
- action: number.set_value
target:
entity_id: number.iobroker_zendure_puissance_decharge_max
data:
value: "{{ states('input_number.zendure_consigne_decharge_ac') }}"
else:
- action: input_number.set_value
metadata: {}
data:
value: 0
target:
entity_id: input_number.zendure_consigne_decharge_ac
- delay:
hours: 0
minutes: 0
seconds: 2
milliseconds: 0
- action: number.set_value
target:
entity_id: number.iobroker_zendure_puissance_decharge_max
data:
value: "{{ states('input_number.zendure_consigne_decharge_ac') }}"
else:
- device_id: 8380f796ee4d748c326e7ae2b055d6cd
domain: select
entity_id: 783c076b0ca3e78ce50139bc39425e8a
type: select_option
option: "2"
mode: single
Pour faire simple avec les choix :
- on incrémente ou décrémente plus ou moins la consigne
- on vérifie que la consigne n’est pas supérieure au max défini, si supérieur on met la limite dans la consigne
- on affecte la consigne à la puissance de décharge de la batterie
A+
Salut, tiens ben justement j’ai également sorti la partie redondante du code à la fin du choix pas plus tard que hier! J’avais vu il y a quelques jours que je pouvais simplifier le code. Par contre j’ai pas vérifié encore si ça règle le problème de la limitation.
Ce qui corrige entre autre le problème de gestion de la valeur limite c’est le test de dépassement, dans ta version tu compares la valeur actuellement sur la batterie avec la limite et dans ma version je compare la valeur de la consigne avec la limite avant de l’appliquer à la batterie.
Dans l’automatisation pour la gestion du mode on peux également sortir des conditions les désactivations des 3 automatisations (charge, décharge, intelligent) pour les mettre juste avant.
Gestion de mode
description: ""
triggers:
- trigger: state
entity_id:
- input_select.mode_batterie_zendure
conditions: []
actions:
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.zendure_mode_intelligent
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.zendure_decharge_ac
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.zendure_charge_ac
- choose:
- conditions:
- condition: state
entity_id: input_select.mode_batterie_zendure
state: Charge
sequence:
- device_id: 8380f796ee4d748c326e7ae2b055d6cd
domain: number
entity_id: c1245cb122428ce8fdefa29721a5b1b1
type: set_value
value: 0
- device_id: 8380f796ee4d748c326e7ae2b055d6cd
domain: select
entity_id: 783c076b0ca3e78ce50139bc39425e8a
type: select_option
option: "1"
- conditions:
- condition: state
entity_id: input_select.mode_batterie_zendure
state: Décharge
sequence:
- device_id: 8380f796ee4d748c326e7ae2b055d6cd
domain: number
entity_id: d86b1d83416884e826a794ac45126102
type: set_value
value: 0
- device_id: 8380f796ee4d748c326e7ae2b055d6cd
domain: select
entity_id: 783c076b0ca3e78ce50139bc39425e8a
type: select_option
option: "2"
- conditions:
- condition: state
entity_id: input_select.mode_batterie_zendure
state: Automatique
sequence:
- device_id: 8380f796ee4d748c326e7ae2b055d6cd
domain: number
entity_id: d86b1d83416884e826a794ac45126102
type: set_value
value: 0
- device_id: 8380f796ee4d748c326e7ae2b055d6cd
domain: number
entity_id: c1245cb122428ce8fdefa29721a5b1b1
type: set_value
value: 0
- device_id: 8380f796ee4d748c326e7ae2b055d6cd
domain: select
entity_id: 783c076b0ca3e78ce50139bc39425e8a
type: select_option
option: "0"
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id: automation.zendure_mode_intelligent
- if:
- condition: numeric_state
entity_id: sensor.surplus_pv
above: 0
then:
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id: automation.zendure_charge_ac
else:
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id: automation.zendure_decharge_ac
mode: single
Bonjour, effectivement je comparais pas les bonne choses! C’est corrigé de mon côté, merci pour le débug. Je me suis laissé cette possibilité de brider l’hyper en sortie mais pour l’instant je ne l’utilise pas. J’utilise surtout les limites basses et haute de charge. La limite basse est très intéressante pour charger dans la plage ou l’efficacité de la conversion ac/DC commence a être bonne (>90%). D’après mes essais 500w de consigne de charge minimum est un bon compromis.
Bonjour Julien,
Tu aurais le code de ces tableaux de bord stp ? Car les noms des capteurs, sensors … changent du tuto aux screens
J’ai fini d’adapter toutes les automatisations et je souhaite le mettre en forme sur ton exemple (pour tester sur cette base).
De plus, juste par curiosité, ta prise connectée sur le hyper c’est pour ? En cas de calibration un jour rouge ?
Merci d’avance.
Salut,
Voilà mes 3 dashboards en yaml :
type: entities
entities:
- entity: input_select.mode_batterie_zendure
- entity: sensor.niveau_batterie_zendure
- entity: sensor.iobroker_zendure_ac_mode
- entity: sensor.iobroker_zendure_etat_batterie
- entity: sensor.iobroker_zendure_temperature_zendure
title: Mode et états
type: entities
entities:
- entity: input_boolean.charge_batterie_zendure
secondary_info: last-changed
icon: mdi:battery-arrow-up
- entity: input_number.zendure_p_limite_entree_ac
- entity: input_number.limite_min_entree_ac
- entity: input_number.zendure_seuil_charge_ac
- entity: number.iobroker_zendure_p_limite_entree_zendure
- entity: sensor.iobroker_zendure_puissance_reseau_zendure
- entity: sensor.iobroker_zendure_energie_soutiree_zendure
- entity: sensor.consigne_charge_ac
secondary_info: none
icon: ""
title: Charge
type: entities
entities:
- entity: input_boolean.decharge_batterie_zendure
- entity: input_number.zendure_p_limite_sortie_ac
- entity: number.iobroker_zendure_p_limite_sortie_zendure
- entity: sensor.iobroker_zendure_p_sortie_ac
- entity: sensor.iobroker_zendure_energie_sortie_batterie
- entity: input_number.zendure_consigne_decharge_ac
title: Décharge
La prise connectée, c’était pour faire des essais et mesures au début, elle n’existe plus.
Bonne continuation pour tes tests!
Petite modification du jour, je suis passé sur des pas de 25W pour la décharge, pour une meilleur précision et coller un peu mieux au besoin de la maison :
Ainsi je suis passé à 8 choix au lieu de 6 avec :
- Seuil de 50W abaissé à 25W
- Nouveaux seuils à 100W et -100W
- Incrémentation de 1/2/4/8 pas (fonction « répéter ») pour les choix 1 à 4
- Décrémentation de 1/2/4/8 pas (fonction « répéter ») pour les choix 5 à 8
Avec cette modification, j’arrive à une correspondance à la courbe supérieure à 90%. Ca pouvait être sensiblement moins lorsque la maison consommait peu, sur le talon par exemple, avec le pas de 50.
Merci encore.
D’où vient le input_boolean.charge_batterie_zendure d’un coup sur ton dashboard ? Je ne le vois créer nulle part … (idem pour sensor.iobroker_zendure_puissance_reseau_zendure et sensor.iobroker_zendure_energie_soutiree_zendure par exemple mais j’ai compris que cela devait être sensor.iobroker_zendure_p_sortie_ac et sensor.iobroker_zendure_p_entree_ac).
Je sais que c’est énormément de temps ce que tu as fait et merci, mais si tu en as la possibilité, est-il possible que tu puisses modifier ou résumer les noms entités, sensors, etc modifiés ? Car du début à la fin, cela change et malgré mes interpolations… parfois je suis perdu (je ne dois pas être le seul).
Encore merci pour tout le taf fait.
Bonjour,
Effectivement souvent la difficulté dans HA c’est qu’on créé des sensors en yaml avec des sensor id compliqués (exemple : sensor.iobroker_zendure_puissance_reseau_zendure) mais ensuite dans l’UI pour les dashboards on va utiliser des noms plus courts (sinon ça rentre pas) et plus parlant (« P Entrée AC » pour le même exemple cité plus haut).
Pour la correspondance entre les yaml et les dashboards, je les redonne dans le même post si ça peut aider. L’ordre des yaml correspond à l’ordre dans les dashboards :
type: entities
entities:
- entity: input_select.mode_batterie_zendure
- entity: sensor.niveau_batterie_zendure
- entity: sensor.iobroker_zendure_ac_mode
- entity: sensor.iobroker_zendure_etat_batterie
- entity: sensor.iobroker_zendure_temperature_zendure
title: Mode et états
type: entities
entities:
- entity: input_boolean.charge_batterie_zendure
secondary_info: last-changed
icon: mdi:battery-arrow-up
- entity: input_number.zendure_p_limite_entree_ac
- entity: input_number.limite_min_entree_ac
- entity: input_number.zendure_seuil_charge_ac
- entity: number.iobroker_zendure_p_limite_entree_zendure
- entity: sensor.iobroker_zendure_puissance_reseau_zendure
- entity: sensor.iobroker_zendure_energie_soutiree_zendure
- entity: sensor.consigne_charge_ac
secondary_info: none
icon: ""
title: Charge
type: entities
entities:
- entity: input_boolean.decharge_batterie_zendure
- entity: input_number.zendure_p_limite_sortie_ac
- entity: input_number.limite_min_sortie_ac
- entity: number.iobroker_zendure_p_limite_sortie_zendure
- entity: sensor.iobroker_zendure_p_sortie_ac
- entity: sensor.iobroker_zendure_energie_sortie_batterie
- entity: input_number.zendure_consigne_decharge_ac
title: Décharge
Super, merci. Et pour input_boolean.charge_batterie_zendure et input_boolean.decharge_batterie_zendure tu les as créés quand et cela active quoi (une automatisation je pense) ?
Ah non j’ai ajouté ça dans mes automatismes pour savoir quand HA envoie une consigne de charge ou de décharge à la batterie. Interrupteur à 1 si une consigne a été envoyée, à 0 si pas de consigne.
J’ai eu quelque fois l’instance mqtt d’iobroker qui se mettait en défaut, avec besoin de redémarrer le broker, et dans ce cas HA envoyait des consignes qui n’arrivaient pas jusqu’au système zendure. Rien d’alarmant (ce n’est pas récurrent) mais toujours embêtant quand ça arrive, j’ai bien perdu une ou deux journée de stockage comme ça.
Donc pour commencer j’ai installer l’intégration Proxmox qui me permet de redémarrer à distance ma VM windows sur laquelle tourne iobroker depuis HA (c’est très pratique), et l’étape suivant est de créer un automatisme qui surveillera que tout fonctionne bien, que les publications MQTT passent bien en particulier, qui me notifiera et rédémarrera iobroker automatiquement en cas de problème. D’où ces 2 nouveaux binary sensor que j’ai créé.
Aussi tu remarquera en nouveauté que j’ai ajouté une limite basse de décharge (comme je l’avais déjà fait pour la charge) car je veux éviter de décharger à faible puissance car trop de perte. De manière générale, il faudrait idéalement charger à partir de 450W et décharger à partir de 350W pour avoir moins de 10% de perte sur chaque conversion soit un rendement AC/DC/AC de l’ordre de 80%.
Les graphiques suivants montrent bien qu’il n’est pas rentable de charger ou décharger à très faible puissance :
Pour ma configuration j’ai une limite basse de charge à 450W et une limite basse de décharge à 200W (car j’ai un talon de conso très bas et je veux le compenser à minima), donc je suis plutôt entre 75% et 80% de rendement sur un cycle complet de batterie.
Bonjour à tous,
Pour ceux qui voudraient mettre en place la solution proposée par @Julien_Galliot sans trop se prendre la tête, j’ai mis sous forme de packages tout le nécessaire.
- Créer un dossier
packages
dans le dossier de configuration de HA - Dans le fichier
configuration.yaml
ajouter dans la sectionhomeassistant
:
packages: !include_dir_named packages
- Créer un fichier
zendure-entities.yaml
dans le dossierpackages
avec comme contenu :
Le code est prévu pour l’hyper2k et 4 batteries, commenter les batteries non utilisées au besoin (lignes 168 à 408, 5 entités par batterie)
Faire les modifications indiquées au début du fichier
zendure_entities.yaml
############################################################
## MQTT HYPER 2000 - Package - entities ##
############################################################
############################################################
## MODIFICATIONS NECESSAIRES ##
## ##
## remplacer gxxxxx/Rxxxxxxx par les ids de MQTT ##
## ##
## remplacer les numéros de série des Batteries ##
## batterie 1 : CO4FHMHDMxxxxx1 ##
## batterie 2 : CO4FHMHDMxxxxx2 ##
## batterie 3 : CO4FHMHDMxxxxx3 ##
## batterie 3 : CO4FHMHDMxxxxx4 ##
## ##
############################################################
mqtt:
- sensor:
- name: "Niveau Batteries"
unique_id: "iobroker_hyper_2000_niveau_batteries"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/electricLevel
value_template: '{{ value }}'
unit_of_measurement: "%"
device_class: "battery"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Temps de charge restant"
unique_id: "iobroker_hyper_2000_charge_restant"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/remainInputTime
value_template: "{{ value }}"
device_class: "duration"
unit_of_measurement: "min"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Temps de décharge restant"
unique_id: "iobroker_hyper_2000_decharge_restant"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/remainOutTime
value_template: "{{ value }}"
device_class: "duration"
unit_of_measurement: "min"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Charge maxi"
unique_id: "iobroker_hyper_2000_charge_maxi"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/socSet
unit_of_measurement: "%"
value_template: "{{ value }}"
icon: "mdi:battery-high"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Charge mini"
unique_id: "iobroker_hyper_2000_charge_mini"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/minSoc
unit_of_measurement: "%"
value_template: "{{ value }}"
icon: "mdi:battery-low"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Puissance de sortie max"
unique_id: "iobroker_hyper_2000_puissance_sortie_max"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/outputLimit
value_template: "{{ value }}"
unit_of_measurement: "W"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Puissance solaire"
unique_id: "iobroker_hyper_2000_puissance solaire"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/solarInputPower
unit_of_measurement: "W"
device_class: "power"
value_template: "{{ value }}"
state_class: "measurement"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Puissance décharge batteries"
unique_id: "iobroker_hyper_2000_puissance_decharge_batteries"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packInputPower
unit_of_measurement: "W"
device_class: "power"
value_template: "{{ value }}"
state_class: "measurement"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Puissance charge batteries"
unique_id: "iobroker_hyper_2000_puissance_charge_batteries"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/outputPackPower
unit_of_measurement: "W"
device_class: "power"
value_template: "{{ value }}"
state_class: "measurement"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Consommation maison"
unique_id: "iobroker_hyper_2000_conso_maison"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/outputHomePower
unit_of_measurement: "W"
device_class: "power"
value_template: "{{ value }}"
state_class: "measurement"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Puissance solaire 1"
unique_id: "iobroker_hyper_2000_puissance_solaire_1"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/pvPower1
value_template: "{{ value }}"
unit_of_measurement: "W"
device_class: "power"
state_class: "measurement"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Puissance solaire 2"
unique_id: "iobroker_hyper_2000_puissance_solaire_2"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/pvPower2
value_template: "{{ value }}"
unit_of_measurement: "W"
device_class: "power"
state_class: "measurement"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Temp. max batterie 1"
unique_id: "iobroker_hyper_2000_temp_max_batterie_1"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx1/maxTemp
value_template: "{{ value }}"
unit_of_measurement: "°C"
device_class: "temperature"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Niveau batterie 1"
unique_id: "iobroker_hyper_2000_niveau_batterie_1"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx1/socLevel
value_template: "{{ value }}"
unit_of_measurement: "%"
device_class: "battery"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Tens. max batterie 1"
unique_id: "iobroker_hyper_2000_tens_max_batterie_1"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx1/maxVol
value_template: "{{ value }}"
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Tens. min batterie 1"
unique_id: "iobroker_hyper_2000_tens_min_batterie_1"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx1/minVol
value_template: "{{ value }}"
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Tens. batterie 1"
unique_id: "iobroker_hyper_2000_tens_batterie_1"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx1/totalVol
value_template: "{{ value }}"
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Temp. max batterie 2"
unique_id: "iobroker_hyper_2000_temp_max_batterie_2"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx2/maxTemp
value_template: "{{ value }}"
unit_of_measurement: "°C"
device_class: "temperature"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Niveau batterie 2"
unique_id: "iobroker_hyper_2000_niveau_batterie_2"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx2/socLevel
value_template: "{{ value }}"
unit_of_measurement: "%"
device_class: "battery"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Tens. max batterie 2"
unique_id: "iobroker_hyper_2000_tens_max_batterie_2"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx2/maxVol
value_template: "{{ value }}"
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Tens. min batterie 2"
unique_id: "iobroker_hyper_2000_tens_min_batterie_2"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx2/minVol
value_template: "{{ value }}"
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Tens. batterie 2"
unique_id: "iobroker_hyper_2000_tens_batterie_2"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx2/totalVol
value_template: "{{ value }}"
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Temp. max batterie 3"
unique_id: "iobroker_hyper_2000_temp_max_batterie_3"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx3/maxTemp
value_template: "{{ value }}"
unit_of_measurement: "°C"
device_class: "temperature"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Niveau batterie 3"
unique_id: "iobroker_hyper_2000_niveau_batterie_3"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx3/socLevel
value_template: "{{ value }}"
unit_of_measurement: "%"
device_class: "battery"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Tens. max batterie 3"
unique_id: "iobroker_hyper_2000_tens_max_batterie_3"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx3/maxVol
value_template: "{{ value }}"
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Tens. min batterie 3"
unique_id: "iobroker_hyper_2000_tens_min_batterie_3"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx3/minVol
value_template: "{{ value }}"
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Tens. batterie 3"
unique_id: "iobroker_hyper_2000_tens_batterie_3"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx3/totalVol
value_template: "{{ value }}"
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Temp. max batterie 4"
unique_id: "iobroker_hyper_2000_temp_max_batterie_4"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx4/maxTemp
value_template: "{{ value }}"
unit_of_measurement: "°C"
device_class: "temperature"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Niveau batterie 4"
unique_id: "iobroker_hyper_2000_niveau_batterie_4"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx4/socLevel
value_template: "{{ value }}"
unit_of_measurement: "%"
device_class: "battery"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Tens. max batterie 4"
unique_id: "iobroker_hyper_2000_tens_max_batterie_4"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx4/maxVol
value_template: "{{ value }}"
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Tens. min batterie 4"
unique_id: "iobroker_hyper_2000_tens_min_batterie_4"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx4/minVol
value_template: "{{ value }}"
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Tens. batterie 4"
unique_id: "iobroker_hyper_2000_tens_batterie_4"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packData/CO4FHMHDMxxxxx4/totalVol
value_template: "{{ value }}"
unit_of_measurement: "V"
device_class: "voltage"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Puissance de charge du réseau"
unique_id: "iobroker_hyper_2000_gridInputPower"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/gridInputPower
value_template: "{{ value }}"
unit_of_measurement: "W"
device_class: "power"
state_class: "measurement"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Temp. hyper"
unique_id: "iobroker_hyper_2000_temp_hyper"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/hyperTmp
value_template: "{{ value }}"
unit_of_measurement: "°C"
device_class: "temperature"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Etat batteries"
unique_id: "iobroker_hyper_2000_etat_batteries"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/packState
value_template: "{{ value }}"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Etat hyper"
unique_id: "iobroker_hyper_2000_etat"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/hubState
value_template: "{{ value }}"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Contournement"
unique_id: "iobroker_hyper_2000_contournement"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/pass
value_template: "{{ value }}"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Energie Entrée AC"
unique_id: "Hyper2000_gridInputEnergyTodayWh"
state_topic: "zendure-solarflow/0/gxxxxx/Rxxxxxxx/calculations/gridInputEnergyTodayWh"
unit_of_measurement: "Wh"
value_template: '{{ value }}'
icon: "mdi:transmission-tower-export"
force_update: true
device_class: energy
state_class: total_increasing
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "Zendure"
model: "Hyper 2000"
- name: "Energie Entrée Batterie"
unique_id: "Hyper2000_outputPackEnergyTodayW"
state_topic: "zendure-solarflow/0/gxxxxx/Rxxxxxxx/calculations/outputPackEnergyTodayWh"
unit_of_measurement: "Wh"
value_template: '{{ value }}'
icon: "mdi:battery-arrow-up"
force_update: true
device_class: energy
state_class: total_increasing
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "Zendure"
model: "Hyper 2000"
- number:
- name: "Puissance décharge max"
unique_id: "iobroker_hyper_2000_puissance_sortie_maxi"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/outputLimit
command_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/control/setOutputLimit/set
value_template: "{{ value }}"
min: 0.0
max: 1200.0
step: 50
mode: "slider"
unit_of_measurement: "W"
icon: "mdi:home-battery"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Puissance charge max"
unique_id: "iobroker_hyper_2000_puissance_entree_maxi"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/inputLimit
command_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/control/setInputLimit/set
value_template: "{{ value }}"
min: 0.0
max: 1200.0
step: 50
mode: "slider"
unit_of_measurement: "W"
icon: "mdi:transmission-tower-export"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Réglage décharge mini"
unique_id: "iobroker_hyper_2000_decharge_mini"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/control/dischargeLimit
command_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/control/dischargeLimit/set
value_template: "{{ value }}"
min: 0.0
max: 100.0
step: 5
mode: "slider"
unit_of_measurement: "%"
icon: "mdi:battery-low"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- name: "Réglage charge maxi"
unique_id: "iobroker_hyper_2000_charge_maxi"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/control/chargeLimit
command_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/control/chargeLimit/set
value_template: "{{ value }}"
min: 0.0
max: 100.0
step: 5
mode: "slider"
unit_of_measurement: "%"
icon: "mdi:battery-high"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
- select:
- name: "Mode Hyper 1-> Charge 2-> Décharge"
unique_id: "iobroker_hyper_2000_mode_hyper"
state_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/acMode
command_topic: zendure-solarflow/0/gxxxxx/Rxxxxxxx/control/acMode/set
value_template: "{{ value }}"
options:
- "0"
- "1"
- "2"
device:
name: "IoBroker-Zendure"
identifiers: "Io-Zendure"
manufacturer: "IoBroker-Zendure"
model: "Hyper 2000"
input_number:
zendure_seuil_charge_ac:
name: "Seuil Surplus PV"
min: 0
max: 1000
step: 10
mode: box
unit_of_measurement: W
icon: "mdi:solar-power-variant"
zendure_limite_max_ac:
name: "Limite MAX entrée AC"
min: 0
max: 1200
step: 10
mode: box
unit_of_measurement: W
icon: "mdi:arrow-collapse-up"
zendure_limite_min_ac:
name: "Limite MIN entrée AC"
min: 0
max: 1200
step: 10
mode: box
unit_of_measurement: W
icon: "mdi:arrow-collapse-down"
zendure_consigne_decharge_ac:
name: "Consigne Décharge AC"
min: 0
max: 1200
step: 10
mode: box
initial: 0
unit_of_measurement: W
icon: "mdi:home-plus"
template:
- sensor:
- name: Surplus PV
unique_id: "Surplus_PV"
unit_of_measurement: "W"
state: >
{% if has_value('sensor.iobroker_zendure_puissance_de_charge_du_reseau') %}
{% if states('sensor.shelly_linky_em0_power')|int - states('sensor.iobroker_zendure_puissance_de_charge_du_reseau')|int < 0 %}
{{ (states('sensor.shelly_linky_em0_power')|int - states('sensor.iobroker_zendure_puissance_de_charge_du_reseau')|int)|abs }}
{% else %}
{{ 0 }}
{% endif %}
{% else %}
{% if states('sensor.shelly_linky_em0_power')|int < 0 %}
{{ (states('sensor.shelly_linky_em0_power')|int)|abs }}
{% else %}
{{ 0 }}
{% endif %}
{% endif %}
- name: Consigne_Charge_AC
unique_id: "Cons_Charge_AC"
unit_of_measurement: "W"
state: >
{% if states('sensor.surplus_pv')|int > states('input_number.zendure_seuil_charge_ac')|int %}
{% if (states('sensor.surplus_pv')|int - states('input_number.zendure_seuil_charge_ac')|int) < 1200 %}
{{ states('sensor.surplus_pv')|int - states('input_number.zendure_seuil_charge_ac')|int }}
{% else %}
{{ 1200 }}
{% endif %}
{% else %}
{{ 0 }}
{% endif %}
- name: Niveau Batterie Zendure
unique_id: "Zendure_SOC"
unit_of_measurement: "%"
state: >
{% if has_value('sensor.iobroker_zendure_niveau_batteries') %}
{{ states('sensor.iobroker_zendure_niveau_batteries') }}
{% else %}
{{ 50 }}
{% endif %}
input_select:
mode_batterie_zendure:
name: Mode batterie Zendure
options:
- Automatique
- Charge
- Décharge
- Manuel
initial: Automatique
icon: mdi:battery-high
- Créer un fichier
zendure-recorder.yaml
dans le dossierpackages
, je désactive l’enregistrement de la plupart des entités (a modifier suivant vos besoins):
zendure_recorder.yaml
############################################################
## MQTT HYPER 2000 - Package - recorder ##
############################################################
recorder:
include:
entities:
- sensor.iobroker_zendure_puissance_de_charge_du_reseau
- sensor.iobroker_zendure_consommation_maison
# - sensor.iobroker_zendure_puissance_decharge_batteries
# - sensor.iobroker_zendure_puissance_charge_batteries
exclude:
entities:
- sensor.consigne_charge_ac
- sensor.niveau_batterie_zendure
- sensor.surplus_pv
entity_globs:
- sensor.iobroker_zendure*
- number.iobroker_zendure*
- input_number.zendure*
- select.iobroker_zendure*
- Créer un fichier
zendure-automations.yaml
dans le dossierpackages
:
Dans un premier temps, je vous conseille de gérer les automation avec l’UI de HA pour pouvoir les modifier facilement le temps que le tout soit pleinement fonctionnel (même si ça fonctionne déjà bien en l’état)
MAJ 2025-01-25 : corrections des pas sur automatisation décharge
MAJ 2025-02-05 : augmentations des pas pour réduire les temps de convergence en décharge
MAJ 2025-02-06 :
utilisation des id pour le choix charge/decharge
passage à 8 choix pour la décharge pour coller aux automatisation de @Julien_Galliot
zendure_automations.yaml
############################################################
## MQTT HYPER 2000 - Package - automations ##
############################################################
############################################################
## MODIFICATIONS NECESSAIRES ##
## ##
## remplacer sensor.shelly_linky_em0_power ##
## par votre capteur de consommation/injection ##
## ##
############################################################
automation:
- alias: Zendure - Décharge AC
description: ""
triggers:
- trigger: time_pattern
seconds: /10
conditions: []
actions:
- if:
- condition: state
entity_id: select.iobroker_zendure_mode_hyper_1_charge_2_decharge
state: "2"
then:
- if:
- condition: numeric_state
entity_id: sensor.niveau_batterie_zendure
above: number.iobroker_zendure_reglage_decharge_mini
then:
- choose:
- conditions:
- condition: numeric_state
entity_id: sensor.shelly_linky_em0_power
above: 30
below: 100
sequence:
- action: input_number.increment
metadata: {}
data: {}
target:
entity_id: input_number.zendure_consigne_decharge_ac
- conditions:
- condition: numeric_state
entity_id: sensor.shelly_linky_em0_power
above: 100
below: 200
sequence:
- repeat:
count: 5
sequence:
- action: input_number.increment
metadata: {}
data: {}
target:
entity_id: input_number.zendure_consigne_decharge_ac
- conditions:
- condition: numeric_state
entity_id: sensor.shelly_linky_em0_power
above: 200
below: 500
sequence:
- repeat:
count: 10
sequence:
- action: input_number.increment
metadata: {}
data: {}
target:
entity_id: input_number.zendure_consigne_decharge_ac
- conditions:
- condition: numeric_state
entity_id: sensor.shelly_linky_em0_power
above: 500
sequence:
- repeat:
count: 20
sequence:
- action: input_number.increment
metadata: {}
data: {}
target:
entity_id: input_number.zendure_consigne_decharge_ac
- conditions:
- condition: numeric_state
entity_id: sensor.shelly_linky_em0_power
below: 0
above: -100
sequence:
- action: input_number.decrement
metadata: {}
data: {}
target:
entity_id: input_number.zendure_consigne_decharge_ac
- conditions:
- condition: numeric_state
entity_id: sensor.shelly_linky_em0_power
below: -100
above: -200
sequence:
- repeat:
count: 5
sequence:
- action: input_number.decrement
metadata: {}
data: {}
target:
entity_id: input_number.zendure_consigne_decharge_ac
- conditions:
- condition: numeric_state
entity_id: sensor.shelly_linky_em0_power
below: -200
above: -500
sequence:
- repeat:
count: 10
sequence:
- action: input_number.decrement
metadata: {}
data: {}
target:
entity_id: input_number.zendure_consigne_decharge_ac
- conditions:
- condition: numeric_state
entity_id: sensor.shelly_linky_em0_power
below: -500
sequence:
- repeat:
count: 20
sequence:
- action: input_number.decrement
metadata: {}
data: {}
target:
entity_id: input_number.zendure_consigne_decharge_ac
- if:
- condition: numeric_state
entity_id: input_number.zendure_consigne_decharge_ac
above: input_number.zendure_p_limite_sortie_ac
then:
- action: input_number.set_value
target:
entity_id: input_number.zendure_consigne_decharge_ac
data:
value: "{{ states('input_number.zendure_p_limite_sortie_ac') }}"
- action: number.set_value
target:
entity_id: number.iobroker_zendure_puissance_decharge_max
data:
value: "{{ states('input_number.zendure_consigne_decharge_ac') }}"
else:
- action: input_number.set_value
metadata: {}
data:
value: 0
target:
entity_id: input_number.zendure_consigne_decharge_ac
- delay:
hours: 0
minutes: 0
seconds: 2
milliseconds: 0
- action: number.set_value
target:
entity_id: number.iobroker_zendure_puissance_decharge_max
data:
value: "{{ states('input_number.zendure_consigne_decharge_ac') }}"
else:
- action: select.select_option
metadata: {}
data:
option: "2"
target:
entity_id: select.iobroker_zendure_mode_hyper_1_charge_2_decharge
mode: single
- alias: Zendure - Charge AC
description: ""
triggers:
- trigger: time_pattern
seconds: /10
conditions:
- condition: numeric_state
entity_id: sensor.niveau_batterie_zendure
below: number.iobroker_zendure_reglage_charge_maxi
actions:
- if:
- condition: state
entity_id: select.iobroker_zendure_mode_hyper_1_charge_2_decharge
state: "1"
then:
- choose:
- conditions:
- condition: numeric_state
entity_id: sensor.consigne_charge_ac
above: input_number.zendure_limite_max_ac
sequence:
- action: number.set_value
target:
entity_id: number.iobroker_zendure_puissance_charge_max
data:
value: "{{ states('input_number.zendure_limite_max_ac') }}"
- conditions:
- condition: numeric_state
entity_id: sensor.consigne_charge_ac
below: input_number.zendure_limite_min_ac
sequence:
- action: number.set_value
target:
entity_id: number.iobroker_zendure_puissance_charge_max
data:
value: 0
default:
- action: number.set_value
target:
entity_id: number.iobroker_zendure_puissance_charge_max
data:
value: "{{ states('sensor.consigne_charge_ac') }}"
else:
- action: select.select_option
metadata: {}
data:
option: "1"
target:
entity_id: select.iobroker_zendure_mode_hyper_1_charge_2_decharge
mode: single
- alias: Zendure - Gestion mode
description: ""
triggers:
- trigger: state
entity_id:
- input_select.mode_batterie_zendure
conditions: []
actions:
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.zendure_mode_intelligent
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.zendure_decharge_ac
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.zendure_charge_ac
- choose:
- conditions:
- condition: state
entity_id: input_select.mode_batterie_zendure
state: Charge
sequence:
- action: number.set_value
data:
value: "0"
target:
entity_id: number.iobroker_zendure_puissance_decharge_max
- action: select.select_option
metadata: {}
data:
option: "1"
target:
entity_id: select.iobroker_zendure_mode_hyper_1_charge_2_decharge
- conditions:
- condition: state
entity_id: input_select.mode_batterie_zendure
state: Décharge
sequence:
- action: number.set_value
data:
value: "0"
target:
entity_id: number.iobroker_zendure_puissance_charge_max
- action: select.select_option
metadata: {}
data:
option: "2"
target:
entity_id: select.iobroker_zendure_mode_hyper_1_charge_2_decharge
- conditions:
- condition: state
entity_id: input_select.mode_batterie_zendure
state: Automatique
sequence:
- action: number.set_value
data:
value: "0"
target:
entity_id: number.iobroker_zendure_puissance_charge_max
- action: number.set_value
data:
value: "0"
target:
entity_id: number.iobroker_zendure_puissance_decharge_max
- action: select.select_option
metadata: {}
data:
option: "0"
target:
entity_id: select.iobroker_zendure_mode_hyper_1_charge_2_decharge
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id: automation.zendure_mode_intelligent
- if:
- condition: numeric_state
entity_id: sensor.surplus_pv
above: 0
then:
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id: automation.zendure_charge_ac
else:
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id: automation.zendure_decharge_ac
- conditions:
- condition: state
entity_id: input_select.mode_batterie_zendure
state: Manuel
sequence:
- action: number.set_value
data:
value: "0"
target:
entity_id: number.iobroker_zendure_puissance_charge_max
- action: number.set_value
data:
value: "0"
target:
entity_id: number.iobroker_zendure_puissance_decharge_max
- action: select.select_option
metadata: {}
data:
option: "2"
target:
entity_id: select.iobroker_zendure_mode_hyper_1_charge_2_decharge
mode: single
- alias: Zendure - Mode Intelligent
description: ""
triggers:
- trigger: numeric_state
entity_id:
- sensor.shelly_linky_em0_power
for:
hours: 0
minutes: 1
seconds: 0
below: -80
id: charge
- trigger: numeric_state
entity_id:
- sensor.shelly_linky_em0_power
for:
hours: 0
minutes: 1
seconds: 0
above: 80
id: decharge
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- charge
sequence:
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.zendure_decharge_ac
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.iobroker_zendure_puissance_decharge_max
- action: select.select_option
metadata: {}
data:
option: "1"
target:
entity_id: select.iobroker_zendure_mode_hyper_1_charge_2_decharge
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.iobroker_zendure_puissance_charge_max
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id: automation.zendure_charge_ac
- conditions:
- condition: trigger
id:
- decharge
sequence:
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.zendure_charge_ac
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.iobroker_zendure_puissance_charge_max
- action: select.select_option
metadata: {}
data:
option: "2"
target:
entity_id: select.iobroker_zendure_mode_hyper_1_charge_2_decharge
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.iobroker_zendure_puissance_decharge_max
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id: automation.zendure_decharge_ac
mode: single
- Le code lovelace inspiré de l’interface de @Julien_Galliot, à copier-coller dans l’UI de HA via l’
éditeur de configuration
(code yaml) d’une vue.
lovelace
- type: sections
title: Zendure
path: zendure
icon: mdi:home-battery
sections:
- type: grid
cards:
- type: heading
heading: Mode et Etats
heading_style: title
- type: custom:mushroom-select-card
entity: input_select.mode_batterie_zendure
grid_options:
columns: 12
rows: 2
- type: custom:mushroom-entity-card
entity: select.iobroker_zendure_mode_hyper_1_charge_2_decharge
name: AC Mode 1-> Charge 2-> Décharge
grid_options:
columns: 12
rows: 1
- type: custom:mushroom-entity-card
entity: sensor.niveau_batterie_zendure
grid_options:
columns: 6
rows: 1
- type: custom:mushroom-entity-card
entity: sensor.iobroker_zendure_etat_batteries
name: Etat Batterie
grid_options:
columns: 6
rows: 1
- type: custom:mushroom-entity-card
entity: sensor.iobroker_zendure_temp_hyper
name: Temp Hyper2k
grid_options:
columns: 12
rows: 1
- type: custom:mushroom-entity-card
entity: sensor.iobroker_zendure_temp_max_batterie_1
name: Batterie 1
- type: custom:mushroom-entity-card
entity: sensor.iobroker_zendure_temp_max_batterie_2
name: Batterie 2
- type: custom:mushroom-entity-card
entity: sensor.iobroker_zendure_temp_max_batterie_3
name: Batterie 3
- type: custom:mushroom-entity-card
entity: sensor.iobroker_zendure_temp_max_batterie_4
name: Batterie 4
- type: grid
cards:
- type: heading
heading: Charge
heading_style: title
- type: custom:mushroom-number-card
entity: number.iobroker_zendure_puissance_charge_max
name: Consigne P Charge
display_mode: buttons
- type: custom:mushroom-number-card
entity: input_number.zendure_seuil_charge_ac
display_mode: buttons
- type: custom:mushroom-entity-card
entity: sensor.iobroker_zendure_puissance_de_charge_du_reseau
name: P charge AC
- type: custom:mushroom-entity-card
entity: sensor.consigne_charge_ac
name: Calcul entrée AC
- type: custom:mushroom-entity-card
entity: sensor.surplus_pv
- type: custom:mushroom-entity-card
entity: sensor.iobroker_zendure_temps_de_charge_restant
name: Durée charge restant
- type: custom:mushroom-number-card
entity: input_number.zendure_limite_max_ac
display_mode: buttons
- type: custom:mushroom-number-card
entity: input_number.zendure_limite_min_ac
display_mode: buttons
- type: custom:mushroom-entity-card
entity: sensor.iobroker_zendure_energie_entree_ac
name: Energie Entrée AC
- type: custom:mushroom-entity-card
entity: sensor.zendure_energie_entree_ac
name: Energie Charge Batterie
- type: grid
cards:
- type: heading
heading: Décharge
heading_style: title
- type: custom:mushroom-number-card
entity: number.iobroker_zendure_puissance_decharge_max
name: Puissance Décharge
display_mode: buttons
- type: custom:mushroom-number-card
entity: input_number.zendure_consigne_decharge_ac
display_mode: buttons
- type: custom:mushroom-entity-card
grid_options:
columns: 6
rows: 1
entity: sensor.iobroker_zendure_consommation_maison
name: Consommation maison
- type: custom:mushroom-entity-card
entity: sensor.iobroker_zendure_temps_de_decharge_restant
name: Durée décharge restant
- type: custom:mushroom-number-card
entity: input_number.zendure_p_limite_sortie_ac
display_mode: buttons
- type: custom:mushroom-entity-card
entity: sensor.iobroker_zendure_energie_entree_batterie
name: Energie Sortie AC
- type: custom:mushroom-entity-card
entity: sensor.zendure_energie_sortie_ac
name: Energie Décharge Batterie
Quelques différences par rapport à ce que propose @Julien_Galliot :
- Certaines entités n’ont pas le même nom (mais suffisamment proche pour s’y retrouver facilement)
- Sur les automatisation de charge et décharge, les seuils de batteries (15% et 100%) sont récupérés sur les réglages plutôt qu’en valeur fixe
- Les pas de réglage des puissance de charge/décharge sont à 10W (pas de 1W dans l’appli Zendure) :
- Impacte la réactivité lors d’un brusque changement de consommation
- exemple : mise en route du frigo 80W compensé en 60s environ
- Possibilité de modifier le pas dans les input_number du fichier
zendure-entities.yaml
, et de modifier le nombre de répétitions d’incrément/décrément dans les automatisations
- Impacte la réactivité lors d’un brusque changement de consommation
- Un mode manuel qui désactive les automatisations
MAJ 2025-01-25 : Correction noms des fichiers
Bonsoir @Lexyan …et bravo quel boulot ! Ca va effectivement aider ceux qui souhaiteraient mettre en place ces automatismes sans trop se prendre la tête.
2 petites questions me viennent concernant tes modifications :
En décharge, tes pas sont de +1/+4/+8 en positif et -1/-8/-20 en négatif c’est volontaire? Tu souhaites que le rattrapage soit plus rapide lors d’une baisse forte et soudaine de la consommation?
En utilisant les données MQTT brutes pour la décharge mini et la charge maxi, tu risque d’avoir des problème de blocage des automatismes sur valeur « indisponible », lors d’un rechargement de la configuration yaml par exemple. Les valeur remontent d’iobroker uniquement sur changement de valeur. Et comme ces valeurs vont être très rarement changées, elles risquent de rester longtemps indisponibles. C’est pour cette raison que j’avais recréé un sensor « niveau batterie zendure » avec le « if has value » et la valeur de 50 par défaut si indispo, car ça me bloquait les automatismes. Il fallait charger ou décharger un peu pour que le niveau de batterie change et remonte par MQTT, mais la valeur indisponible empêchait les automatismes de fonctionner (blocage total). Je me dis qu’il faudrait peut-être faire la même chose de ton côté en mettant des valeurs par défaut de 10% et 100% si indisponible.
Et encore bravo pour avoir mis de l’ordre dans tout ça ! J’avoue qu’à la base j’avais pas créé mes automatismes dans le but de les partager, donc j’ai fait ça à ma sauce perso, et je ne maitrise pas encore tous les rouages de HA. Je suis un transfuge de jeedom, et la transition est…difficile!
Bonjour,
Je n’ai pas encore de système de batterie.
Je voulais savoir si le iobroker et ces paramétrages permettaient de faire fonctionner le Hyper 2000 sans avoir besoin des serveurs de Zendure.
En effet, je me pose la question : et si zendure ferme ses serveurs ou fait faillite, que devient ce système ?
Merci.