Intégration TESLA API

Pour ton souci de script, il faut utiliser une expression template.
Dommage qu’ils n’aient pas de service « increment » pour les number comme ça existe pour les input_number.

Pour avoir la valeur tu peux utiliser ça:

{{ states.number.electra_charging_amps.state }}

Pour incrémenter, ceci devrait marcher:

{{ states.number.electra_charging_amps.state | int + 1 }}
2 « J'aime »

Mille Mercis, je teste et vous tiens au courant ! c’est top d’avoir une communauté pour aider les débutants.

:thinking:

Pour éviter les 16 automatisations ce que je fais c’est :

  1. une seule automatisation qui définit les trigger et appelle un script:
action:
  - service: script.pilotage_charge_tesla
    data: {}
  1. dans le script tu calcules des variables :
alias: Pilotage charge Tesla
mode: restart
icon: mdi:ev-station
variables:
  percent_charge_max: "{{ states('number.cloucloute_charge_limit') | float(default=80.0) }}"
  besoin_charge: "{{ states('sensor.cloucloute_battery') | float < percent_charge_max }}"
  soc: "{{ states('sensor.cloucloute_battery') | float(default=0) }}"
  charging: "{{ states('switch.cloucloute_charger') == 'on' }}"
  energy_added: "{{ states('sensor.cloucloute_energy_added') | float (default=0.0) }}"
  1. tu utilises les variables dans le script comme des templates comme indiqué par @AlexHass :
sequence:
  - if:
      - condition: numeric_state
        entity_id: sensor.tesla_energy_added
        above: 0.01
      - condition: state
        entity_id: input_boolean.tesla_session_charge_encours
        state: "on"
    then:
      - service: input_number.set_value
        data:
          value: "{{ energy_added }}"
        target:
          entity_id: input_number.tesla_energie_derniere_charge
      - service: system_log.write
        data:
          message: "Cloucloute : Dernière énergie ajoutée - {{ energy_added }} kWh"
          logger: homeassistant.components.script.pilotage_charge_tesla
          level: info

Je trouve ça beaucoup plus propre et avec un seul script tu peux faire plein de choses de façons paramétrables du coup.

Regardes l’exemple de @Jean-Marc_Collin il faut des guillements au tout de l’expression.

1 « J'aime »

J’y ai cru, car c’est passé au vert mais non … !!! :sweat_smile:

Décidément :slight_smile:

Il attend un nombre à virgule, faut remplacer « int » par « float » et ça devrait mieux se passer!

1 « J'aime »

Meme resultat

De mon expérience cette valeur est un entier entre 0 et 32

J’ai testé sans l’incrémentation meme probleme

Float ça veut dire nombre à virgule, mais en l’occurrence cette entité c’est des entiers.

J’ai copié chez moi, ce sera plus facile.
Je pense que ça vient du fait que tu as utilisé l’action à partir de l’appareil… en utilisant « appeler un service » ça s’enregistre chez moi. Comme ça:

alias: test charge dynamique
description: ""
trigger:
  - platform: numeric_state
    entity_id: sensor.shellyem_24xxxxa9_channel_1_power
    for:
      hours: 0
      minutes: 1
      seconds: 0
    above: 500
condition:
  - condition: state
    entity_id: input_boolean.charge_dynamique
    state: "on"
action:
  - service: number.set_value
    data:
      value: "{{ states.number.electra_charging_amps.state | float + 1 }}"
    target:
      entity_id: number.electra_charging_amps
mode: single
1 « J'aime »

Bravo ! tu m’as trouvé la solution Well done :clap:

Je profite de ton expérience pour une ultime question.

Mon trigger fonctionne lorsque ma Conso dépasse les 500W, (lorsque ça passe de 500W à 501W)
il se déclenche 1 fois et baisse la puissance de l’ampérage de -1Amp.
Mais si ma conso ne redescend pas en dessous de 500W le trigger ne se redéclenche pas.

il faudrait que le trigger se déclenche toute les x minutes tant que la conso est supérieur à 500W.

