Automatisation Chargeur EV en fonction de la production solaire

Bonjour,

Je débute en automatisation et je n’arrive pas à automatiser mon chargeur EV. J’ai noté que si le chargeur passe trop rapidement d’une valeur à une autre il se mets en défaut donc je dois ajouter des pauses entre 2 gros changement d’intensité

Ce que je souhaite faire en bon Français c’est ça :

Si 1000W < PV < 2800W et si intensité chargeur = 8A alors intensité chargeur = 10A
Si 1000W < PV < 2800W et si intensité chargeur = 16A alors intensité chargeur = 10A
Si 1000W < PV < 2800W et si intensité chargeur = 20A alors intensité chargeur = 16A pause de 0.5s puis 10A
Si 1000W < PV < 2800W et si intensité chargeur = 25A alors intensité chargeur = 20A pause de 0.5s puis 16A pause de 0.5s puis 10A
Si 1000W < PV < 2800W et si intensité chargeur = 32A alors intensité chargeur = 25A pause de 0.5s puis 20A pause de 0.5s puis 16A puis pause de 0.5s puis 10A

Si 2800W < PV < 4000W et si intensité chargeur = 8A alors intensité chargeur = 10A pause de 0.5s puis 16A
Si 2800W < PV < 4000W et si intensité chargeur = 10A alors intensité chargeur = 16A
Si 2800W < PV < 4000W et si intensité chargeur = 20A alors intensité chargeur = 16A
Si 2800W < PV < 4000W et si intensité chargeur = 25A alors intensité chargeur = 20A pause de 0.5s puis 16A
Si 2800W < PV < 4000W et si intensité chargeur = 32A alors intensité chargeur = 25A pause de 0.5s puis 20A pause de 0.5s puis 16A

Si 4000W < PV < 5000W et si intensité chargeur = 8A alors intensité chargeur = 10A pause 0.5s puis 16A pause 0.5s puis 20A
Si 4000W < PV < 5000W et si intensité chargeur = 10A alors intensité chargeur = 16A pause 0.5s puis 20A
Si 4000W < PV < 5000W et si intensité chargeur = 16A alors intensité chargeur = 20A
Si 4000W < PV < 5000W et si intensité chargeur = 25A alors intensité chargeur = 20A
Si 4000W < PV < 5000W et si intensité chargeur = 32A alors intensité chargeur = 25A pause 0.5s puis 20A

Si 5000W < PV < 6000W et si intensité chargeur = 8A alors intensité chargeur = 10A pause 0.5s puis 16A pause 0.5s puis 20A pause 0.5s puis 25A
Si 5000W < PV < 6000W et si intensité chargeur = 10A alors intensité chargeur = 16A pause 0.5s puis 20A pause 0.5s puis 25A
Si 5000W < PV < 6000W et si intensité chargeur = 16A alors intensité chargeur = 20A pause 0.5s puis 25A
Si 5000W < PV < 6000W et si intensité chargeur = 20A alors intensité chargeur = 25A
Si 5000W < PV < 6000W et si intensité chargeur = 32A alors intensité chargeur = 25A

Si PV > 6000W et si intensité chargeur = 8A alors intensité chargeur = 10A pause 0.5s puis 16A pause 0.5s puis 20A pause 0.5s puis 25A puis 32A
Si PV > 6000W et si intensité chargeur = 10A alors intensité chargeur = 16A pause 0.5s puis 20A pause 0.5s puis 25A pause 0.5s puis 32A
Si PV > 6000W et si intensité chargeur = 16A alors intensité chargeur = 20A pause 0.5s puis 25A pause 0.5s puis 32A
Si PV > 6000W et si intensité chargeur = 20A alors intensité chargeur = 25A pause 0.5s puis 32A
Si PV > 6000W et si intensité chargeur = 25A alors intensité chargeur = 32A

J’espère que quelqu’un pourra me dégrossir le code …

sensor.jk_bms_charging_power est la valeur en W de la puissance fournie par les panneaux solaires soit la valeur de PV

Pour passer à 10A mon chargeur il suffit de faire :
action:

  • device_id: f5751f38371a5483f199f93f04c42564
    domain: number
    entity_id: number.ev_charger_charging_currentev_charger_charging_current
    type: set_value
    value: 10

Merci de votre aide …

Salut,

à vu de nez comme ça, 0.5s ça me parait peu. Quel est le taux de rafraîchissement de ton capteur PV ? Parce que si c’est toutes les secondes alors ne te prends pas la tête, couple le rafraîchissement de ton capteur avec ton automatisation. Avec un truc du genre :

