Accueil > Solaire > Domotiser une borne de recharge EV de marque LIDL

Domotiser une borne de recharge EV de marque LIDL

vendredi 1er août 2025, par johann

L’enseigne LIDL commercialise, sous la marque « Ultimate Speed », une borne de recharge murale USWB11 dédiée aux véhicules électriques. Cette borne est équipée d’une interface de communication de type série RS485. L’objectif du présent article est de présenter une démarche afin de l’intégrer à au système domotique Home Assistant.

La domotisation de la borne USWB11 a pour double objectif d’optimiser l’autoconsommation en affectant le surplus de production photovoltaïque à la recharge du véhicule électrique, et de limiter la puissance appelée sur le réseau ENEDIS lors d’une recharge en heures creuses, grâce à un seuil de consigne paramétrable.

 

Mise en garde

La puissance d’une borne de recharge pour véhicule électrique installée par un particulier est limitée à 3,7 kW (16 A). Pour les installations de puissance supérieure, le décret n° 2021-546 du 4 mai 2021, article 15, impose de faire appel à un professionnel disposant de la qualification IRVE (Infrastructure de Recharge de Véhicules Électriques).

L’installation et l’utilisation d’équipements électriques comportent des risques graves, notamment d’incendie et d’électrocution. Il est essentiel de respecter scrupuleusement les normes de sécurité en vigueur et de faire appel à un professionnel qualifié si nécessaire. Ce dernier sera en mesure de vous proposer une borne de recharge intégrant par construction les fonctionnalités décrites dans cet article. Vous êtes seul responsable de vos actions et des conséquences qui en découlent.

 

Raccordement électrique

En branchement monophasé, la borne LIDL Ultimate Speed USWB11 respecte la limitation évoquée précédemment de 3,7 kW (16 A).
À titre informatif, dans mon cas particulier, la protection est assurée par un interrupteur différentiel de type F, d’une sensibilité de 30 mA et un disjoncteur magnéto-thermique d’un calibre 16A courbe C. Une protection par disjoncteur différentiel est également envisageable (Exemple de produit Legrand 410753)

L’installation est complétée par un contacteur heures creuses (HC) monté en série avec la borne de recharge, ainsi qu’un dispositif de mesure de type Shelly Pro EM-50. Le contacteur heures creuses est commandé via le contact sec intégré au boîtier Shelly Pro EM. Ces deux équipements sont protégés par un disjoncteur C-2A.

Le raccordement entre la borne de recharge et le tableau électrique est réalisé grâce à un câble de type 3G6 (soit en 6 mm²) sur les borniers 30, 33 et 34. L’accès aux points de connexion, visibles sur l’image D, s’effectue en dévissant le panneau arrière de la borne.

 

Port de communication RS485 : Raccordements & Paramétrage

La documentation de la borne USWB11 précise qu’elle est compatible avec le protocole Modbus et dispose de 3 ports de communication RS485 situés à coté des connexions de puissance, sur le bornier 22.

La configuration des paramètres de la borne s’effectue via 4 roues codeuses situées derrière la trappe repérée 35, sur le côté gauche du boîtier. Le courant maximal de charge peut être réglé à l’aide de la roue codeuse n°42, tandis que les adresses « esclaves » Modbus sont définies via les roues codeuses 41 (Net1/Net2) et 39-40 (Smart Meter Gateway).

On notera également la présence d’un port USB repéré 43 dans le manuel utilisateur.

Les registres Modbus interrogeables sont également documentés dans le manuel utilisateur.

Malgré toutes mes tentatives, je n’ai pas été en mesure de dialoguer directement avec la box depuis un PC, aussi je soupçonnes une implémentation spéciale du protocole. Plutôt que de chercher à tout réinventer, je me suis contenté de suivre les indications disponibles sur le Github de Max Mustermann.

Les connexions de la liaison RS485 étant situées à proximité de l’alimentation en 230 V secteur, il est impératif de les effectuer HORS TENSION, comme pour toute intervention sur des connexions électriques, ceci afin d’éliminer tous risques d’électrocution.

