EVCC - Gestion de la consommation électrique et optimisation solaire

Idem ici, véhicule de type Custom.
mais @dglaude également : Working config of EVCC for Tesla with BLE HTTP Proxy and Teslamate · GitHub

Je confirme, je suis en custom (pas tesla)…

C’est pas la recommendation de EVCC qui a rajouté une option Proxy pour faire un maximum de chose en BLE avec le HTTP Proxy et le reste en API Tesla.
Pour le moment, je suis satisfait par la solution (puisqu’elle marche) et je ne voudrais pas me séparer de Teslamate que je viens d’installer, ni de l’application eevee que j’utilisait avant.
Donc rajouter des requêtes pour EVCC me gène un peu.
Un petit détail, utiliser le mode tesla est payant puisqu’il faut un token de soutient GitHub à EVCC… je l’ai, je le paye, mais je pourrais arrêter en restant en custom.

Une mise à jour:

J’ai recommendé wimaha/TeslaBleHttpProxy (au lieu tesla-local-control/tesla_ble_mqtt_docker comme le poste parent).
C’était juste par facilité, et fonction de la réactivité du développeur de TeslaBleHttpProxy, et en raison de mon absence de maitrise de MQTT (HTTP on connait).
Il se trouver que GitHub - wimaha/TeslaBleHttpProxy: TeslaBleHttpProxy is a program written in Go that receives HTTP requests and forwards them via Bluetooth to a Tesla vehicle. The program can, for example, be easily used together with evcc. a bien évolué et avec la version 1.2 la création des clefs et l’établissement de la communication BLE avec la Tesla est super simplifié.
J’en ai aussi profité pour faire le déployement sur mon Rasbperry Pi4 (celui qui tourne déjà Teslamate) et c’était super facile avec « docker compose ».

Prochaine étape, je vais essayer de faire aussi tourner EVCC sur le même Pi4 et libérer mon NUC.

PS: Je pense que tesla_ble_mqtt_docker fait la même chose avec une facilité à créer la paire de clef et faire le pairing avec la voiture, donc c’est pas un argument pour la solution HTTP ou MQTT.

Pour être certain de saisir : dans votre cas, avec un véhicule de type custom, déplacer ce curseur dans EVCC :

image

Modifie de la même manière le niveau de charge dans l’application Tesla ? Pour ma part, sans automatisation HA via MQTT, le lien ne se fait pas.

Je n’ai pas de wall connector physique cela dit, ca vient peut être de la.

Je re-teste ce soir…

wimaha/TeslaBleHttpProxy support le message: « set_charge_limit »

Sauf que dans mes logs, je ne le vois pas être utilisé.
EVCC peut très bien arrêté la charge avec une décision locale (ce qui s’est passé hier soir).

Dans la config custom que j’utilise, je vois 3 actions:

  chargeenable:
  maxcurrent: # set charger max current (A)
  wakeup: # vehicle wake up command

Donc j’ai du halluciner, je ne vois pas comment la limite qu’on place dans EVCC pourrait être transmise à la voiture.
Avec ma configuration actuelle, on peut faire STOP, START, Réveil et choisir le MAX_CURRENT.

Je ne sais pas si dans le template custom on peut indiquer une commande pour utiliser « set_charge_limit », et je ne sais pas si EVCC utiliserait cela pour propager ce changement de configuration.

On a déjà eu quelques surprises où l’on donne une instruction à la voiture via l’application, mais derrière nous EVCC prend une autre décision et s’impose. A priori, quand tu commence à utiliser EVCC, il faut l’utiliser pour tout. Mais il faut faire des testes, genre limiter à 80% sur la voiture et à 90% sur EVCC… et vérifier qu’il n’y a pas une bataille « Jour/Nuit » entre deux contrôleurs.

C’est pas supporté: Tesla mit TWC und Teslamate - set Charge limit · evcc-io/evcc · Discussion #12660 · GitHub

Donc je pense qu’il faut mettre sa voiture avec une limite de 100% et puis contrôler le maximum local de EVCC.

Cette automatisation permet de synchroniser le SOC EVCC avec celui de Tesla. Modifier la première condition et les variables, ce devrait être bon pour vous. J’en ferai un blueprint quand j’aurais plus de recul.

Automatisation
alias: Link EVCC and Tesla Limit SOC
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.evcc_loadpoint_1_limit_soc
    id: evcc
  - platform: state
    entity_id:
      - number.chonk_charge_limit
    id: tesla
condition:
  - condition: template
    value_template: >-
      {{ states('sensor.evcc_loadpoint_1_limit_soc') !=
      states('number.chonk_charge_limit') }}
action:
  - variables:
      teslaSocEntity: number.chonk_charge_limit
      teslaSocBleEntity: number.tesla_ble_mqtt_VIN_charging_limit
      teslaSocState: "{{ states(teslaSocEntity) | int(50) }}"
      teslaBleTracker: device_tracker.chonk_ble_tracker
      teslaBleTrackerDesiredState: home
      evccSocEntity: sensor.evcc_loadpoint_1_limit_soc
      evccLoadpointId: 1
      evccSocState: "{{ states(evccSocEntity) | int(50) }}"
  - choose:
      - conditions:
          - condition: trigger
            id:
              - evcc
        sequence:
          - if:
              - condition: template
                value_template: "{{ states(teslaBleTracker) == teslaBleTrackerDesiredState }}"
            then:
              - service: input_number.set_value
                target:
                  entity_id: "{{ teslaSocBleEntity }}"
                data:
                  value: "{{ evccSocState }}"
              - wait_for_trigger:
                  - platform: template
                    value_template: "{{ states(teslaSocEntity) == evccSocState  }}"
                continue_on_timeout: false
                timeout:
                  hours: 0
                  minutes: 0
                  seconds: 30
                  milliseconds: 0
          - if:
              - condition: template
                value_template: "{{ states(teslaSocEntity) != evccSocState  }}"
            then:
              - service: number.set_value
                target:
                  entity_id: "{{ teslaSocEntity }}"
                data:
                  value: "{{ evccSocState }}"
              - wait_for_trigger:
                  - platform: template
                    value_template: "{{ states(teslaSocEntity) == evccSocState  }}"
                continue_on_timeout: false
                timeout:
                  hours: 0
                  minutes: 0
                  seconds: 30
                  milliseconds: 0
      - conditions:
          - condition: trigger
            id:
              - tesla
        sequence:
          - alias: Update EVCC loadpoint SOC
            service: mqtt.publish
            data:
              qos: "1"
              topic_template: "{{'evcc/loadpoints/' ~ evccLoadpointId ~ '/limitSoc/set'}}"
              payload_template: "{{ teslaSocState }}"
          - wait_for_trigger:
              - platform: template
                value_template: "{{ states(teslaSocEntity) == evccSocState  }}"
            continue_on_timeout: false
            timeout:
              hours: 0
              minutes: 0
              seconds: 30
              milliseconds: 0
mode: single