Borne Feyree 7kW : installation, configuration et automatisation complète

Salut à tous,

En ces temps d’électrification du parc automobile, je me suis dit que partager mon installation de borne de charge pourrait en aider/inspirer certains.
J’en avais parlé brièvement dans un autre sujet, mais voici enfin un retour complet.

Depuis, j’ai acquis une BMW i4 eDrive 40 (et non une Tesla, avec laquelle j’hésitais).
Quelle machine, pleine de technologies ! :grin:

  1. Achat de la borne Feyree
    Il existe plusieurs puissances disponibles.
    Avec mon installation électrique privée assez limitée (ancien compteur 30A délivrant 6900W max sous 230V), j’ai choisi une borne Feyree 7KW.

:point_right: Actuellement à 160 € sur AliExpress, son rapport qualité/prix est imbattable.
Elle permet un réglage de 8A à 32A par pas de 1A.

:arrow_right: Lien vers la borne : feyree Tragbares EV-Ladegerät Typ2 32A 7KW Schnellladung für Elektrofahrzeuge APP-WLAN-Steuerung per Einstellstrom- und Ladezeit - AliExpress 34

  1. Installation électrique

J’avais déjà un tableau secondaire installé dans le garage, commandable via un sectionneur situé dans le tableau principal.
Le tableau secondaire est conforme aux normes, protégé par un disjoncteur différentiel, et la borne est raccordée via un disjoncteur 40A (je n’atteindrai jamais cette intensité).

Le câblage est fait en 10 mm² (comme entre le compteur et le tableau principal).
Distance borne ↔ tableau principal : ~25m.

Quelques précautions à prendre :

  • Vérifiez les résistances de câbles pour éviter les surchauffes.
  • Prenez en compte la production photovoltaïque si vous êtes équipés : chez moi, je peux produire 5kW tout en chargeant la voiture à 6kW.

:point_right: La borne Feyree est prévue pour du câble en 6 mm².
Le câble fourni étant trop court, j’ai dû réaliser un raccord via 3 borniers DIN 6-10 mm² :

En-dessous du tableau électrique, j’ai également installé un Magic WiFi 6 (CPL) pour assurer une connexion optimale à la borne (qui ne possède pas de prise RJ45).

  1. Récupérer les informations des capteurs et les commandes dans Home Assistant
    La récupération des capteurs et commandes se fait via Tuya Local.
    Attention : à ne pas confondre avec Local Tuya (plus complexe à configurer).
    Suivez ce guide pour l’intégration : Feyree Fey123 : intégration dans HA via Tuya Local

:gear: Avant cela, il faut correctement intégrer Tuya dans Home Assistant, en suivant ce tuto (par @MakerNix ) : Tuya sur Home Assistant

  1. Mettre en place une gestion dynamique de la charge pour une sécurité et une efficacité maximale

Pour éviter de surcharger mon installation, j’ai d’abord créé un tableau Excel basé sur mon compteur 30A monophasé.
Les seuils calculés apparaissent en jaune :

Finalement, j’ai simplifié l’automatisation, car :

  • Trop d’ordres répétés font parfois bugger la borne.
  • Lorsqu’un gros appareil est allumé, la consommation oscille avant de se stabiliser → besoin d’attendre avant de réagir.

Le compteur tolère quelques dépassements temporaires, ce qui m’a permis de rendre mon automatisation plus robuste.

Création de templates dans Home Assistant :

a) Puissance disponible pour la borne :

{% set P_total = states('sensor.shellyproem50_em0_power') | float(0) %}
{% set P_borne = (states('sensor.ev_charger_puissance') | float(0)) * 1000 %}
{% set P_maison = [P_total - P_borne, 0] | max %}
{% set P_dispo = 6900 - P_maison %}
{{ [P_dispo, 0] | max }}

b) Ampères disponibles pour la borne:

{% set P_dispo = states('sensor.puissance_dispo_pour_ev_charger') | float(0) %}
{% set amp_dispo = (P_dispo / 230) | round(0, 'floor') %}
{% set steps = [8, 12, 16, 20, 24, 28, 32] %}

{% if amp_dispo < 10 %}
  8
{% else %}
  {% set valid = steps | select('le', amp_dispo) | list %}
  {{ valid[-1] if valid else 8 }}
{% endif %}

Mon automatisation finale, stable, testée (four en fonctionnement pendant la charge, etc.) :

