EVCC - Gestion de la consommation électrique et optimisation solaire

How I Learned to Stop Worrying and Let the Sun do its Job.

evcc

Bonjour à tous, voici une présentation sur l’utilisation d’EVCC.

À qui s’adresse cette présentation ?

Ce post fait suite à mes tutoriels sur le proxy Tesla et la communication avec le véhicule via BLE.

Je vise à optimiser la consommation de mes panneaux solaires pour maximiser l’autoconsommation. Pour se faire j’avais mis en place de nombreuses automatisations pour ajuster la charge selon les tarifs, la production solaire, etc, dans home assistant. EVCC répond nativement à mes besoins, et après avoir longuement expérimenté avec, je réalise qu’il est irréaliste pour moi de surpasser le travail d’une équipe de développeurs compétente.

image

Les courbes de consommationm (bleue) et production (verte) sont quasi identiques.

L’UI d’EVCC est agréable est dynamique, le projet gagne en popularité, et la communauté est très dynamique.

Je vais d’abord me contenter d’un descriptif superficiel pour évaluer l’intérêt sur lesujet. La configuration est vaste et la détailler entièrement demande du temps. Si je suis le seul illuminé et enthousiaste à l’idée de passer des heures devant mon CLI pour obtenir des courbes de production et consommation synchronisées et des icônes vertes clignotantes pour indiquer que ma voiture se charge avec mes panneaux solaires, je vais éviter de tout expliquer en détail. Chacun ses délires.

À qui ne s’adresse pas cette présentation ?

Si vous n’êtes pas prêt à affronter des migraines pour saisir l’ampleur des fonctionnalités d’EVCC, à taper du docker-compose jusqu’à en perdre la tête et vous demander pourquoi cela ne fonctionne pas pour la 3452309547e fois, passez votre chemin.

Le setup que je détaille est réalisable avec la version open-source (gratuite) d’EVCC. Toutefois, leur modèle de sponsorship via GitHub peut grandement simplifier la vie et offre un accès direct à des intégrations pour des marques spécifiques.

Pour les propriétaires de Peugeot et Renault, les deux intégrations sont natives et gratuites. Tesla, en revanche, nécessite un passage à la caisse pour du natif, ce que je déconseille fortement vu le nombre limité de commandes que l’API vous impose (plus de détails ci-dessous).

Si vous souhaitez contribuer au projet, vous pouvez le faire via un achat unique (~100 euros) ou une donation mensuelle (2 euros de mémoire). Notez que je n’ai aucun lien avec l’équipe ou le produit.

La documentation à le mérite d’exister, mais elle nést pas vraiment claire et de gros tronçons ne sont disponibles qu’en allemand.

Enfin, pour une approche plus simple sans UI dédiée, le Solar Optimizer de JM Collin est une excellente alternative. Après l’avoir utilisé pendant des mois, il fonctionne très bien. J’ai changé pour EVCC en raison du nombre d’automatisations nécessaires avec Solar Optimizer dans mon cas, mais c’est un choix personnel qui n’enlève rien à la qualité du travail et de la disponibilité de @Jean-Marc_Collin .

Présentation de ma configuration actuelle

Matériel requis

Niveau hardware

  • Un ou plusieurs terminaux pour faire tourner HA et les autres services.
  • Panneaux solaires avec mesure de production et consommation (Envoy dans mon cas).
  • Véhicule électrique (Tesla dans mon cas).
  • Chargeur/borne de recharge communiquant (peut être virtuel, voir plus bas).

Niveau software

  • EVCC
  • Home Assistant
  • MQTT Broker
  • Un moyen pour communiquer avec le véhicule et le chargeur, obtenir les données et envoyer des commandes. Dans mon cas :
    • Contrôleur BLE pour Tesla
    • Teslamate pour récupérer les données.

Procédure

MQTT

  1. Installer l’addon Mosquitto.
  2. Créer deux logins pour TeslaMate et EVCC via Customize.

Teslamate

  1. Vous aurez besoin de l’addon PostgreSQL si vous utilisez la version HA, ce que je recommande pour plus de simplicité.
  2. TeslaMate peut être utilisé comme source de données pour l’intégration Tesla dans HA, offrant de meilleurs résultats empiriquement en termes de mise à jour des données.

twc3teslamate