Une fois le panneau arrière refermé et la borne fixée sur son support mural, le paramétrage des roues codeuses situées dans la trappe de gauche peut être réalisé sous tension, en respectant évidemment toutes les précautions d’usage. L’ouverture de la trappe repérée 35 protégeant les roues codeuses est détectée par le switch repéré 38 (image E), ce qui active le mode configuration et un affichage spécifique sur l’écran de la borne. Une photo est présentée ci-dessous.

Cette affichage reprend le courant de réglage de la borne (16A), l’adresse Modbus de la liaison RS485 Net1/2 (esclave n°1), l’adresse Modbus de la liaison RS485 « Smart Meter Gateway » (maître adresse 0), ainsi que d’autres éléments non pertinent ici.

Une fois la trappe de gauche refermée, si la communication échoue, la borne affichera un message d’erreur (Error 19). Cela n’a pas d’impact dans un premier temps, l’installation reste à finaliser.

J’ai configuré ma borne de recharge avec un courant maximal de 16A et j’utilise le port RS485 Net2, avec l’adresse d’esclave définie sur 1.

 

Communication avec la borne

La communication entre Home Assistant et la borne LIDL se fera via un microcontrôleur ESP32 et une carte d’adaptation RS485. Home Assistant échangera en Wi-Fi avec le microcontrôleur, qui, lui, communiquera en RS485 avec la borne. Plusieurs options sont disponibles pour ces deux composants :

  • Pour le microcontrôleur, l’ESP32 Wroom Low Power DevKit de uPesy est un choix convenable, et c’est surtout celui que j’avais en stock. D’autres modèles d’Olimex ou Aliexpress seraient également des choix possibles.
  • La carte d’adaptation permet d’interfacer les signaux série du micro-contrôleur (en 3.3V), vers une liaison différentielle RS485 (en ± 7V). Le Github de Max Mustermannrecommande le modèle Waveshare 4777 RS485 Board (3.3V), mais un modèle avec séparation galvanique également proposé par le fabricant Warehouse, conviendrait aussi. En fonction de la carte choisie, il sera peut-être nécessaire d’adapter le schéma et l’alimentation de celle-ci (3.3V ou 5V).

Pour information, Waveshare propose une documentation claire et complète des deux modèles de carte, ici (modèle non isolé) et ici (modèle isolé).

source : https://github.com/bammab/custom_components_for_esphome/issues/2

Ce schéma ne constitue qu’un exemple, les choix des entrées / sorties sur le micro-contrôleur étant paramétrables depuis l’intégration ESPHome de Home Assistant, tout comme l’adresse Modbus esclave réellement réglée sur la borne de recharge. Les paramètres de la liaison série RS485 sont par contre fixes et imposés par la borne : 8 bits de données, aucune parité, 1 bit de stop, vitesse de la ligne 4800 bits/s.

Pour ma part, j’utilise la version isolée de la carte d’adaptation RS485. Son raccordement est plus simple, se limitant aux connexions RX, TX et aux deux fils d’alimentation.

 

ESPHome et intégration à Home Assistant

Pour utiliser ESPHome avec Home Assistant, il est nécessaire d’ajouter ESPHome au système. L’installation peut être réalisée en un clic depuis le site officiel du projet ESPHome. Cette opération installe automatiquement l’add-on « ESPHome Device Builder » qui permet une programmation simplifiée — grâce à un fichier de configuration YAML — du micro-contrôleur ESP32 ainsi que l’intégration « ESPHome » qui mettra à disposition les entités Home Assistant créées. Une fois l’installation terminée, il est alors possible de créer un nouvel objet connecté type ESP directement depuis la barre de menu de gauche dans Home Assistant.