alias: rafraichissement_charge
description: ""
trigger:
  - platform: event
    event_type: state_changed
    event_data:
      entity_id: nom_de_ton_capteur_PV

Créer une entrée pour stocker la valeur de l’intensité de charge et fait une automatisation du genre :
Si nom_de_ton_capteur_PV > valeur
alors incrémente intensite_de_charge

Tu pourra même t’amuser à mettre un sinon et décrémenter la valeur.

Par contre je n’ai aucune idée si ton chargeur peut changer l’intensité à l’ampère près. Si ce n’est pas la cas il va falloir que je creuse un peu pour trouver comment faire les palier que tu décris.

Merci pour ton aide …
Je peux imposer à mon chargeur une valeur d’intensité de 8A à 32A ampère par ampère.
J’ai une valeur de puissance toute les 5s

Si c’est toutes les 5s qu’est rafraîchit ton capteur PV, entre temps inutile de changer la valeur de charge. Donc oublie ton délai de 0.5s et cale toi sur le rafraîchissement de ton capteur. L’avantage de coupler les deux sera que si tu veux t’amuser à rafraîchir plus souvent ton capteur PV, alors le changement de charge suivra.

Cool que tu puisse faire varier à l’ampère près. Du coup tu peux utiliser :

action: input_number.increment
metadata: {}
data: {}
target:
  entity_id: input_number.intensite_de_charge

Comme action pour augmenter la valeur et :

action: input_number.decrement
metadata: {}
data: {}
target:
  entity_id: input_number.intensite_de_charge

pour la diminuer.

Et en dernière action tu met :

device_id: f5751f38371a5483f199f93f04c42564
domain: number
entity_id: number.ev_charger_charging_currentev_charger_charging_current
type: set_value
value: "{{ states('input_number.intensite_de_charge') }}"

Tu n’as plus qu’à mettre en place les conditions incrémenter/décrémenter

Merci,

Je débute complètement avec les automatisations de HA et de ce fait je ne sais pas quoi faire de ton code ?
La seule automatisation que j’ai réussi à faire est de couper mon ballon d’eau chaude si la puissance de mes panneaux est inférieure à 900W en utilisant l’interface « Edit in visual editor » qui m’a de ce fait généré ce code :

alias: Eteint Ballon 50L si PV < 900W
description: «  »
trigger:

  • platform: numeric_state
    entity_id:
    • sensor.pv_charging_total
      for:
      hours: 0
      minutes: 0
      seconds: 5
      below: « 900 »
      condition:
  • condition: state
    entity_id: switch.ballon_ecs_50_l_switch_1
    state: « on »
    action:
  • target:
    device_id:
    - c4cad2c462863f8d60962192cb7dd0fc
    data: {}
    action: switch.turn_off
    mode: single

J’ai honte de mon incompétence sur ce sujet, pourrais-tu me donner le code complet à mettre dans une nouvelle automatisation HA ?

Par contre mon chargeur « plante » si je le fait passer directement de 8A à 20A par exemple, je dois passer de 8A à 13A dans un premier temps puis à 18A puis à 20A avec cette fameuse petite pause de 0.5 s

Merci encore …

Crée une nouvelle automatisation, passe en mode : « modifier en YAML », puis copie/colle le code :

description: ""
mode: single
trigger:
  - platform: event
    event_type: state_changed
    event_data: a_changer_nom_de_ton_capteur_PV
condition: []
action:
  - if:
      - condition: and
        conditions:
          - condition: numeric_state
            entity_id: a_changer_nom_de_ton_capteur_PV
            above: 1000
          - condition: numeric_state
            entity_id: input_number.a_changer_intensite_de_charge
            below: 10
    then:
      - action: input_number.increment
        metadata: {}
        data: {}
        target:
          entity_id: input_number.a_changer_intensite_de_charge

normalement après si tu repasse en mode : « Modifier dans l’éditeur visuel », tu devrais avoir les différents blocs : le déclencheur, le bloc « si-alors », le bloc « & » (qui ne sera vrai que si les n conditions à l’intérieur sont vraies).

C’est juste une base comme ça vite fait. Mais ça devrait te permettre de comprendre comment associer les différents bloc dans l’éditeur visuel et peaufiner ça selon tes besoins.