Je sais pas si ça existe ce genre de règles?

est-ce que le « mode : single » peux m’aider ?

Oui, En fait, avec la façon dont tu as configuré ton trigger, c’est effectivement le passage à +500 qui va le déclencher uniquement, et plus ensuite.
Du coup ce n’est pas ça qu’il faut faire, toi tu veux au finale que ça regarde à chaque changement de valeur. Donc il faut enlever le « for » et le « above ». Et ajouter une condition vérifie « si >500w » tout simplement.

En revanche ca ne va pas bien marcher :slight_smile:, car là ton 500W c’était le minimum pour déclencher la charge… du coup pour les incréments faudrait les faire tous les 220w.

Et biensûr après aussi une logique qui va faire redescendre les amps.

Et autre truc au cas où. Ta logique initiial qui vérifiait: si « 1220 < Power < 1459 » n’est pas bonne non plus :wink:
Imagine tu as 500w de dispo, tu lance la charge… à 500w… ben tu n’as plus 500w de dispo, mais 0, vu que tu charges… donc chaque incrément réalisé tapera dans le surplus…

1 « J'aime »

Ok je vais tester tout ça, demain il fera jours, en tout cas un grand merci pour ta patience.
Bonne soirée

J’ai essayé de faire ce que tu m’a indiqué (retirer les trigger et rajouter une condition à la place) mais l’action ne se déclenche pas, je dois rater quelque chose?
j’ai également rajouté une pause après l’actions

alias: charge dynamique -1Amp si conso >300W
description: ""
trigger: []
condition:
  - condition: state
    entity_id: input_boolean.charge_dynamique
    state: "on"
  - type: is_power
    condition: device
    device_id: b42834766cacaa063aba2417e15b65f2
    entity_id: sensor.shellyem_244cab4320a9_channel_1_power
    domain: sensor
    above: 300
action:
  - service: number.set_value
    data:
      value: "{{ states.number.electra_charging_amps.state | float - 1 }}"
    target:
      entity_id: number.electra_charging_amps
  - delay:
      hours: 0
      minutes: 1
      seconds: 0
      milliseconds: 0
mode: single

Ouais mais je n’ai pas parlé de supprimer le trigger complètement :rofl:
Juste les « for » et « above »!

1 « J'aime »

J’ai fait les 2 automatisations + 1 amp et -1 amp ça marche nickel !!! MERCI
J’affinerai les mesures pour que les déclanchements soient plus précis mais c’est déjà fonctionnel en l’état.

Merci pour ton aide vraiment

alias: charge dynamique -1Amp si conso >300W
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.shellyem_244cab4320a9_channel_1_power
condition:
  - condition: state
    entity_id: input_boolean.charge_dynamique
    state: "on"
  - type: is_power
    condition: device
    device_id: b42834766cacaa063aba2417e15b65f2
    entity_id: sensor.shellyem_244cab4320a9_channel_1_power
    domain: sensor
    above: 300
action:
  - service: number.set_value
    data:
      value: "{{ states.number.electra_charging_amps.state | float - 1 }}"
    target:
      entity_id: number.electra_charging_amps
  - delay:
      hours: 0
      minutes: 1
      seconds: 0
      milliseconds: 0
mode: single
1 « J'aime »

Sinon pour changer l’ampérage, je fais simplement comme ça :

alias: Charge Cloucloute 16 A
sequence:
  - service: number.set_value
    data:
      value: "16"
    target:
      entity_id: number.tesla_charging_amps
mode: single
icon: mdi:car-connected

Y a une entité number directement accessible. Pas la peine de passer par states.number.xxxx

1 « J'aime »

Bonjour. Savez vous si l’API permet de rabattre/ouvrir les rétroviseurs ? (sans verrouiller la voiture)
Merci.

Bonjour,
Je viens de vérifier, mais bizarrement cette fonction n’est pas présente nativement avec l’intégration que j’utilise « Tesla Custom Integration ».