Un fichier de configuration de base pour la borne LIDL est disponible sur le Github de Max Mustermann. Il devra être adapté en fonction de votre câblage spécifique et du modèle de votre carte d’adaptation RS485. Le premier téléversement du code vers le micro-contrôleur ESP32 doit être réalisé via un câble USB. Par la suite, les corrections et mises à jour pourront ensuite être réalisées en WIFI. Ci-dessous mon fichier de configuration :

      esphome:
        name: lidl
        friendly_name: Lidl

      esp32:
        board: esp32dev
        framework:
          type: arduino

      wifi:
        ssid: !secret wifi_ssid
        password: !secret wifi_password

        # Enable fallback hotspot
        ap:
          ssid: "LidlHA"
          password: "*************"

      external_components:
        - source: github://bammab/custom_components_for_esphome

      uart:
        id: uswb_uart
        rx_pin: GPIO23
        tx_pin: GPIO22
        baud_rate: 4800
       stop_bits: 1

      uswb:
        id: uswb_controller
        uart_id: uswb_uart
        send_wait_time: 200ms
        address: 2
        update_interval: 10s

      sensor:
        - platform: uswb
          id: requested_current
          uswb_id: uswb_controller
          name: "USWB11A1 Requested Current"

       number:
        - platform: uswb
           id: allowed_current
           uswb_id: uswb_controller
          name: "USWB11A1 Allowed Current"
           max_current: 16
        

Cette configuration crée deux entités dans Home Assistant :

  • Une entité de type sensor (sensor.lidl_uswb11a1_requested_current) qui contient le courant maximal délivrable par la borne (ici 16A) et qui a été réglé précédemment à l’aide de la roue codeuse n°42.
  • Une entité de type number (number.lidl_uswb11a1_allowed_current), réglable entre 0 et le courant maximal délivrable. Cette entité correspond au courant effectivement délivré par la borne et permet d’ajuster la puissance de charge.

Nota :

  • Le courant minimal délivré par la borne est de 6A. Bien que l’entité number autorise une valeur comprise entre 0 et 6A, la borne ne délivrera pas de courant en dessous de ce seuil.
  • Les entités sont renseignée uniquement lorsque la borne est sous tension (ESP32 sous tension). Quand la borne est mise hors tension, les entités deviennent indisponibles après un délai que je n’ai pas encore évalué.

Une fois la partie logicielle fonctionnelle, le message d’erreur éventuel (Error 19) devrait normalement disparaître. Vous pouvez redémarrer la borne en coupant l’alimentation si nécessaire.

J’ai opté pour la fixation de la carte micro-contrôleur et de la carte d’adaptation série à l’aide de colliers Colson, directement dans l’emplacement arrière la borne de recharge. Le micro-contrôleur est alimenté à partir de la prise USB intégrée à la borne (repère 43). Cela nécessite le passage d’un câble USB type A vers USB type C entre l’emplacement arrière (zone puissance et RS485) et l’emplacement latéral gauche (zone des roues codeuses). Cette opération, relativement simple grâce à un passe-fil, doit impérativement être réalisée hors tension.

 

Mesures et Analyses

Le courant de charge du véhicule est désormais réglable directement depuis Home Assistant. J’ai réalisé quelques essais électriques, à partir des données mesurées par le shelly pro 50 EM pour mon véhicule électrique, une Toyota Bz4X. Les résultats sont les suivants :

Courant« Home Assistant » Courant mesuré Puissance de charge Facteur de puissance
0 A → 6 A
3,73 A
772W
0,9
7 A
4,68 A
1008 W
0,94
8 A
6,16 A
1357 W
0,96
9 A
7,45 A
1666W
0,97
10 A
8,81 A
1984 W
0,98
11 A
9,82 A
2240 W
0,99
12 A
10,84 A
2458 W
0,99
13 A
11,96 A
2711 W
0,99
14 A
12,96 A
2939 W
0,99
15 A
14,01A
3176 W
0,99
16 A
15,03A
3408 W
0,99

L’analyse des points 7 A ; 4.68 A ; 1008 W vs 14 A ; 12.96 A ; 2939 W ou 8 A ; 6.16 A ; 1357 W vs 16 A ; 15.03 A ; 3408 W montre l’absence de linéarité entre la puissance réellement délivrée par la borne de recharge et la consigne de courant dans Home Assistant (number.lidl_uswb11a1_allowed_current).

ChatGPT confirme la forme quadratique de la courbe.