twc3teslamate simule, via les informations de Teslamate, une borne Tesla de type Wall Connector, vous permettant d’intégrer votre véhicule à EVCC et de le charger sur n’importe quelle source de courant. Ayant une borne Hager Witty que j’ai payée une fortune pour au final pas grand chose, la modifier pour communiquer via Modbus me semblait trop fastidieux. twc3teslamate permet donc d’optimiser la charge solaire où que mon véhicule soit branché (chez moi, bien sûr), de la prise du salon à la borne de recharge.

tesla_ble_mqtt_docker

Pour envoyer des commandes au véhicule via BLE (procédure), car Tesla a décidé que les appels via l’API coûtaient plus cher que le salaire de Musk, la simplicité est donc portée disparue.

Note : Il y a actuellement un problème de QoS en MQTT qui rend la communication directe du BLE à EVCC impossible. Il faut passer par HA comme relai pour régler le QoS. C’est en cours de correction.

EVCC

Chargeur

On utilise le chargeur virtuel twc3teslamate.

chargers:
  - name: modelY_charger
    type: template
    template: twc3
    host: 192.168.20.149:8002 # IP address or hostname 

Véhicule

Un véhicule de type custom avec lequel on communique via BLE (tesla_ble_mqtt_docker) et dont on obtient les données via Teslamate.

vehicles:
- name: Brouette
  type: custom
  icon: car
  capacity: 74 # Capacité en kWh de la batterie. Fonction de votre modèle.
  chargeenable:
    source: mqtt
    topic: tesla_ble_mqtt/VIN/command # Remplacez le VIN par le vôtre.
    payload: '{{if .chargeenable}}charging-start{{else}}charging-stop{{end}}'
  maxcurrent: # set charger max current (A)
    source: mqtt
    topic: tesla_ble_mqtt/VIN/charging-amps # Remplacez le VIN par le vôtre.
    payload: '{{.maxcurrent}}'
  wakeup: # vehicle wake up command
    source: mqtt
    topic: tesla_ble_mqtt/VIN/command # Remplacez le VIN par le vôtre.
    payload: 'wake'
  soc:
    source: mqtt
    topic: teslamate/cars/2/battery_level # Ajustez l'ID : teslamate/cars/ID si vous avez plusieurs véhicules
    timeout: 8h
  range:
    source: mqtt
    topic: teslamate/cars/1/est_battery_range_km # Ajustez l'ID : teslamate/cars/ID si vous avez plusieurs véhicules
    timeout: 8h
  status:
    source: combined
    plugged:
      source: mqtt
      topic: teslamate/cars/1/plugged_in # Ajustez l'ID : teslamate/cars/ID si vous avez plusieurs véhicules
      timeout: 8h
    charging:
      source: mqtt
      topic: teslamate/cars/1/charging_state # Ajustez l'ID : teslamate/cars/ID si vous avez plusieurs véhicules
      timeout: 8h

Loadpoints

Combine les éléments précédemment définis. Mes valeurs pour enable/disable sont totalement sorties du chapeau.

loadpoints:
  - title: Chargeur Model Y # Nom qui sera affiché dans l'IHM
    charger: modelY_charger # Chargeur défini plus haut
    vehicle: Brouette # Véhicule utilisé par défaut
    mode: "off" # Mode par défaut
    enable:  # Désactive la charge quand export de 225W pendant 10 minutes
      threshold: -225
      delay: 1m
    disable:
      threshold: 200 # Désactive la charge quand import de 200W pendant 10 minutes
      delay: 10m
    guardduration: 30m  # Maintient de charge pendant 30 minutes minimum.
Automatisation HA pour ajuster le courant de charge d'un loadpoint

Cette automatisation ajuste le courant max du loadpoint EVCC en fonction du matériel utilisé pour la charge. Par exemple, j’ai une borne sur laquelle je peux tirer jusqu’à 32A et des prises domestiques (utilisées pour la recharge solaire) que je limite arbitrairement à 10A.

Cela évite donc de devoir modifier le courant de charge via l’UI si vous branchez votre voiture sur différentes bornes/prises, ou si vous avez plusieurs Teslas et une seule borne.

alias: Ajuster le courant de charge maximum pour EVCC
description: >-
  Ajuste le courant maximum de charge pour un véhicule électrique en fonction de
  la demande via MQTT.
trigger:
  - platform: mqtt
    topic: teslamate/cars/+/charge_current_request_max