alias: Auto_Borne_Charge
description: >-
  Ajuster la borne de charge en fonction de la puissance disponible dans la
  maison.
triggers:
  - trigger: time_pattern
    seconds: /30
  - value_template: >
      {{ states('sensor.i4_edrive40_remaining_battery_percent') | int >=
      states('sensor.i4_edrive40_charging_target') | int }}
    trigger: template
  - trigger: numeric_state
    entity_id:
      - sensor.ev_charger_amperage_dispo
    below: 10
conditions:
  - condition: or
    conditions:
      - condition: state
        entity_id: sensor.ev_charger_status
        state: plugged_in
      - condition: state
        entity_id: sensor.ev_charger_status
        state: charging
      - condition: state
        entity_id: sensor.ev_charger_status
        state: charged
actions:
  - choose:
      - conditions:
          - condition: and
            conditions:
              - condition: numeric_state
                entity_id: sensor.i4_edrive40_charging_target
                above: sensor.i4_edrive40_remaining_battery_percent
              - condition: numeric_state
                entity_id: sensor.ev_charger_amperage_dispo
                above: 10
        sequence:
          - if:
              - condition: not
                conditions:
                  - condition: state
                    entity_id: select.ev_charger_toggle_charging
                    state: Start charging
            then:
              - target:
                  entity_id: select.ev_charger_toggle_charging
                data:
                  option: Start charging
                action: select.select_option
          - if:
              - condition: template
                value_template: >-
                  {{ (states('number.ev_charger_set_charge_current') |
                  int(default=0)) !=
                     (states('sensor.ev_charger_amperage_dispo') | int(default=12)) }}
            then:
              - target:
                  entity_id: number.ev_charger_set_charge_current
                data:
                  value: >-
                    {{ states('sensor.ev_charger_amperage_dispo') |
                    int(default=12) }}
                action: number.set_value
      - conditions:
          - condition: or
            conditions:
              - condition: template
                value_template: >
                  {{ states('sensor.i4_edrive40_remaining_battery_percent') |
                  int >= states('sensor.i4_edrive40_charging_target') | int }}
              - condition: numeric_state
                entity_id: sensor.ev_charger_amperage_dispo
                below: 10
        sequence:
          - target:
              entity_id: select.ev_charger_toggle_charging
            data:
              option: Stop charging
            action: select.select_option
mode: restart
  1. Affichage dans Home Assistant

Voiture non en charge :
image

Voiture en charge :
ezgif-682272dfffddb1
Une information disponible apparaît automatiquement en plus: c’est heure finale de la charge pour atteindre la cible.

Et voici le code de mon tableau de bord :

type: custom:vertical-stack-in-card
cards:
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        entity: sensor.i4_edrive40_mileage
        icon: mdi:car-electric
        icon_color: |-
          {% if states('sensor.ev_charger_status') == 'charging' %} orange 
          {% else %} white 
          {% endif %}
        primary: >-
          Charge | {{ states('sensor.i4_edrive40_remaining_battery_percent') |
          float(0) | int }}% | {{
          states('sensor.i4_edrive40_remaining_range_total') | float(0) | int
          }}Km
        secondary: >-
          {{ states('sensor.ev_charger_puissance_w') | float(0) | int }}W |  {{
          states('sensor.ev_charger_current_l1') | float(0) | int }}A  {% if
          states('sensor.ev_charger_status') == 'charging' %} | {{
          as_timestamp(states('sensor.i4_edrive40_charging_end_time')) |
          timestamp_custom('%H:%M') }} {% endif %}
        tap_action:
          action: more-info
          entity: sensor.i4_edrive40_mileage
        card_mod:
          style: |
            ha-card {
              padding: 0px;
              min-height: 35px;
              border: none !important;
              box-shadow: none !important;
            }
            ha-state-icon {
              {% if states('sensor.ev_charger_status') == 'charging' %}
                animation: blink 1s infinite;
              {% endif %}
            }
            @keyframes blink {
              0% { opacity: 1; }
              50% { opacity: 0.5; }
              100% { opacity: 1; }
            }
      - type: custom:mushroom-number-card
        entity: number.i4_edrive40_target_soc
        icon: mdi:battery-charging
        icon_color: white
        name: Target
        display_mode: buttons
        layout: horizontal
        secondary_info: none
        card_mod:
          style: |
            ha-card {
              padding: 0px;
              min-height: 35px;
              border: none !important;
              box-shadow: none !important;
            }
2 « J'aime »