Le pilotage doit s’effectuer en puissance. Toutefois, la conversion de la consigne de puissance en une consigne de courant, nécessitant l’utilisation d’une fonction réciproque, s’avère complexe et peu adaptée à une mise en œuvre dans un environnement domotique. Ainsi, deux approches plus pertinentes peuvent être envisagées :

  • On observe un écart de puissance moyen d’environ 260 W entre deux points de consigne de courant consécutifs. Les niveaux de puissance étant définis par des paliers discrets, une approche pertinente consisterait à approximer cette caractéristique par une courbe en escalier, avec des paliers de 260 W. Ainsi, pour ajuster la consigne de courant dans Home Assistant, que ce soit à la hausse ou à la baisse il suffit de diviser la puissance allouable par 260, puis d’ajouter le résultat à la consigne de courant actuelle.

    Cette approche revient à se faire un modèle discret (numérique) de la courbe, avec une résolution (quantum) de 260 W. La faible résolution, équivalente à une numérisation sur 4 bits, contribue à atténuer les effets de la non-linéarité de la courbe.

  • La seconde approche consisterait à stocker les points mesurés dans une liste triée. Il suffit alors de rechercher dans cette liste la valeur immédiatement inférieure à la puissance recherchée. L’indice de l’élément trouvé déterminerait alors la nouvelle consigne de courant à appliquer dans Home Assistant. C’est en effet un algorithme classique de « recherche du maximum sous plafond dans une liste triée ».
    Au regard du nombre limité de points dans la liste, il est envisageable de traiter cela avec des structures « if / then / else ». Cette approche permet d’utiliser un template dans Home Assistant, évitant ainsi le recours à des solutions plus complexes.
         {% set power = states('input_number.simul_puissance_solaire') | float(0) %}
         {% if power >= 3408 %} 16
         {% elif  3408 > power >= 3173 %} 15
         {% elif  3173 > power >= 2939 %} 14
         {% elif  2939 > power >= 2711 %} 13
         {% elif  2711 > power >= 2458 %} 12
         {% elif  2458 > power >= 2240 %} 11
         {% elif  2240 > power >= 1984 %} 10
         {% elif  1984 > power >= 1666 %}  9
         {% elif  1666 > power >= 1357 %}  8
         {% elif  1357 > power >= 1008 %}  7
         {% else %} 6
         {% endif %}

Une remarque sur ces deux méthodes : La première méthode offre une flexibilité accrue, permettant à la consigne de courant d’être ajustée soit de manière relative (en fonction de son état précédent), soit de manière absolue. En revanche, la seconde méthode est plus rigide, car elle ne permet qu’un positionnement absolu de la consigne de courant.

Tout ce travail pour simplement contrôler le courant de charge peut sembler peu utile en soi. Cependant, les automatisations offertes par Home Assistant permettront d’apporter des améliorations intéressantes à la gestion énergétique .

Avant d’aller plus loin, voici quelques précisions sur mon installation électrique et les éléments déjà intégrés à mon système domotique :

  • Un contrat de livraison d’énergie électrique Tempo de 6kVA et un compteur Linky, équipé avec un dispositif TIC (TéléInformation Client) en mode standard, qui informe Home Assistant sur :
    • La période tarifaire en cours,
    • Les consommations pour chacune des périodes,
  • Deux dispositifs de mesure de type Shelly Pro EM - 50 renvoyant :
    • L’état électrique du réseau Enedis (courant, tension, puissance, ...),
    • L’état électrique de la borne de recharge EV (courant, tension, puissance, ...),
    • L’état électrique de la maison (courant, tension, puissance, ...),
  • Un onduleur solaire hybride de marque Deye avec batterie, et de l’intégration Solarman sur Home Assistant proposant entre autres :
    • L’état de la batterie (SOC, puissance, courant, ...)
    • La puissance solaire produite.

 

Automatisation de la charge EV en « Heures Creuses »

Comme mentionné précédemment, un contrat de fourniture d’électricité Tempo a été souscrit avec une puissance apparente limitée à 6 kVA. L’ajout récent d’un véhicule électrique introduit un risque de dépassement de cette puissance contractuelle, notamment lorsque plusieurs appareils électroménagers ou systèmes énergivores fonctionnent simultanément.