condition: []
action:
  - variables:
      loadpointId: "{{ trigger.topic.split('/')[2] }}"
      loadpointMaxCurrent: >-
        {% set maxCurrent = trigger.payload | int(default=-1) %} {{ maxCurrent
        if 0 <= maxCurrent <= 32 else 10 }}
  - service: mqtt.publish
    data:
      qos: "1"
      topic_template: evcc/loadpoints/{{loadpointId}}/maxCurrent/set
      payload_template: "{{loadpointMaxCurrent}}"
    alias: Publier le courant ajusté via MQTT
mode: parallel
max: 2

Meters / Site

Cela dépend de votre installation. Enphase est compatible sans trop d’efforts. Voir la documentation pour plus de détails.

Configuration Enphase Envoy

Obtenir un jeton Enphase

  1. Se rendre sur la page Enphase Authentication | Select Gateway (enphaseenergy.com) et se connecter à l’aide de ses identifiants.
  2. Taper dans le champ select system les trois premières lettres du nom qui désigne votre installation (vous pouvez trouver cette info depuis l’appli mobile).
  3. Selectionner la passerelle depuis le champ select gateway.

Le jeton est valide un an, il faudra le renouveler une fois celui-ci expiré.

Configuration EVCC

Dans evcc.yaml, faire figurer pour la partie meters:

meters:
  - name: enphaseGrid
    type: template
    template: enphase
    usage: grid
    host: addresse IP ou nom d'host de votre passerelle
    token: VOTRE_TOKEN_ENVOY
  - name: enphasePV
    type: template
    template: enphase
    usage: pv
    host: addresse IP ou nom d'host de votre passerelle
    token: VOTRE_TOKEN_ENVOY

Vous obtenez ainsi les deux entités qui permettent à EVCC d’obtenir les mesures de consommation et production électrique.

Tariffs

La possibilité de communiquer des tarifs prévisionnels et de spécifier une cible pour la recharge pendant les heures creuses est très intéressante. Pour ma part, étant en tempo, chaque jour, je lui fournis les tarifs du jour HP/HC et du lendemain, une cible de tarif (correspondant à mes HC), et le véhicule charge au solaire la journée puis en HC la nuit jusqu’à atteindre la cible. Si votre voiture reste plusieurs jours en place, la charge nocturne en HC peut être désactivée, ne permettant ainsi la recharge qu’avec le soleil.

tariffs:
  currency: EUR
  feedin:
    type: fixed
    price: 0.10 # EUR/kWh
  grid:
    type: custom
    forecast:
      source: mqtt
      topic: tempo/grid/forecast # Source du forecast en JSON
2 « J'aime »

Wahouuu belle découverte ! J’adore tes tutos !

1 « J'aime »

Bonjour,
J’avais essayé mais le fichier eccv.yaml est un peu complexe pour moi
Est-ce que ça fonctionne sans docker ?

Pour la partie EVCC oui, il y a un addon HA. Le reste dépend de votre matériel et de votre véhicule.

1 « J'aime »

Bonjour,
Ok je suis sous Enphase avec une Dacia Spring et une borne pilotée par un Esp
On peut passer par un chargeur virtuel, je pense pouvoir le faire

J’ai ajouté à la procédure les détails relatifs à la configuration d’Envoy. Pour une borne pilotée par ESP, il faudra passer par un chargeur custom, le mieux selon moi étant d’obtenir les infos et envoyer les commandes via MQTT :

chargers:
  - name: esp_charger
    type: custom
      enabled: # charger enabled state (true/false or 0/1)
      source: mqtt
      topic: esp_charger/data/status
      timeout: 1h
[...]

Attention cependant, le qos MQTT est fixé sur 0 avec les messages envoyés par EVCC. Cela m’a posé problème pour la configuration d’un véhicule custom.

Je suis preneur de votre config finale, une fois le système mis en place, pour annoter la procédure avec.

Woooow c’est géant !!
Merci pour la découverte :slight_smile:

Je vais tester ça !!

Merci pour ces ajouts,
Cela fonctionne chez vous pour la partie PV d’enphase ?
Je n’ai pas d’erreur pour grid mais une erreur pour la partie pv pourtant pratiquement identique

Tout est fonctionnel. Pourriez vous poster votre config evcc.yaml ainsi que les logs (on les obtient directement depuis l’UI EVCC) ?

OK,
Voici mon log :