Et il ne faut pas avoir honte de son incompétence, on a tous commencé quelque part. L’important c’est de pratiquer et de se faire la main.

ça ne sera pas un problème si tu couple le rafraîchissement du capteur PV avec l’incrément d’intensité. Puisque le capteur sera rafraîchit toutes les 5s, alors au maximum l’intensité du chargeur augmentera de 1A toutes les 5s. C’est bien plus large que les 0.5s

J’ai un message d’erreur : Message malformed: expected dict for dictionary value @ data[‹ event_data ›]

Voici mon code :

description: «  »
mode: single
trigger:

  • platform: event
    event_type: state_changed
    event_data: sensor.jk_bms_charging_power
    condition:
    action:
  • if:
    • condition: and
      conditions:
      • condition: numeric_state
        entity_id: sensor.jk_bms_charging_power
        above: 1000
      • condition: numeric_state
        entity_id: number.ev_charger_charging_current
        below: 10
        then:
    • action: input_number.increment
      metadata: {}
      data: {}
      target:
      entity_id: number.ev_charger_charging_current
      alias: JBAUTO

là tel que je le lis il y a une erreur d’indentation sur le mot : « condition », il doit être aligné avec trigger.

Pourtant c’est aligné …

Essaye avec ça :

trigger:
  - platform: state
    entity_id:
      - sensor.jk_bms_charging_power

Merci de ton aide …

Désolé de ne répondre que maintenant mais j’ai eu une journée bien remplie !

Effectivement ça passe parfaitement avec la correction que tu as apporté.

La version « visual editor » est très facile à lire.

Par contre, je ne comprends pas bien ce que va faire ceci :

Input number ‹ Increment › on EV charger Charging current

Je suppose que cela va incrémenter la valeur de « EV charger Charging current » mais de quelle valeur ? peut-être de 1A ?

Si tu cherche à ajouter cette action tu verra cette fenêtre :

Il est donc dit que c’est un pas. Ce pas est définit lors de la création de ton entrée :


Tout en bas tu peux voir taille du pas. À toi de définir quel est le pas qui te convient.

Je me permet de te poser une petite question aussi, quel est ton chargeur ? Parce que c’est le genre de truc que j’aimerai bien faire aussi. Mais pour l’instant j’ai juste un chargeur, on va dire, classique. Pas de possibilité de le régler.

Avec l’intégration TUYA LOCAL tu obtiens toutes ces entités :

Pour le début évite de modifier ton fichier configuration.yaml. Il ne suffit de pas grand chose pour que ça te bloque tout. Quand tu sera plus à l’aise pourquoi pas.

Perso je serai passé par une variable intermédiaire, une entrée numérique

Puis j’aurai imposé la valeur de cette entrée au chargeur avec :

Mais peut-être que tu peux directement incrémenter la variable fournie par l’intégration Tuya, j’imagine que ça doit être le pas par défaut, donc 1.

En gros pour résumer :

  • Si tu passe par une entrée intermédiaire tu peux appliquer les contraintes que tu veux, min, max, pas. (voir capture d’écran)
  • Si tu incrémente directement la variable fournie par Tuya, je ne peux pas te dire quel sera le pas ou si tu verra un problème apparaître aux minimum et maximum.

Le plus simple est d’essayer et de voir ce que ça donne. Si jamais tu pourra toujours créer l’entrée plus tard et l’intégrer à ton automatisation.

J’ai 2 questions :

1- en 5s (lorsque un nuage couvre le soleil et se retire rapidement) je peux passer de 1000W à 7000W et je devrai donc passer de 8A à 32A et si je ne le fait pas par étape le chargeur va se mettre en sécurité car il faut augmenter son intensité plus lentement

2- Je dois créer une 2ème automatisation pour décrémenter ?

Merci

  1. Non ce n’est pas comme ça que ce comportera l’algorithme. Il fera la chose suivante :
    Ton capteur PV est actualisé → déclenchement de l’automatisation.
    SI la ou les conditions sont respectées ALORS number.ev_charger_charging_current sera incrémenté. Donc comme supposé ton intensité de charge passera, par exemple de 10A à 11A.

5s plus tard, ton capteur PV sera à nouveau actualisé → déclenchement de l’automatisation.
SI la ou les condition son respectées ALORS number.ev_charger_charging_current sera incrémenté. On passe alors de 11A à 12A

5s plus tard, ton capteur PV sera à nouveau actualisé → déclenchement de l’automatisation.
SI la ou les condition son respectées ALORS number.ev_charger_charging_current sera incrémenté. On passe alors de 12A à 13A