L’objectif de l’automatisation est donc de moduler dynamiquement la puissance délivrée à la borne de recharge, de manière à exploiter au maximum la puissance ENEDIS disponible sans jamais dépasser un seuil de puissance paramétrable.

Voici les relevés pour une puissance Enedis maximale fixée à 5000 W :

  • En début d’heures creuses (22h00), l’automatisation limite la puissance de la borne électrique pour éviter de dépasser le seuil de 5000 W coté Enedis.
  • Aux alentours de 1h00 du matin, les gros consommateurs ne nécessitant plus d’énergie, l’automatisation permet à la borne électrique d’atteindre sa puissance maximale.
  • Le petit pic/creux observé à 4h30 du matin correspond au démarrage du lave-linge.

Pour régler cette automatisation, nous avons besoin de 2 entités :

  • Une entité de type « input_boolean » qui permet de d’activer ou de désactiver la régulation « heures creuses » (input_boolean.ev_charge_hc)
  • Une entité de type « input_number » qui permet d’ajuster le seuil de puissance à ne pas dépasser (input_number.ev_threhold_house_max_power). J’ai retenu pour mon cas, un minimun à 1000, un maximum à 5500 et un pas de 100.

Ces entités sont à créer dans l’onglet « Entrées » des menus « paramètres » / « Appareils et services ».

La première solution évoquée dans le paragraphe précédent, « Mesures et Analyses », semble la plus adaptée pour assurer cette régulation, avec ici une quantification à 300 W.

Elle nécessite l’ajout d’une troisième entité (sensor.ev_consigne_courant_hc) de type « template / sensor », chargée de recalculer dynamiquement la consigne de courant de la borne à chaque variation du seuil de puissance ou de la puissance Enedis.

L’ensemble du calcul sera directement intégré dans le code du template au format texte ici

La suite est relativement simple. À chaque mise à jour de l’entité contenant la consigne calculée « sensor.ev_consigne_courant_hc », et si la régulation est activée « input_boolean.ev_charge_hc », la consigne de courant de la borne « number.lidl_uswb11a1_allowed_current » est ajustée en conséquence.

La condition « Si PC-Voiture power est supérieur à 500 » permet simplement de vérifier que le véhicule est bien connecté à la borne et que la charge a commencé. Cette condition est facultative, car un moyen de mesure sur la borne de recharge est alors nécessaire.

De même, la condition « Si Is_Heures_Creuses est dans l’état Activé » est également facultative Je l’ai ajouté pour différencier le fonctionnement en heures creuses de celui basé sur l’excédent solaire. L’information est récupérée depuis le paramètre ltarf de la télé-information du Linky à l’aide du template suivant :

 - binary_sensor :
   - name : "Is Heures Creuses"
     unique_id : Is Heures Creuses
     state : >
        % set zone_tarif = states(’sensor.linky_ltarf’) | urlencode | replace("%20", "") %
        % if zone_tarif == "HCBLEU" or zone_tarif == "HCBLANC" or zone_tarif == "HCROUGE" % True
        % else % False
        % endif %

Pour palier d’éventuelles pertes d’événements sur l’entité « sensor.ev_consigne_courant_hc » une synchronisation automatique est effectuée toutes les minutes, garantissant ainsi une mise à jour fiable de la consigne.

Le Yaml de l’automatisation est téléchargeable ici.

Pour le fun, et pour anticiper le fonctionnement de la borne en valorisation solaire, on pourrait envisager la solution n°2 du paragraphe précédent « Mesures et Analyses ». Il est nécessaire de calculer la puissance disponible correspondant à la différence entre le seuil de puissance fixé et la puissance mesurée par Enedis et tenant compte de la puissance actuellement délivrée par la borne. La connaissance de la puissance absorbée/délivrée par la borne, estimée par le réglage en cours ou mesurée, est donc indispensable.
La troisième entité (sensor.ev_consigne_courant_hc) de type « template / sensor » évoquée précédemment pourrait ressembler au code suivant :

 

Automatisation de la charge de « valorisation solaire »

