Pas besoin de mettre de clé bluetooth sur la Freebox, l’esp32 permet via le wifi de faire une sorte de clé bluetooth déportée.
Il faut acheter ce genre de carte à base de puce esp32. Exemple:
https://amzn.eu/d/b8kwb6x
La carte s’alimente par USB, donc prévoir un petit bloc 220v/USB.
1 « J'aime »
Voici comment j’ai mis provisoirement mon esp32 pour mes 2 hyper…
Juste pendu par le câble USB et le bloc chargeur que j’avais en stock…
1 « J'aime »
Merci pour ton aide ça se précise.
Quand tu dis programmer l’esp32 en Bluetooth proxy avec esphome, esphome c’est un logiciel ? Ça se paramètre depuis Mac ou PC?
Esphome est un addon de HA a installer et démarrer. Une fois l’addon en place, avec le lien que j’ai donné, il n’y a presque rien à modifier si ce n’est le SSID et mot de passe de ton WiFi.
Il suffit juste de brancher l’esp32 via USB à un PC qui permet d’accéder à HA pour injecter le programme de Esphome sur l’esp32.
Il y a sur internet plein de tuto pour débuter avec Esphome.
1 « J'aime »
Super merci. Ça devrait aller avec ce que tu m’a donné comme infos
. Le chargeur alimentation pour l’esp, y’a des spécifications à respecter ?
Je me lance a mon tour dans la configuration en local mqtt…
Mon hyper 2000 étant a l’extérieur a côté de mon cabanon de jardin, j’ai equipé celui-ci d’un répéteur wifi et d’un esp32 qui a pour rôle un proxy bluetooth…
Je vois bien le hyper 2000 autant en wifi qu’en bluetooth dans HA, d’ailleurs si je configure l’intégration sans mqtt j’ai en connection status « zendure clous et BLE »…
Par contre si je recommence avec le mqtt de coché, je me retrouve pendant un moment en connection status « inconnu et BLE » puis quelques minutes après « BLE error »… Pourtant dans les équipements bluetooth je vois bien le hyper …
Je suis en version 1.0.45 de l’integration
Est ce que ton broker MQTT (Mosquitto)est bien sur ton HA et pas en externe ?
Oui pardon, j’ai pas précisé, mosquitto en addon complémentaire HA. J’ai plusieurs users de configurés pour plusieurs intégrations, faut-il rajouter un user pour zendure ? Si oui, lequel ?
Normalement l’intégration fait automatiquement ce qu’il faut de son côté…Est ce c’est les plusieurs users qui pose souci ?
De mon côté j’ai 2 hyper avec 2 esp32 en proxy bluetooth et j’ai pas eu de problème particulier. (1 seul user dans Mosquitto)
Bonsoir.
Bon et bien c’est la misère pour moi. Me voilà en possession d’un esp32 de AZ delivery, sans savoir l’utiliser…
Va me falloir votre aide s’il vous plait.
J’ai tenté d’injecter le programme bluetooth proxy depuis le site de esphome.io, ça a l’air de s’être fait.
Mais maintenant je fais quoi ?
J’ai bien esphome installé dans HA. L’esp32 connecté en usb au pc n’est pas reconnu directement…
Je dois faire quoi ?
Je rappelle que le but est de l’utiliser pour communiquer en local avec le hyper2000 via l’intégration zendure. (j’ai installé mqqt mosquitto aussi).
As tu configuré le wifi sur ton esp32 ? Si oui, tu n’as plus qu’à plus qu’à le brancher électriquement près de ton hyper 2000, sous couverture de ton wifi. Une fois alimenté il doit remonter dans HA dans l’intégration esp home et dans l’intégration bluetooth tu dois le retrouver et en cliquant sur son adresse mac tu dois voir ton hyper 2000 et tout ce qu’il capte aux alentours…
Pour le voir dans ESPHome et être sûr qu’il est bien reconnu dans HA, il faudrait créer le bluetooth proxy à partir de ESPHome.
Il faut:
NEW DEVICE → Continue → le nommer « Bluetooth Proxy hyper »
→ Next → ESP32 → SKIP
Le nouveau module apparaît dans ESPHome. Cliquer sur EDIT et remplacer tout le code par celui-ci:
substitutions:
name: esp32-bluetooth-proxy-hyper
friendly_name: Bluetooth Proxy hyper
packages:
esphome.bluetooth-proxy: github://esphome/bluetooth-proxies/esp32-generic/esp32-generic.yaml@main
esphome:
name: ${name}
name_add_mac_suffix: false
friendly_name: ${friendly_name}
api:
encryption:
key: XxMJosx1QBIP2Qm33RzeJDxjbRYBjzjmUr3cPtTYoE4=
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
Penser à changer le SSID et MdP du WiFi ou avoir déjà configuré le !secret dans ESPHome pour ne rien changer au code.
SAVE et INSTALL avec l’esp32 relié en USB pour injecter le nouveau code.
Si tout s’est bien passé et le code parfaitement injecté, rebooter l’esp32 pour être sûr et voir si il apparait ONLINE dans ESPHOME.
Il devrait aussi être détecté par HA et après apparaitre dans l’intégration Bluetooth.
1 « J'aime »
Un grand merci pour ton aide, sans tes explications détaillées je n’y serais pas arrivé. Jusque la c’est tout bon.
Purée j’ai eu peur, les étapes « connexion » et « préparation de l’installation » , ça a mis des dizaines de minutes sur mon vieux macbook pro 2014…
Je reviens vers vous pour les prochaines étapes (config mosquitto si nécessaire ?, et l’intégration zendure dans sa dernière version, après avoir correctement supprimé la 1.0.25).
J’espère que j’arriverais à adapter les automatisations de Julien pour la gestion du hyper2000 à la version actuelle. Vous y êtes arrivés ?
Edit: Ca y est, je suis bien dans la 1.0.45 de fireson, et la communication locale est ok (je vois bien "Local Mqtt, Zendure App et BLE), et tous les capteurs remontent. Maintenant va falloir potasser pour adapter l’automatisation qui allait super bien en 1.0.25. @Julien_Galliot si tu es dans les parages pour éventuellement me donner des tips sur les entités à adapter, si tu es déjà passé par la ?
Content que ça fonctionne pour toi, ça confirme un peu plus ce que je pense pour mon cas, a savoir que pour mosquitto il fait qu’il soit installé que pour ça…
C’est à dire que pour ça…
Mon Mosquitto été utilisé pour pleins d’autres intégrations ou utilisation avant d’utiliser l’intégration Zendure et j’ai pas eu de problème…
Par contre mon Mosquitto à 1 seul utilisateur…
Salut, désolé long WE oblige je répond seulement maintenant. Je posterai ici ce soir les automatismes adaptés à la dernière version de l’intégration…
1 « J'aime »
Super merci beaucoup Julien.
En fait la version 1.0.45 marche vraiment bien je trouve. Les fonctions sont aussi efficaces que via l’app zendure.
Mais ton ou tes automatisations donnent encore plus de possibilités, surtout sur les rendements, pour ne pas décharger en dessous de 300w par exemple, rien que ça, et le fait de basculer automatiquement en mode nuit ou HC.
J’ai essayé d’adapter mon automatisation en modifiant ce que j’ai vu, mais visiblement elle ne se déclenche pas, ou du moins c’est encore sans effet sur le hyper en réalité. Ca doit être les modes et les états 1 ou 2, input ou output qui me posent problème.
Hello
Je m’insère dans ce thread .
Je viens de recevoir mon 2400AC (la nouvelle batterie).
J’ai galéré , et je galère toujours avec l’intégration de fireson
- En version 1.0.41 , mode Cloud , je vois la batterie (et la puissance charge /décharge actuelle) , en version 1.0.45 , plus aucune info ne remonte
Bien sur, ce qui m’interesse , c’est le mode hors cloud (BLE)
En version fireson 1.0.45 :
J’ai installé un proxy bluetooth sur un esp pour HA
Je vois bien en Bluetooth la batterie,
Je lance la config de l’intégration , mode local +Mqtt . Dans le suivi de connexion bluetooth, je vois bien une connexion active vers la batterie puis , erreur BLE.
Dans les issues du github, a priori, je ne suis pas le seul
Mais , je me pose une question : Est-ce que je ne vais pas trop vite et essaye d’implémenter un truc qui marche pas encore ?
Ma question : Certains d’entre vous utilisent le combo Integration Fireson +Solarflow 2400Ac ?
Bonne soirée
Bonjour,
Comme promis je partage mes codes qui ont bien évolué depuis mon dernier partage. Pour commencer, je suis passé d’un seul hyper en charge AC uniquement (sans panneau) à deux hypers, soit un hyper en charge DC avec panneaux en direct sur MPPT et un hyper en charge AC (sans panneau). J’ai également « simplifié » mes sensors pour avoir une seule consigne unique (positive ou négative) pour la charge et la décharge. Enfin j’ai créé une répartition de charge dynamique sur mes 2 hypers.
Ci-dessous mon fichier « zendure.yaml » dans la configuration HA :
############################################################
## Zendure Hyper 2000 ##
############################################################
## SENSORS ##
template:
- sensor:
# Calcul de la somme des puissances des entrées des Hyper 1/2/... (entrées DC et AC)
# Les entrées DC sont négligées si Hyper en mode contournement (ni chargement ni déchargement)
- name: P totale entrées H2000
unique_id: P_Totale_Entree_H2000"
unit_of_measurement: "W"
icon: "mdi:solar-power-variant"
state: >
{% if states('binary_sensor.hyper_2000_chambre_reverse_state') == 'on' and states('binary_sensor.hyper_2000_entree_reverse_state') == 'on' %}
{{ states('sensor.hyper_2000_chambre_grid_input_power')|int + states('sensor.hyper_2000_entree_grid_input_power')|int }}
{% else %}
{% if states('binary_sensor.hyper_2000_chambre_reverse_state') == 'on' %}
{{ states('sensor.hyper_2000_chambre_grid_input_power')|int + states('sensor.hyper_2000_entree_solar_input_power')|int + states('sensor.hyper_2000_entree_grid_input_power')|int }}
{% else %}
{% if states('binary_sensor.hyper_2000_entree_reverse_state') == 'on' %}
{{ states('sensor.hyper_2000_chambre_solar_input_power')|int + states('sensor.hyper_2000_chambre_grid_input_power')|int + states('sensor.hyper_2000_entree_grid_input_power')|int }}
{% else %}
{{ states('sensor.hyper_2000_chambre_solar_input_power')|int + states('sensor.hyper_2000_chambre_grid_input_power')|int + states('sensor.hyper_2000_entree_solar_input_power')|int + states('sensor.hyper_2000_entree_grid_input_power')|int }}
{% endif %}
{% endif %}
{% endif %}
# Calcul de la somme des puissances des sorties Hyper 1/2/...
# Les sorties sont négligées si Hyper en mode contournement (ni chargement ni déchargement)
- name: P totale sorties H2000
unique_id: P_Totale_Sortie_H2000"
unit_of_measurement: "W"
icon: "mdi:solar-power-variant"
state: >
{% if states('binary_sensor.hyper_2000_chambre_reverse_state') == 'on' and states('binary_sensor.hyper_2000_entree_reverse_state') == 'on' %}
{{ 0 }}
{% else %}
{% if states('binary_sensor.hyper_2000_chambre_reverse_state') == 'on' %}
{{ states('sensor.hyper_2000_entree_output_home_power')|int }}
{% else %}
{% if states('binary_sensor.hyper_2000_entree_reverse_state') == 'on' %}
{{ states('sensor.hyper_2000_chambre_output_home_power')|int }}
{% else %}
{{ states('sensor.hyper_2000_chambre_output_home_power')|int + states('sensor.hyper_2000_entree_output_home_power')|int }}
{% endif %}
{% endif %}
{% endif %}
# Calcul de la somme des puissances des entrées AC uniquement pour Hyper 1/2/... (utile pour la visu du dashboard énergie uniquement)
- name: P totale entrées AC H2000
unique_id: P_Totale_Entree_AC_H2000"
unit_of_measurement: "W"
icon: "mdi:solar-power-variant"
state: "{{ states('sensor.hyper_2000_chambre_grid_input_power')|int + states('sensor.hyper_2000_entree_grid_input_power')|int }}"
# Calcul de la puissance Solaire Nette (Par Phase) avec Shelly = Puissance active mesurée sur la phase (Shelly) - Somme de P entrées Hyper 1/2/... + Somme de P sorties Hyper 1/2/...
# A dupliquer pour chaque phase si installation triphasée avec 1 ou plusieurs hyper par phase
- name: P Solaire Nette
unique_id: P_Solaire_Nette"
unit_of_measurement: "W"
icon: "mdi:solar-power-variant"
state: "{{ states('sensor.shellypro3em_a0dd6ca18868_em2_power')|int - states('sensor.p_totale_entrees_ac_h2000')|int + states('sensor.p_totale_sorties_h2000')|int }}"
# Calcul de la consigne générale de charge (valeur -) et décharge (valeur +)
- name: Consigne Zendure
unique_id: "Consigne_Zendure"
unit_of_measurement: "W"
icon: "mdi:home-plus"
state: >
{% if states('sensor.p_solaire_nette')|int < -1*states('input_number.hyper_seuil_consigne')|int %}
{% if states('sensor.p_solaire_nette')|int + states('input_number.hyper_seuil_consigne')|int < -2400 %}
{{ -2400 }}
{% else %}
{{ states('sensor.p_solaire_nette')|int + states('input_number.hyper_seuil_consigne')|int }}
{% endif %}
{% else %}
{% if states('sensor.p_solaire_nette')|int > states('input_number.hyper_seuil_consigne')|int %}
{% if states('sensor.p_solaire_nette')|int - states('input_number.hyper_seuil_consigne')|int > 2400 %}
{{ 2400 }}
{% else %}
{{ states('sensor.p_solaire_nette')|int - states('input_number.hyper_seuil_consigne')|int }}
{% endif %}
{% else %}
{{ 0 }}
{% endif %}
{% endif %}
# Calcul de la consigne de charge (valeur -) et décharge (valeur +) HYPER 1
- name: Consigne Hyper 1
unique_id: "Consigne_Hyper_1"
unit_of_measurement: "W"
icon: "mdi:home-plus"
state: >
{% if states('sensor.consigne_zendure')|int < 0 %}
{% if states('sensor.hyper_2000_chambre_solar_input_power')|int > states('sensor.consigne_zendure')|int|abs %}
{{ 0 }}
{% else %}
{% if states('sensor.hyper_2000_chambre_electric_level')|int < states('number.hyper_2000_chambre_soc_set')|int %}
{% if states('sensor.hyper_2000_entree_electric_level')|int < states('number.hyper_2000_entree_soc_set')|int %}
{{ (states('sensor.consigne_zendure')|int)*(100-states('sensor.hyper_2000_chambre_electric_level')|int)/((100-states('sensor.hyper_2000_chambre_electric_level')|int)+(100-states('sensor.hyper_2000_entree_electric_level')|int)) }}
{% else %}
{{ states('sensor.consigne_zendure')|int }}
{% endif %}
{% else %}
{{ 0 }}
{% endif %}
{% endif %}
{% else %}
{% if states('sensor.consigne_zendure')|int == 2400 %}
{{ 1200 }}
{% else %}
{% if states('sensor.consigne_zendure')|int > 0 %}
{% if states('sensor.hyper_2000_chambre_solar_input_power')|int > states('sensor.consigne_zendure')|int %}
{{ states('sensor.consigne_zendure')|int }}
{% else %}
{% if states('sensor.hyper_2000_chambre_electric_level')|int > states('number.hyper_2000_chambre_min_soc')|int %}
{% if states('sensor.hyper_2000_entree_electric_level')|int > states('number.hyper_2000_entree_min_soc')|int %}
{{ (states('sensor.consigne_zendure')|int)*(states('sensor.hyper_2000_chambre_electric_level')|int)/((states('sensor.hyper_2000_chambre_electric_level')|int)+(states('sensor.hyper_2000_entree_electric_level')|int)) }}
{% else %}
{{ states('sensor.consigne_zendure')|int }}
{% endif %}
{% else %}
{{ 0 }}
{% endif %}
{% endif %}
{% else %}
{{ 0 }}
{% endif %}
{% endif %}
{% endif %}
# Calcul de la consigne de charge (valeur -) et décharge (valeur +) HYPER 2
- name: Consigne Hyper 2
unique_id: "Consigne_Hyper_2"
unit_of_measurement: "W"
icon: "mdi:home-plus"
state: >
{% if states('sensor.consigne_zendure')|int < 0 %}
{% if states('sensor.hyper_2000_chambre_solar_input_power')|int > states('sensor.consigne_zendure')|int|abs %}
{{ states('sensor.consigne_zendure')|int }}
{% else %}
{% if states('sensor.hyper_2000_entree_electric_level')|int < states('number.hyper_2000_entree_soc_set')|int %}
{% if states('sensor.hyper_2000_chambre_electric_level')|int < states('number.hyper_2000_chambre_soc_set')|int %}
{{(states('sensor.consigne_zendure')|int)*(100-states('sensor.hyper_2000_entree_electric_level')|int)/((100-states('sensor.hyper_2000_chambre_electric_level')|int)+(100-states('sensor.hyper_2000_entree_electric_level')|int))}}
{% else %}
{{ states('sensor.consigne_zendure')|int }}
{% endif %}
{% else %}
{{ 0 }}
{% endif %}
{% endif %}
{% else %}
{% if states('sensor.consigne_zendure')|int == 2400 %}
{{ 1200 }}
{% else %}
{% if states('sensor.consigne_zendure')|int > 0 %}
{% if states('sensor.hyper_2000_chambre_solar_input_power')|int > states('sensor.consigne_zendure')|int %}
{{ 0 }}
{% else %}
{% if states('sensor.hyper_2000_entree_electric_level')|int > states('number.hyper_2000_entree_min_soc')|int %}
{% if states('sensor.hyper_2000_chambre_electric_level')|int > states('number.hyper_2000_chambre_min_soc')|int %}
{{ (states('sensor.consigne_zendure')|int)*(states('sensor.hyper_2000_entree_electric_level')|int)/((states('sensor.hyper_2000_chambre_electric_level')|int)+(states('sensor.hyper_2000_entree_electric_level')|int)) }}
{% else %}
{{ states('sensor.consigne_zendure')|int }}
{% endif %}
{% else %}
{{ 0 }}
{% endif %}
{% endif %}
{% else %}
{{ 0 }}
{% endif %}
{% endif %}
{% endif %}
# Calcul du SOC global de l'ensemble des batteries
- name: SOC Global
unique_id: "SOC_Global"
unit_of_measurement: "%"
icon: "mdi:home-plus"
state: "{{ (2.88*states('sensor.hyper_2000_chambre_electric_level')|int + 1.92*states('sensor.hyper_2000_entree_electric_level')|int)/4.8 }}"
## INPUT NUMBER ##
input_number:
# Seuil de consigne à partir duquel on commence à charger/décharger les batteries pour 1 hyper
hyper_seuil_consigne:
name: "Seuil Consigne Hyper"
min: -100
max: 100
step: 10
mode: box
unit_of_measurement: W
icon: "mdi:solar-power-variant"
# Seuil de surplus solaire à partir duquel on commence à charger les batteries
# Mon réglage = 20W
zendure_seuil_surplus_solaire:
name: "Seuil Surplus Solaire"
min: -100
max: 100
step: 10
mode: box
unit_of_measurement: W
icon: "mdi:solar-power-variant"
# Seuil de déficit solaire à partir duquel on commence à décharger les batteries
# Mon réglage = 20W
zendure_seuil_deficit_solaire:
name: "Seuil Déficit Solaire"
min: -100
max: 100
step: 10
mode: box
unit_of_measurement: W
icon: "mdi:solar-power-variant"
# Seuil minimum de la consigne de charge (pour éviter la charge lente avec fortes pertes ; à régler à 450W pour rendement > 90%) pour 1 Hyper
zendure_pmin_entree_ac:
name: "Limite Pmin entrée AC"
min: 0
max: 1200
step: 10
mode: box
unit_of_measurement: W
icon: "mdi:arrow-collapse-down"
# Limite maximum de la consigne de charge (pour brider la charge si nécessaire) pour 1 Hyper
zendure_pmax_entre_ac:
name: "Limite Pmax entrée AC"
min: 0
max: 1200
step: 10
mode: box
unit_of_measurement: W
icon: "mdi:arrow-collapse-up"
# Seuil minimum de la consigne de décharge (pour éviter la décharge lente avec fortes pertes ; à régler à 325W pour rendement > 90%) pour 1 Hyper
zendure_pmin_sortie_ac:
name: "Limite Pmin sortie AC"
min: 0
max: 1200
step: 10
mode: box
unit_of_measurement: W
icon: "mdi:arrow-collapse-down"
# Limite maximum de la consigne de décharge AC (pour brider la décharge si nécessaire) pour 1 Hyper
zendure_pmax_sortie_ac:
name: "Limite Pmax sortie AC"
min: 0
max: 1200
step: 10
mode: box
unit_of_measurement: W
icon: "mdi:arrow-collapse-up"
## INPUT SELECT ##
input_select:
# Selecteur du mode de fonctionnement Zendure :
# - Automatique : Equivalent du mode Intélligent Zendure avec basculement auto entre charge et décharge suivant conso
# - Charge : Mode charge uniquement (si surplus solaire)
# - Décharge : Mode décharge uniquement (si consommation)
# - Heures Creuses : Charge forcée pendant les heures creuses (nuit)
# - Manuel :
# - Veille :
mode_zendure:
name: Mode Zendure
options:
- Automatique
- Charge
- Décharge
- Heures Creuses
- Manuel
- Veille
initial: Automatique
icon: mdi:battery
## INPUT BOOLEAN ##
input_boolean:
# Etat 0/1 du mode charge AUTO :
charge_auto_zendure:
name: Charge Auto Zendure
icon: mdi:battery-arrow-up-outline
# Etat 0/1 du mode décharge AUTO :
decharge_auto_zendure:
name: Décharge Auto Zendure
icon: mdi:battery-arrow-down-outline
Automatisme de charge :
alias: Zendure - Charge AC
description: ""
triggers:
- trigger: time_pattern
seconds: /5
id: CRON
conditions: []
actions:
- parallel:
- if:
- condition: template
value_template: >-
{{ states('sensor.hyper_2000_chambre_electric_level')|int <
states('number.hyper_2000_chambre_soc_set')|int }}
- condition: numeric_state
entity_id: sensor.consigne_hyper_1
below: 0
then:
- if:
- condition: state
entity_id: select.hyper_2000_chambre_ac_mode
state: input
then:
- if:
- condition: template
value_template: >-
{{ (states('sensor.consigne_hyper_1')|int)|abs >
states('input_number.zendure_pmax_entre_ac')|int }}
then:
- action: number.set_value
data:
value: "{{ states('input_number.zendure_pmax_entre_ac') }}"
target:
entity_id: number.hyper_2000_chambre_input_limit
else:
- if:
- condition: template
value_template: >-
{{ (states('sensor.consigne_hyper_1')|int)|abs <
states('input_number.zendure_pmin_entree_ac')|int }}
then:
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_input_limit
else:
- action: number.set_value
data:
value: "{{ (states('sensor.consigne_hyper_1')|int)|abs }}"
target:
entity_id: number.hyper_2000_chambre_input_limit
else:
- action: select.select_option
metadata: {}
data:
option: input
target:
entity_id: select.hyper_2000_chambre_ac_mode
else:
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_input_limit
- if:
- condition: template
value_template: >-
{{ states('sensor.hyper_2000_entree_electric_level')|int <
states('number.hyper_2000_entree_soc_set')|int }}
- condition: numeric_state
entity_id: sensor.consigne_hyper_2
below: 0
then:
- if:
- condition: state
entity_id: select.hyper_2000_entree_ac_mode
state: input
then:
- if:
- condition: template
value_template: >-
{{ (states('sensor.consigne_hyper_2')|int)|abs >
states('input_number.zendure_pmax_entre_ac')|int }}
then:
- action: number.set_value
target:
entity_id:
- number.hyper_2000_entree_input_limit
data:
value: "{{ states('input_number.zendure_pmax_entre_ac') }}"
else:
- if:
- condition: template
value_template: >-
{{ (states('sensor.consigne_hyper_2')|int)|abs <
states('input_number.zendure_pmin_entree_ac')|int }}
then:
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_input_limit
else:
- action: number.set_value
target:
entity_id:
- number.hyper_2000_entree_input_limit
data:
value: "{{ (states('sensor.consigne_hyper_2')|int)|abs }}"
else:
- action: select.select_option
metadata: {}
data:
option: input
target:
entity_id: select.hyper_2000_entree_ac_mode
else:
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_input_limit
- if:
- condition: numeric_state
entity_id: sensor.hyper_2000_chambre_electric_level
above: 99
- condition: not
conditions:
- condition: state
entity_id: select.hyper_2000_chambre_ac_mode
state: output
then:
- action: select.select_option
metadata: {}
data:
option: output
target:
entity_id: select.hyper_2000_chambre_ac_mode
mode: single
saisissez ou collez du code ici
Automatisme de décharge :
alias: Décharge Zendure
description: ""
triggers:
- trigger: time_pattern
seconds: /5
conditions: []
actions:
- parallel:
- if:
- condition: template
value_template: >-
{{ states('sensor.hyper_2000_chambre_electric_level')|int >
states('number.hyper_2000_chambre_min_soc')|int }}
- condition: numeric_state
entity_id: sensor.consigne_hyper_1
above: 0
then:
- if:
- condition: state
entity_id: select.hyper_2000_chambre_ac_mode
state: output
then:
- if:
- condition: template
value_template: >-
{{ states('sensor.consigne_hyper_1')|int >
states('input_number.zendure_pmax_sortie_ac')|int }}
then:
- action: number.set_value
target:
entity_id:
- number.hyper_2000_chambre_output_limit
data:
value: "{{ states('input_number.zendure_pmax_sortie_ac') }}"
else:
- if:
- condition: template
value_template: >-
{{ states('sensor.consigne_hyper_1')|int <
states('input_number.zendure_pmin_sortie_ac')|int }}
then:
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_chambre_output_limit
else:
- action: number.set_value
target:
entity_id:
- number.hyper_2000_chambre_output_limit
data:
value: "{{ states('sensor.consigne_hyper_1')|int }}"
else:
- action: select.select_option
metadata: {}
data:
option: output
target:
entity_id:
- select.hyper_2000_chambre_ac_mode
else:
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_chambre_output_limit
- if:
- condition: template
value_template: >-
{{ states('sensor.hyper_2000_entree_electric_level')|int >
states('number.hyper_2000_entree_min_soc')|int }}
- condition: numeric_state
entity_id: sensor.consigne_hyper_2
above: 0
then:
- if:
- condition: state
entity_id: select.hyper_2000_entree_ac_mode
state: output
then:
- if:
- condition: template
value_template: >-
{{ states('sensor.consigne_hyper_2')|int >
states('input_number.zendure_pmax_sortie_ac')|int }}
then:
- action: number.set_value
target:
entity_id:
- number.hyper_2000_entree_output_limit
data:
value: "{{ states('input_number.zendure_pmax_sortie_ac') }}"
else:
- if:
- condition: template
value_template: >-
{{ states('sensor.consigne_hyper_2')|int <
states('input_number.zendure_pmin_sortie_ac')|int }}
then:
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_output_limit
else:
- action: number.set_value
target:
entity_id:
- number.hyper_2000_entree_output_limit
data:
value: "{{ states('sensor.consigne_hyper_2')|int }}"
else:
- action: select.select_option
metadata: {}
data:
option: output
target:
entity_id: select.hyper_2000_entree_ac_mode
else:
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_output_limit
mode: single
Automatisme charge nuit :
alias: Charge nuit Zendure
description: ""
triggers:
- trigger: time
at: "02:00:00"
id: HSC
- trigger: time
at: "06:00:00"
id: HC
- trigger: time
at: "07:00:00"
id: HP
- trigger: template
value_template: "{{ states ('sensor.soc_global')|int > 99 }}"
id: FULL
- trigger: template
value_template: "{{ states ('sensor.soc_global')|int > 49 }}"
id: MID
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- HSC
- condition: template
value_template: "{{ states ('sensor.soc_global')|int < 50 }}"
sequence:
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.zendure_charge_ac
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id:
- automation.decharge_zendure
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.zendure_gestion_mode
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.zendure_mode_intelligent
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_entree_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_output_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_entree_output_limit
- action: input_select.select_option
metadata: {}
data:
option: Heures Creuses
target:
entity_id: input_select.mode_zendure
- if:
- condition: state
state: input
entity_id: select.hyper_2000_chambre_ac_mode
- condition: state
state: input
entity_id: select.hyper_2000_chambre_ac_mode
then:
- action: number.set_value
metadata: {}
data:
value: "1000"
target:
entity_id: number.hyper_2000_chambre_input_limit
- action: number.set_value
metadata: {}
data:
value: "1000"
target:
entity_id: number.hyper_2000_entree_input_limit
else:
- action: select.select_option
metadata: {}
data:
option: input
target:
entity_id: select.hyper_2000_chambre_ac_mode
- action: select.select_option
metadata: {}
data:
option: input
target:
entity_id: select.hyper_2000_entree_ac_mode
- action: number.set_value
metadata: {}
data:
value: "1000"
target:
entity_id: number.hyper_2000_chambre_input_limit
- action: number.set_value
metadata: {}
data:
value: "1000"
target:
entity_id: number.hyper_2000_entree_input_limit
- conditions:
- condition: trigger
id:
- HSC
- condition: template
value_template: "{{ states ('sensor.soc_global')|int >= 50 }}"
- condition: numeric_state
entity_id: sensor.solcast_pv_forecast_previsions_pour_aujourd_hui
below: 8
sequence:
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.zendure_charge_ac
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.decharge_zendure
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.zendure_gestion_mode
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.zendure_mode_intelligent
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_output_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_output_limit
- action: input_select.select_option
metadata: {}
data:
option: Veille
target:
entity_id:
- input_select.mode_zendure
- conditions:
- condition: trigger
id:
- HC
- FULL
- MID
- condition: state
state: Heures Creuses
entity_id: input_select.mode_zendure
sequence:
- if:
- condition: trigger
id:
- MID
- condition: numeric_state
entity_id: sensor.solcast_pv_forecast_previsions_pour_aujourd_hui
above: 8
then:
- if:
- condition: state
state: input
entity_id: select.hyper_2000_chambre_ac_mode
- condition: state
state: input
entity_id: select.hyper_2000_chambre_ac_mode
then:
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_input_limit
else:
- action: select.select_option
metadata: {}
data:
option: input
target:
entity_id: select.hyper_2000_chambre_ac_mode
- action: select.select_option
metadata: {}
data:
option: input
target:
entity_id:
- select.hyper_2000_entree_ac_mode
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_input_limit
- action: input_select.select_option
metadata: {}
data:
option: Veille
target:
entity_id:
- input_select.mode_zendure
- if:
- condition: trigger
id:
- FULL
- HC
then:
- if:
- condition: state
state: input
entity_id: select.hyper_2000_chambre_ac_mode
- condition: state
state: input
entity_id: select.hyper_2000_chambre_ac_mode
then:
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_input_limit
else:
- action: select.select_option
metadata: {}
data:
option: input
target:
entity_id: select.hyper_2000_chambre_ac_mode
- action: select.select_option
metadata: {}
data:
option: input
target:
entity_id:
- select.hyper_2000_entree_ac_mode
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_limit_input
- action: input_select.select_option
metadata: {}
data:
option: Veille
target:
entity_id:
- input_select.mode_zendure
- conditions:
- condition: trigger
id:
- HP
sequence:
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id: automation.zendure_gestion_mode
- action: input_select.select_option
metadata: {}
data:
option: Automatique
target:
entity_id:
- input_select.mode_zendure
mode: single
Automatisme gestion mode :
alias: Zendure - Gestion mode
description: ""
triggers:
- trigger: state
entity_id:
- input_select.mode_zendure
id: MODE
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.decharge_zendure
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.zendure_charge_ac
- action: input_boolean.turn_off
metadata: {}
data: {}
target:
entity_id:
- input_boolean.charge_auto_zendure
- input_boolean.decharge_auto_zendure
- choose:
- conditions:
- condition: state
state: Charge
entity_id: input_select.mode_zendure
sequence:
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_output_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_output_limit
- action: select.select_option
metadata: {}
data:
option: input
target:
entity_id: select.hyper_2000_chambre_ac_mode
- action: select.select_option
metadata: {}
data:
option: input
target:
entity_id:
- select.hyper_2000_entree_ac_mode
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id: automation.zendure_charge_ac
- action: input_boolean.turn_on
metadata: {}
data: {}
target:
entity_id: input_boolean.charge_batterie_zendure
- conditions:
- condition: state
state: Décharge
entity_id: input_select.mode_zendure
sequence:
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_output_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_output_limit
- action: select.select_option
metadata: {}
data:
option: output
target:
entity_id: select.hyper_2000_chambre_ac_mode
- action: select.select_option
metadata: {}
data:
option: output
target:
entity_id:
- select.hyper_2000_entree_ac_mode
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id:
- automation.decharge_zendure
- action: input_boolean.turn_on
metadata: {}
data: {}
target:
entity_id:
- input_boolean.decharge_auto_zendure
- conditions:
- condition: state
state: Automatique
entity_id: input_select.mode_zendure
sequence:
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_output_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_output_limit
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id: automation.zendure_mode_intelligent
- if:
- condition: numeric_state
entity_id: sensor.consigne_zendure
below: 0
then:
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id: automation.zendure_charge_ac
- action: input_boolean.turn_on
metadata: {}
data: {}
target:
entity_id:
- input_boolean.charge_auto_zendure
else:
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id:
- automation.decharge_zendure
- action: input_boolean.turn_on
metadata: {}
data: {}
target:
entity_id:
- input_boolean.decharge_auto_zendure
- conditions:
- condition: state
state: Heures Creuses
entity_id: input_select.mode_zendure
sequence: []
- conditions:
- condition: state
state: Manuel
entity_id: input_select.mode_zendure
sequence:
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_output_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_output_limit
- conditions:
- condition: state
state: Veille
entity_id: input_select.mode_zendure
sequence:
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id: number.hyper_2000_chambre_output_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_output_limit
mode: single
Automatisme mode intelligent :
alias: Zendure - Mode Intelligent
description: ""
triggers:
- trigger: numeric_state
entity_id:
- sensor.shellypro3em_a0dd6ca18868_em2_power
for:
hours: 0
minutes: 0
seconds: 30
above: 50
id: Decharge
- trigger: numeric_state
entity_id:
- sensor.shellypro3em_a0dd6ca18868_em2_power
for:
hours: 0
minutes: 0
seconds: 30
id: Charge
below: -50
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- Charge
- condition: template
value_template: >-
{{ states('sensor.soc_global')|int <
((states('number.hyper_2000_chambre_soc_set')|int +
states('number.hyper_2000_entree_soc_set')|int)/2) }}
sequence:
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id:
- automation.decharge_zendure
- action: input_boolean.turn_off
metadata: {}
data: {}
target:
entity_id:
- input_boolean.decharge_auto_zendure
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_chambre_output_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_output_limit
- if:
- condition: numeric_state
entity_id: sensor.hyper_2000_chambre_electric_level
below: 100
then:
- action: select.select_option
metadata: {}
data:
option: input
target:
entity_id: select.hyper_2000_chambre_ac_mode
- action: select.select_option
metadata: {}
data:
option: input
target:
entity_id:
- select.hyper_2000_entree_ac_mode
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_chambre_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_input_limit
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id: automation.zendure_charge_ac
- action: input_boolean.turn_on
metadata: {}
data: {}
target:
entity_id:
- input_boolean.charge_auto_zendure
- conditions:
- condition: trigger
id:
- Decharge
- condition: template
value_template: >-
{{ states('sensor.soc_global')|int >
((states('number.hyper_2000_chambre_min_soc')|int +
states('number.hyper_2000_entree_min_soc')|int)/2) }}
sequence:
- action: automation.turn_off
metadata: {}
data:
stop_actions: true
target:
entity_id: automation.zendure_charge_ac
- action: input_boolean.turn_off
metadata: {}
data: {}
target:
entity_id:
- input_boolean.charge_auto_zendure
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_chambre_input_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_input_limit
- action: select.select_option
metadata: {}
data:
option: output
target:
entity_id:
- select.hyper_2000_chambre_ac_mode
- action: select.select_option
metadata: {}
data:
option: output
target:
entity_id:
- select.hyper_2000_entree_ac_mode
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_chambre_output_limit
- action: number.set_value
metadata: {}
data:
value: "0"
target:
entity_id:
- number.hyper_2000_entree_output_limit
- action: automation.turn_on
metadata: {}
data: {}
target:
entity_id:
- automation.decharge_zendure
- action: input_boolean.turn_on
metadata: {}
data: {}
target:
entity_id:
- input_boolean.decharge_auto_zendure
mode: single
Voilà, bon courage ! 
1 « J'aime »