etc …

2)Non pas besoin d’une seconde automatisation, tout en bas du bloc « Si Alors », tu as : Ajouter « sinon ». C’est à dire le comportement que tu souhaite si les conditions ne sont pas respectées. Tu peux donc viser un comportement du type :

SI (PV > 1000 ) & (intensité < 10)
Alors incrément
SINON SI (PV > 2000) & (intensité < 20)
ALORS incrément
SINON SI (PV > 3000) & (intensité < 32)
ALORS incrément
SINON décrément

Dans un cas comme ça si tes panneaux délivre entre 1000W et 2000W, alors l’intensité augmentera jusqu’à un maximum de 10A. Arrivé à 10A, la condition : (intensité < 10) est fausse, donc le premier bloc, n’incrémentera plus. Les deux autres n’incrémenteront pas non plus, mais eux c’est parce que la condition (PV > valeur) est fausse. Ça sera donc le bloc SINON qui sera exécuté.

Pour 2001 < PV < 3000, tu incrémentera l’intensité de 10A à 20A
Pour PV > 3000, tu incrémentera l’intensité jusqu’à 32A.

Autre exemple :
1001 < PV < 2000, et intensité à 32A
La première condition ne sera pas respecté car (intensité < 10) est fausse, idem pour la seconde. En ce qui concerne la troisième vu que PV < 3000 elle sera fausse également. C’est donc le bloc SINON qui sera exécuté et l’intensité commencera à décroître, jusqu’à atteindre la valeur de 10A.

En imbriquant les différents bloc et en jouant sur les différentes conditions, tu n’es pas obligé d’ajouter une deuxième automatisation.

En l’état le seul problème que je vois et que cette automatisation va te faire osciller ta valeur d’intensité dans certain cas. Exemple :

PV = 1001W, I = 10A
Les différentes conditions seront fausse → décrément de l’intensité

PV = 1001W, I = 9A
Première condition vraie → incrément

PV = 1001W, I = 10A retour à la case départ.

Je ne sais pas si ce comportement est à éviter ou non.

alias: 0JB
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.victron_system_dc_pv_power
condition: []
action:
  - if:
      - condition: and
        conditions:
          - condition: numeric_state
            entity_id: sensor.ev_charger_charging_current
            below: 10
          - condition: numeric_state
            entity_id: sensor.victron_system_dc_pv_power
            above: 1000
            below: 2800
    then:
      - action: input_number.increment
        metadata: {}
        data: {}
        target:
          entity_id: number.ev_charger_charging_current
    else:
      - if:
          - condition: and
            conditions:
              - condition: numeric_state
                entity_id: sensor.ev_charger_charging_current
                below: 16
              - condition: numeric_state
                entity_id: sensor.victron_system_dc_pv_power
                above: 2801
                below: 4000
        then:
          - action: input_number.increment
            metadata: {}
            data: {}
            target:
              entity_id: number.ev_charger_charging_current
        else:
          - if:
              - condition: and
                conditions:
                  - condition: numeric_state
                    entity_id: sensor.ev_charger_charging_current
                    above: 20
                  - condition: numeric_state
                    entity_id: sensor.victron_system_dc_pv_power
                    below: 4001
                    above: 5000
            then:
              - action: input_number.increment
                metadata: {}
                data: {}
                target:
                  entity_id: number.ev_charger_charging_current
            else:
              - if:
                  - condition: and
                    conditions:
                      - condition: numeric_state
                        entity_id: sensor.ev_charger_charging_current
                        above: 25
                      - condition: numeric_state
                        entity_id: sensor.victron_system_dc_pv_power
                        above: 6000
                then:
                  - action: input_number.increment
                    metadata: {}
                    data: {}
                    target:
                      entity_id: number.ev_charger_charging_current
                else:
                  - action: input_number.decrement
                    metadata: {}
                    data: {}
                    target:
                      entity_id: number.ev_charger_charging_current
mode: single

Je pense que ça donne ça … je teste demain …
Encore un grand MERCI !

Pour moi, je passerai par une étape intermediaire, définir la puissance voulue du Chargeur.
Cela permettrais d’avoir un code sur l’automatisation bcp plus simple et plus évolutif. De plus pouvoir afficher cette infos sur un/des dashboard ou en badges

(et on peut faire des truc super avec les badges (l’icône peut changer via des templates, la couleurs aussi, … ).

ha badge pv