L’objectif est de prioriser le stockage de l’énergie solaire dans les batteries et, une fois celles-ci chargées au-delà d’un seuil ajustable, rediriger l’excédent vers la borne de recharge afin d’optimiser l’autoconsommation en chargeant mon véhicule électrique. Ce mode de fonctionnement reproduit simplement le mode « smart load » disponible sur un onduleur Deye.

Fonctionnement du mode « valorisation solaire »
La borne de recharge « valorisation solaire » est mise sous tension via le contact sec du Shelly Pro-EM-50 et une entité Home Assistant remontant son statut passe à actif si toutes les conditions suivantes sont remplies :

  • Le mode « charge solaire » est activé
  • La batterie est chargée au-delà du seuil haut
  • L’excédent solaire est suffisant

Afin d’éviter des cycles marche/arrêt intempestifs de la borne, notamment en cas de variations de la production solaire (passage d’un nuage, par exemple), une fois activée dans ce mode, la borne ajustera dynamiquement sa puissance. Elle pourra également puiser dans la batterie de stockage si nécessaire, jusqu’à atteindre un seuil bas prédéfini de celle-ci.

Si la batterie descend en dessous de ce seuil minimal, quelle que soit la production solaire, la borne sera automatiquement mise hors tension afin de préserver le stockage d’énergie ou de permettre sa recharge.

Entités Home Assistant nécessaires à l’automatisation

  • input_boolean.ev_charge_solaire : Active ou de désactive la régulation solaire
  • input_boolean.ev_charge_solaire_statut borne : Indique si la borne de recharge est sous ou hors tension.
  • input_number.ev_charge_solaire_batterie_low : Seuil de batterie bas, ajustable entre 20% et 50%, par pas de 5%
  • input_number.ev_charge_solaire_batterie_high : Seuil de batterie haut, ajustable entre 50% et 100%, par pas de 5%
  • input_number.ev_charge_solaire_seuil_puissance : Seuil minimal de puissance solaire qui doit être disponible pour entrer dans le mode, ajustable entre 800W et 2000W, par pas de 100W
  • sensor.ev_solaire_consigne_courant_charge : de type « template/sensor », cet entité contient la consigne calculée à appliquer à la borne de recharge en mode solaire. Le calcul est réalisé dans le code du template dispo ici.

Nota : j’utilise une entité input_number.simul_puissance_solaire pour simuler la puissance solaire produite et réaliser les tests.

Une entité de suivi du niveau de charge de la batterie est également nécessaire. Dans mon cas, j’utilise sensor.solarman_battery_soc, fournie également par l’intégration Solarman,

Les deux automatisations ci-dessous assurent la mise sous tension et l’arrêt automatique de la borne de recharge en fonction de la production solaire et du niveau de charge de la batterie.

 

Interface de pilotage sur le dashboard

Le widget propose deux interrupteurs : l’un permet d’activer le mode recharge solaire, l’autre le mode recharge heures creuses. Il intègre également les paramètres de configuration suivants : seuil maximal de puissance appelée sur le réseau ENEDIS, seuil minimal de production solaire requis pour initier la recharge, ainsi que les niveaux de charge minimale et maximale de la batterie du véhicule.

Le graphique associé affiche l’énergie journalière délivrée par la borne au véhicule, sans distinction entre l’origine de l’énergie (solaire ou heures creuses).

 

Bilan

Ce système est conçu pour évoluer. J’envisage déjà l’ajout d’un mode manuel, permettant de régler directement le courant de charge via le widget déjà présent sur le dashboard Home Assistant.

C’est précisément l’objectif de cette réalisation : adapter finement la recharge de mon véhicule électrique à mes besoins spécifiques, qu’il s’agisse d’optimisation énergétique, de confort d’usage ou de contraintes techniques.

L’idée de fond : Le fun bien sur mais également opérer une transition vers un mode de transport plus sain et plus économique, malgré l’investissement initial. Je conçois bien que tout cela n’est pas à la portée technique de tous, mais des solutions clé en main existent.

Une vidéo intéressante illustrant une borne capable de valoriser sa propre production solaire pour la recharge de véhicule électrique. Attention cependant, il s’agit d’une borne de 7kW qui doit être installé par un professionnel IRVE.