Using config file: /config/evcc.yaml
starting evcc: 'EVCC_DATABASE_DSN=/data/evcc.db evcc --config /config/evcc.yaml'
[main  ] INFO 2024/07/04 21:09:57 evcc 0.128.0
[main  ] INFO 2024/07/04 21:09:57 using config file: /config/evcc.yaml
[mqtt  ] INFO 2024/07/04 21:09:58 connecting evcc-1513783739 at tcp://localhost:1883
[main  ] INFO 2024/07/04 21:09:58 listening at :7070
[main  ] ERROR 2024/07/04 21:10:00 creating vehicle spring failed: cannot create vehicle type 'template': cannot create vehicle type 'dacia': cannot find vehicle, got: [UU1DBG007PU154033 UU1JSDDYG57399064]
[main  ] FATAL 2024/07/04 21:10:00 failed configuring site: not found: pv
[main  ] FATAL 2024/07/04 21:10:00 will attempt restart in: 15m0s
[main  ] INFO 2024/07/04 21:10:00 new version available: 0.128.1

Et mon fichier eccv.yaml :

network:
  # schema is the HTTP schema
  # setting to `https` does not enable https, it only changes the way URLs are generated
  schema: http
  # host is the hostname or IP address
  # if the host name contains a `.local` suffix, the name will be announced on MDNS
  # docker: MDNS announcements don't work. host must be set to the docker host's name.
  host: evcc.local
  # port is the listening port for UI and api
  # evcc will listen on all available interfaces
  port: 7070

interval: 30s # control cycle interval. Interval <30s can lead to unexpected behavior, see https://docs.evcc.io/docs/reference/configuration/interval

# database configuration for persisting charge sessions and settings
# database:
#   type: sqlite
#   dsn: <path-to-db-file>

# sponsor token enables optional features (request at https://sponsor.evcc.io)
# sponsortoken:

# telemetry enables aggregated statistics
#
# Telemetry allows collecting usage data (grid and green energy, charge power).
# Data is aggregated, no individual charging sessions are tracked. The collected,
# anonymous data can be retrieved using https://api.evcc.io.
#
# See https://github.com/evcc-io/evcc/pull/4343 or details.
#
# For time being, this is only available to sponsors, hence data is associated with
# the sponsor token's identity.
#
# telemetry: true

# log settings
log: info
levels:
  site: debug
  lp-1: debug
  lp-2: debug
  cache: error
  db: error

# modbus proxy for allowing external programs to reuse the evcc modbus connection
# each entry will start a proxy instance at the given port speaking Modbus TCP and
# relaying to the given modbus downstream device (either TCP or RTU, RS485 or TCP)
modbusproxy:
  #  - port: 5200
  #    uri: solar-edge:502
  #    # rtu: true
  #    # readonly: true # use `deny` to raise modbus errors

# meter definitions
# name can be freely chosen and is used as reference when assigning meters to site and loadpoints
# for documentation see https://docs.evcc.io/docs/devices/meters
meters:
  - name: my_pv
    type: template
    template: enphase
    usage: pv
    host: 1**.***.*.**
    token:  lemien

  - name: my_grid
    type: template
    template: enphase
    usage: grid
    host: 1**.***.*.**
    token: lemien


# charger definitions
# name can be freely chosen and is used as reference when assigning charger to vehicle
# for documentation see https://docs.evcc.io/docs/devices/chargers
chargers:
  - name: ultimate_speed
    type: custom
    status: # charger status A..F
      source: mqtt
      topic: esp #ou esp_charger/data/status ou esp/data/status
      timeout: 30s #1h
    enabled: # charger enabled state (true/false or 0/1)
      source: mqtt
      topic: esp #ou esp_charger/data/status ou esp/data/status
      timeout: 30s #1h
    enable: # set charger enabled state (true/false or 0/1)
      source: mqtt
      topic: esp #ou esp_charger/data/status ou esp/data/status
      timeout: 30s #1h
    maxcurrent: # set charger max current (A)
      source: mqtt
      topic: esp #ou esp_charger/data/status ou esp/data/status
      timeout: 30s #1h
    

#chargers:
#  - name: my_charger
#    type: template
#    template: tinkerforge-warp
#    host: 192.0.2.2 # IP address or hostname of the MQTT broker
#    port: 1883 # MQTT broker port (optional)
#    topic: warp # Topic (omit leading /) (optional)
#    timeout: 30s # Don't accept values older than this value (optional)


# vehicle definitions
# name can be freely chosen and is used as reference when assigning vehicle to loadpoint
# for documentation see https://docs.evcc.io/docs/devices/vehicles
vehicles:
  - name: spring
    type: template
    template: dacia
    title: # spring # Will be displayed in the user interface (optional)
    user: ***
    password: ****
#    vin: W... # Required if you own multiple vehicles of the same brand (optional)
    capacity: #12 # Battery capacity in kWh (optional) 

# site describes the EVU connection, PV and home battery
site:
  title: Home # display name for UI
  meters:
    grid: my_grid # grid meter
    pv: 
      - pv # list of pv inverters/ meters
    battery:
      - battery # list of battery meters
    aux:
      - aux # list of auxiliary meters for adjusting grid operating point
  residualPower: 100 # additional household usage margin
  maxGridSupplyWhileBatteryCharging: 50 # ignore battery charging if AC consumption is above this value

# loadpoint describes the charger, charge meter and connected vehicle
loadpoints:
  - title: Spring # display name for UI
    charger: ultimate_speed # charger
    #meter: charge # charge meter
    mode: pv #"off" # default charge mode to apply when vehicle is disconnected; use "off" to disable by default if charger is publicly available

    # remaining settings are experts-only and best left at default values
    priority: 0 # relative priority for concurrent charging in PV mode with multiple loadpoints (higher values have higher priority)
    soc:
      # polling defines usage of the vehicle APIs
      # Modifying the default settings it NOT recommended. It MAY deplete your vehicle's battery
      # or lead to vehicle manufacturer banning you from API use. USE AT YOUR OWN RISK.
      poll:
        # poll mode defines under which condition the vehicle API is called:
        #   charging: update vehicle ONLY when charging (this is the recommended default)
        #   connected: update vehicle when connected (not only charging), interval defines how often
        #   always: always update vehicle regardless of connection state, interval defines how often (only supported for single vehicle)
        mode: charging
        # poll interval defines how often the vehicle API may be polled if NOT charging
        interval: 60m
      estimate: true # set false to disable interpolating between api updates (not recommended)
    enable: # pv mode enable behavior
      delay: 1m # threshold must be exceeded for this long
      threshold: 0 # grid power threshold (in Watts, negative=export). If zero, export must exceed minimum charge power to enable
    disable: # pv mode disable behavior
      delay: 3m # threshold must be exceeded for this long
      threshold: 0 # maximum import power (W)

# tariffs are the fixed or variable tariffs
tariffs:
  currency: EUR # three letter ISO-4217 currency code (default EUR)
  grid:
    # either static grid price (or price zones)
    type: fixed
    price: 0.18 # EUR/kWh
    zones:
      - days: Mon-Sun
        hours: 6-22
        price: 0.18 # EUR/kWh
      - days: Mon-Sun
        hours: 22-0
        price: 0.14 # EUR/kWh
      - days: Mon-Sun
        hours: 0-6
        price: 0.14 # EUR/kWh        

    # or variable tariffs
    # type: tibber
    # token: "476c477d8a039529478ebd690d35ddd80e3308ffc49b59c65b142321aee963a4" # access token
    # homeid: "cc83e83e-8cbf-4595-9bf7-c3cf192f7d9c" # optional if multiple homes associated to account

    # type: awattar
    # region: de # optional, choose at for Austria
    # charges: # optional, additional charges per kWh
    # tax: # optional, additional tax (0.1 for 10%)

    # type: octopusenergy
    # tariff: AGILE-FLEX-22-11-25 # Tariff code
    # region: A # optional

    # type: elering # Nordpool
    # region: ee # or lt, lv, fi
    # charges: # optional, additional charges per kWh
    # tax: # optional, additional tax (0.1 for 10%)

    # type: energinet # Energinet using the price in DKK
    # region: dk1 # or dk2
    # charges: # optional, additional charges per kWh
    # tax: # optional, additional tax (0.1 for 10%)

    # type: entsoe # Entso-E european market data
    # domain: BZN|DE-LU # https://transparency.entsoe.eu/content/static_content/Static%20content/web%20api/Guide.html#_areas
    # securitytoken: # api token
    # charges: # optional, additional charges per kWh
    # tax: # optional, additional tax (0.1 for 10%)

    # type: pun # PUN - Prezzo unico nazionale - Hourly Italian wholesale prices
    # charges: 0 # optional, additional charges per kWh
    # tax: 0 # optional, additional tax (0.1 for 10%)

    # type: amber
    # token: # api token from https://app.amber.com.au/developers/
    # siteid: # site ID returned by the API
    # channel: general

    # type: custom # price from a plugin source; see https://docs.evcc.io/docs/reference/plugins
    # price:
    #   source: http
    #   uri: https://example.org/price.json
    #   jq: .price.current

  feedin:
    # rate for feeding excess (pv) energy to the grid
    type: fixed
    price: 0.134 # EUR/kWh

    # type: octopusenergy
    # tariff: AGILE-FLEX-22-11-25 # Tariff code
    # region: A # optional

    # type: amber
    # token: # api token from https://app.amber.com.au/developers/
    # siteid: # site ID returned by the API
    # channel: feedIn
  co2:
    # co2 tariff provides co2 intensity forecast and is for co2-optimized target charging if no variable grid tariff is specified
    # type: grünstromindex # GrünStromIndex (Germany only)
    # zip: <zip>

    # type: electricitymaps # https://app.electricitymaps.com/map
    # uri: <uri>
    # token: <token> # needs to be a token with forecast (not in the free tier)
    # zone: DE

    # type: ngeso # National Grid Electricity System Operator data (Great Britain only) https://carbonintensity.org.uk/
    # provides national data if both region and postcode are omitted - Choose ONE only!
    # region: 1 # optional, coarser than using a postcode - The region details are at https://carbon-intensity.github.io/api-definitions/#region-list
    # postcode: SW1 # optional - Outward postcode i.e. RG41 or SW1 or TF8. Do not include full postcode, outward postcode only

# mqtt message broker
mqtt:
  broker: localhost:1883
  topic: evcc # root topic for publishing, set empty to disable
  user: *****
  password: *****

# influx database
influx:
  # url: http://localhost:8086
  # database: evcc
  # user:
  # password:

# eebus credentials
eebus:
  # uri: # :4712
  # interfaces: # limit eebus to specific network interfaces
  # - en0
  # certificate: # local signed certificate, required, can be generated via `evcc eebus-cert`
  #   public: # public key
  #   private: # private key

# push messages
messaging:
  events:
    start: # charge start event
      title: Charge started
      msg: Started charging in "${mode}" mode
    stop: # charge stop event
      title: Charge finished
      msg: Finished charging ${chargedEnergy:%.1fk}kWh in ${chargeDuration}.
    connect: # vehicle connect event
      title: Car connected
      msg: "Car connected at ${pvPower:%.1fk}kW PV"
    disconnect: # vehicle connected event
      title: Car disconnected
      msg: Car disconnected after ${connectedDuration}
    soc: # vehicle soc update event
      title: Soc updated
      msg: Battery charged to ${vehicleSoc:%.0f}%
    guest: # vehicle could not be identified
      title: Unknown vehicle
      msg: Unknown vehicle, guest connected?
  services:
  # - type: pushover
  #   app: # app id
  #   recipients:
  #   - # list of recipient ids
  # - type: telegram
  #   token: # bot id
  #   chats:
  #   - # list of chat ids
  # - type: email
  #   uri: smtp://<user>:<password>@<host>:<port>/?fromAddress=<from>&toAddresses=<to>
  # - type: ntfy
  #   uri: https://<host>/<topics>
  #   priority: <priority>
  #   tags: <tags>

site est une liste, il manque un « - » avant la première propriété:

# site describes the EVU connection, PV and home battery
site:
  - title: Home # ⚠ AJOUTER UN - EN DEBUT DE LIGNE
    meters:
      grid: my_grid # grid meter
      pv: 
        - pv # list of pv inverters/ meters
      battery:
        - battery # list of battery meters
      aux:
        - aux # list of auxiliary meters for adjusting grid operating point
    residualPower: 100 # additional household usage margin
    maxGridSupplyWhileBatteryCharging: 50

De mon coté j’ai configuré ainsi :

      grid: my_grid # grid meter
      pv: pv # list of pv inverters/ meters
      battery: battery

En espérant que ca pourra servir. je regarderai plus en détail a tête reposée. Il y a également une erreur liée au véhicule. A voir en se reportant sur la documentation spécifique à Dacia.

Bonjour,
J’ai modifié et aussi mis my_pv au lieu de pv et je n’ai plus l’erreur, merci.
Mais pour le véhicule j’ai beau lire et relire la doc je bloque
Edit : résolu pour le véhicule j’ai rajouté le vin
Plus qu’à tester branché

1 « J'aime »

Génial, pourriez-vous poster votre config complète pour Dacia ? J’ajouterai ainsi cela à la procédure pour faciliter la tâche aux propriétaires de Spring.

Bonjour et merci pour cet aperçu de EVCC qui mérite d’être connu du côté francophone.

Je vais essayer de donner quelques conseils ou partager mon expérience.

Même si on peut ouvrir des tickets en anglais et avoir des réponses, et même si l’interface utilisateur est presque à 100% traduite en Français (et en Anglais)… si on ne connais que le Français, c’est vraiment pas facile. Et si on connais l’Anglais, c’est possible mais le contenu « débutant » genre video YouTube n’existe que pas, et la traduction de sous-titre généré automatiquement c’est limite.

J’avais commencé avec l’intégration EVCC dans HA, avant que Tesla ne limite le nombre d’appel à son API. A part la souscription de 2$ par mois pour soutenir le projet sur GitHub (nécessaire pour le token Tesla), il y a eu quelques investissement matériel:

  1. un capteur pour lire mon compteur communiquant (en Belgique il faut utiliser le port P1 avec par exemple HomeWizard, ou Slimmelezer qui est open source et basé sur ESP Home)
  2. capteur Shelly Pro EM-50 pour mesurer ce qu’envoie mais panneau en mono-phase

Il y a beaucoup de scénario possible en fonction de:

  • Comment lire ce qui vous consommez/injectez sur le réseau
  • Comment lire ce que fournissent les panneaux
  • Ce qui est possible avec votre borne de chargement
  • Ce qui peut être fait avec votre voiture (en particulier Tesla)

J’ai vu ma configuration fonctionner quelques heures avant d’atteindre le quota de l’API Tesla, et j’ai du suivre les dernières versions de EVCC pour pouvoir le faire marcher avec la nouvelle astuce BLE.

Quelques recommendations:

  • Ne pas faire tourner EVCC et tous le reste sur votre Home Assistant. Ceci devrait permettre d’avoir les dernière version et il sera toujours temps plus tard pour faire une intégration…
  • Tout devrait être possible sur un Pi4 (ou 5), mais les compilations de code en go, la création de container cela peut prendre du temps, surtout si on doit s’y reprendre plusieurs fois. Evidemment lorsque tous les containeurs version arm seront prêt à l’emploi et tous les tutos disponible, peut-être que la solution Pi sera la plus économique. Mais réfléchissez quand même aux capacités d’un mini-PC d’occasion, il y a moins de guide tout fait mais cela fait un Linux bien plus puissant.
  • Si vous partez sur un Pi, installé la version 32 bits de l’OS… j’ai eu plein de problème avec go à cause du 64 bits.
  • Si vous ne maitrisez pas Docker et docker compose, il n’y a pas de honte à tourner certain logiciel en natif sur la machine… c’est peut-être plus difficile à maintenir, mais c’est un début vous pourrez améliorer plus tard.
  • Cela vaut la peine de maitriser un petit peu MQTT et mosquitto car pas mal de logiciel communiquent comme cela et pour l’intégration dans Home Assistant, cela peut aider.
  • Le chargeur Tesla n’est pas si génial que cela pour l’automation si vous n’êtes pas déjà équipé, regardez ce qui est supporté par EVCC (et les autres).
  • Si vous avez déjà commencé a utiliser la partie Energie de Home Assistant, vous avez peut-être déjà le hardware pour surveiller vos panneaux et votre consomation… mais attention, certains équipements n’acceptent qu’un client et EVCC n’arrivera pas à lire les informations (j’ai eu le problème pour mon lecteur P1). J’ai pris la solution de facile d’acheter un lecteur P1 suplémentaire, mais on peut aussi envoyer des informations de Home Assistant sur un MQTT et les lire depuis EVCC (j’ai pas essayé).
  • Si votre onduleur n’est pas supporté, il y a moyen de mesurer la production de façon extérieur (comme mon Shelly) et cela peut être optionnel si vous mesurez la consomation/production de la maison.

Mon setup:

  • Une Tesla récente (certaine ne supporte pas si bien le BLE)
  • Une Borne Tesla Wall Charger
  • Un lecteur P1 pour mon compteur communiquant
  • Un Shelly prise ampère métrique pour mesurer la consomation des panneaux solaires
  • Un ordinateur (ou Pi) à proximité de la Tesla (nécessaire pour le BLE, mais pas pour d’autre marque de voiture)

Pour mettre toutes les chances de mon côté, j’ai sortie la grosse artillerie, en plaçant un NUC (sous Ubuntu) et un Raspberry Pi4 tous les deux proche de la borne/voiture pour être capable de parler BLE.
J’allais devoir installer de nombreux logiciels et je n’étais pas certain de trouver les containers tout fait pour ARM ou les instructions d’installation non spécifique au Raspberry Pi.
L’idée était que si je n’y arrivait pas sur une machine, je prendrais l’autre… au final ma solution à besoin des deux pour fonctionner et cela sans compter un autre Raspberry Pi pour Home Assistant, bref une usine à gaz pour voiture électrique.

Au niveau logiciel, j’ai:

  • Teslamate sur le Pi4 pour l’état de charge, l’estimation de distance, … le plus important était d’activé le port 1883 et le rendre accessible dans le « docker compose » (sans tiret)
  • wimaha/TeslaBleHttpProxy sur le NUC qui fourni à EVCC une interface HTTP similaire à « Fleet API » et envoie les commandes BLE pour cinq type de commande: « wake_up », « charge_start », « charge_stop », « set_charging_amps » et « set_charge_limit »
  • EVCC qui tourne sur le NUC

Pourquoi j’ai fait cela comme cela… ben j’ai trouvé une bonne documentation pour tourner Teslamte sur le Pi4 et j’ai pas réussi a faire fonctionner le BLE sur le Pi4.
Et là, vu que cela marche, j’ai pas envie de tout casser, mais c’est certain, cela va bouger.

J’avais aussi installé comme le poste parent Haveacry/twc3teslamate sur mon Pi4 (dans le même docker-compose.yaml qui transformait les données de Teslamate en TeslaWallCharger virtuel… sauf que cela n’avait pas de sens chez moi puisque j’ai un TWC physique.
Je n’ai pas essayé tesla-local-control/tesla_ble_mqtt_docker car j’avais trouvé cette solution à base d’HTTP et je me disais que ce serait plus simple pour pas devoir creuser MQTT.

Je dirais que dans les difficultés de EVCC, c’est la langue, la multitude de solution en fonction de vos équipements (voiture, borne, PV, compteur) et se rajoute à cela les difficultés à cause de Tesla.

Pour l’instant, chez moi cela marche, et j’en suis assez content… j’aurais peut-être du attendre quelques semaines que des solutions et tutos sortent au lieu de me battre avec go, docker, …

Ce qu’il me reste à faire, c’est afficher EVCC ou ses données dans Home Assistant, sans doute via MQTT, mais il n’y a pas urgence.

Voilà, je vous laisse ma configuration sans mot de passe, secret ni addresse IP réelles: Working config of EVCC for Tesla with BLE HTTP Proxy and Teslamate · GitHub

J’ai étoffé le message initial avec des détails sur la config. @R_hum1 je suis toujours preneur de votre config pour Dacia si tout fonctionne de votre coté.

Bonjour, tout n’est pas encore fonctionnel. Dès que cela fonctionne, je mets ma config’

1 « J'aime »

Merci pour toutes ces infos, je crois que j’ai réussi à configurer EVCC :wink: (je crois, parce que la voiture est chargée à 100%, donc je n’ai pas pu tester …)

Par contre, est-il possible de modifier depuis EVCC le % de charge max ? (il y a bien un slider, mais ça ne se reflète pas sur la voiture.)

Par contre, est-il possible de modifier depuis EVCC le % de charge max ?

De base je ne crois pas. J’utilise un sensor MQTT dans HA pour propager les changements.

Je ne comprend pas la réponse de Vladvonvidden… Chez moi quand je change le slider pour ChargeMax, Ben cela fait le changement sur la Tesla (visible dans l’App.).

Là j’ai mis 90% via EVCC et dans l’application cela passe à 90%. De mémoire je vois aussi la commande passée en BLE dans TeslaBleHttpProxy.

Véhicule de type ‘custom’ ou ‘tesla’ ? Ma config est avec un custom, ça doit venir de la.