Entités pour api Psa car controller

merci j’ai pu solutionner mon soucis. tout fonctionne maintenant :slight_smile:

Bonjour, je me permets de faire appel à vos connaissances concernant le plug-in PSA.

J’ai pu faire l’installation et tout fonctionne correctement, cependant il y a régulièrement des défauts de connexion.
Et j’ai remarqué que cela venait de quand il fallait que je rentre le code PIN à quatre chiffres sur l’application smartphone.
Il semblerait que le plug-in sous home assistant Ne gère pas cela ?
Avez-vous également ce problème ?
Comment gérez vous pour le code pin lorsque qu’il est demandé ?

Merci à vous

Marque le post qui t’as aidé comme solution.

Merci

:hacf:

Salut,
Après une restauration d’une sauvegarde, impossible de demarrer PSA Car controler.
J’ai desinstallé, restauré des savergardes ou autre, bien configurer le sur 5000 mais impossible a lancer.
Il avait pourtant bien fonctionné jusqu’a present…
image
Des idées ?

Salut à tous,
Pas d’avis sur mon pb ?
J’ai réinstallé l’addon mais rien n’y fait !
J’ai refait le fichier configuration.yaml qui semble correct.



Regarde mon message, je pense que sa arrangerais ton problème.

1 « J'aime »

Tu es un génie !!!
Je cherche depuis lundi et maintenant ça fonctionne.
J’ai déjà vidé le cache, redémarré mais pas débranché le PI. :clap:

2 « J'aime »

Bonjour,
AsthomV, pourrais tu dire comment tu as configuré ton C5 pour que cela fonctionne ?
J’ai un e208 et une C5.

  • La 208 j’arrive à configurer.
  • La C5 seule impossible à remonter les infos.
  • Et alors les 2 ensemble…

Bonjour,

Désolé je ne suis pas souvent sur le forum.
Voilà ce que j’ai du mettre pour le C5 dans les sensors:

# C5  
  - platform: rest
    name: c5
    resource: http://xxx.xx.xx.xx:5000/get_vehicleinfo/VOTREVIN?from_cache=1
    scan_interval: 5
    timeout: 30
    value_template: 'OK'
    json_attributes:
     - energy
     - timed_odometer
     - battery
     - last_position
  - platform: template
    sensors:
      c5_battery_voltage:
        friendly_name: " Tension de batterie"
        unit_of_measurement: "V"
        value_template: '{{ states.sensor.c5.attributes["battery"]["voltage"] * 4 }}'
      c5_battery_level:
        friendly_name: "Niveau de batterie"
        unit_of_measurement: "%"
        value_template: '{{ states.sensor.c5.attributes["energy"][0]["level"] }}'
      c5_battery_autonomy:
        friendly_name: "Autonomie"
        unit_of_measurement: "km"
        value_template: '{{ states.sensor.c5.attributes["energy"][0]["autonomy"] }}'
      c5_fuel_autonomy:
        friendly_name: "Autonomie essence"
        unit_of_measurement: "km"
        value_template: '{{ states.sensor.c5.attributes["energy"][1]["autonomy"] }}'
      c5_charging_status:
        friendly_name: "Statut de charge"
        value_template: '{{ states.sensor.c5.attributes["energy"][0]["charging"]["status"] }}'
      # Uncomment for miles instead of km
      c5_mileage:
        friendly_name: "Kilometrage"
        unit_of_measurement: "km"
        value_template: "{{ ((state_attr('sensor.c5', 'timed_odometer')['mileage']) ) | round(2)}}"
      c5_locationlatitude:
        friendly_name: "latitudec5"
        value_template: 
             "{{ ((state_attr('sensor.c5', 'last_position').geometry.coordinates[0]) ) }}"
      c5_locationlongitude:
        friendly_name: "longitudec5"
        value_template:
             "{{ ((state_attr('sensor.c5', 'last_position').geometry.coordinates[1]) ) }}"

C’était le plus compliqué à trouver car les emplacements des informations ne sont pas les mêmes que les autres véhicules électriques. J’ai ajouté également l’autonomie essence.
J’espère que ça t’aidera!

et ça dans le fichier config:

# c5 WakeUp
rest_command:
  c5_wakeup:
    url: http://xxx.xx.xx.xx:5000/wakeup/VOTREVIN

Merci.
Pour le fichier à mettre dans les sensors. Tu as mis dans les 2 ?
image

Et dans le configuration.yaml tu as mis que ça ?
image

Mais j’ai tj une erreur bizarre qui fait référence au pourcentage de batterie.

Alors il y a ça en plus dans le config qui va solutionner ton problème je pense:

  # c5 communication
switch:
  - platform: command_line
    switches:
      c5_change_threshold:
        friendly_name: "Seuil fin charge (100%-->80%)"
        command_on: curl -s "http://xxx.xx.xx.xx:5000/charge_control?vin=VOTREVIN&percentage=80"
        command_off: curl -s "http://xxx.xx.xx.xx:5000/charge_control?vin=VOTREVIN&percentage=100"
      c5_change_charge_hour:
        friendly_name: "fin de charge à 7h26"
        command_on: curl -s "http://xxx.xx.xx.xx:5000/charge_control?vin=VOTREVIN&hour=7&minute=26"
        command_off: curl -s "http://xxx.xx.xx.xx:5000/charge_control?vin=VOTREVIN&hour=0&minute=0"
      c5_clim:
        friendly_name: "Preconditionnement"
        command_on: curl -s "http://xxx.xx.xx.xx:5000/preconditioning/VOTREVIN/1"
        command_off: curl -s "http://xxx.xx.xx.xx:5000/preconditioning/VOTREVIN/0"

Tu peux changer l’heure de fin de la charge programmé bien sûr (moi 7h26)

Merci je n’ai plus d’erreur…
Et pour le fichier des sensor ?
Tu as mis dans les 2 ?
image

moi je n’ai pas le dossier sensor. C’est toi qui l’a créé? normalement c’est le sensor.yaml à remplir uniquement. Tout fonctionne ou il te manque encore des choses?

Il 'y a pas d’obligation à avoir un fichier séparé, ni avoir un répertoire. ça dépends des directives !include_dir_named ou !include contenues dans le configuration.yaml
Par contre, il faut éviter de mélanger les méthodes, sinon c’est vite le souci

Tu as raison, c’est bien moi qui ai créé ce dossier sensor (seul)…
Je l’ai viré oups ! Celle là elle est pour moi :relieved:

Je vais mettre tout ça a jour et pluis comme je veux remonter les données de ma e208 et de ma C5 hybride, il y un peu de configuration.

En tous cas dans un 1er temps, je ne trouve que les entités pour ma C5 :


qui correspond à
image

Il faut que je fouine :wink:
Et je reviendrai vers vous.

alors oui comme dit Pulpy, vérifie que tu as bien « sensor: !include sensor.yaml » (et vérifie bien l’orthographe)
Sinon mets tout ce que j’ai mis dans sensors.yaml directement dans ton fichier config.yaml et ça fonctionnera :wink:

Je regarde tout ça.
Merci

1 « J'aime »

Salut,
Ayant mis le bazard, j’ai reconfiguré que pour ma e-208.
Cela à l’air de refonctionner pour elle. :face_with_peeking_eye: mais je n’ai pas dit mon dernier mot pour rajouter ma C5 et avoir les 2 véhicules

Voici mon config.yaml

# peugeot communication
switch:
  - platform: command_line
    switches:
      e208_change_threshold:
        command_on: curl -s "http://192.168.1.131:5000/charge_control?vin=MON VIN&percentage=80"
        command_off: curl -s "http://192.168.1.131:5000/charge_control?vin=MON VIN&percentage=100"
      e208_change_charge_hour:
        command_on: curl -s "http://192.168.1.131:5000/charge_control?vin=MON VIN&hour=5&minute=0"
        command_off: curl -s "http://192.168.1.131:5000/charge_control?vin=MON VIN&hour=0&minute=0"
      e208_clim:
        command_on: curl -s "http://192.168.1.131:5000/preconditioning/MON VIN/1"
        command_off: curl -s "http://192.168.1.131:5000/preconditioning/MON VIN/0"
        command_state: 'curl -k --silent "http://192.168.1.131:5000:5000/get_vehicleinfo/MON VIN?from_cache=1"'
        value_template: >
          {{ value_json.preconditionning.air_conditioning.status == 'Enabled' }}
        icon_template: >-
          {% set value = value_json.preconditionning.air_conditioning.status %}
          {% set switch = states('switch.e208_clim') %}
        
            {% if value == 'Enabled' %}
              mdi:car-defrost-front
            {% elif value == 'Disabled' or value == 'Finished' %}
              mdi:air-conditioner
            {% else %}
              mdi:alert
            {% endif %}

        command_timeout: 180
        
        
sensor PSA:
  - platform: rest
    resource_template: http://192.168.1.131:5000/get_vehicleinfo/MON VIN?from_cache=1
    scan_interval: 60
    timeout: 30
    verify_ssl: false
    name: PSA
    device_class: timestamp
    value_template: "{{ value_json.energy[0].updated_at }}"
    json_attributes:
      - energy
      - kinetic
      - timed_odometer
      - last_position
      - preconditionning

template:
  binary_sensor:
    - name: e208 Alimentation
      unique_id: c5f46109-4cda-49b2-8c11-2a6b5d233aae
      state: >-
        {{ state_attr('sensor.psa', 'energy')[0].charging.plugged }}
      device_class: connectivity
      icon: >-
        {% if state_attr('sensor.psa', 'energy')[0].charging.plugged %}
          {% if state_attr('sensor.psa', 'energy')[0].charging.charging_mode == 'Slow' %}
            mdi:ev-plug-type2
          {% elif state_attr('sensor.psa', 'energy')[0].charging.charging_mode == 'Quick' %}
            mdi:ev-plug-ccs2
          {% endif %}
        {% else %}
          mdi:power-plug-off-outline
        {% endif %}
    - name: e208 Déplacement
      unique_id: dc7f3ff8-ad77-42d4-8523-ddec9dc821e0
      state: >-
        {{ state_attr('sensor.psa', 'kinetic').moving }}
      device_class: moving
      attributes:
        latitude: "{{ state_attr('sensor.psa', 'last_position').geometry.coordinates[1] }}"
        longitude: "{{ state_attr('sensor.psa', 'last_position').geometry.coordinates[0] }}"
  sensor:
    - name: e208 Charge
      unique_id: 8fbe0b19-447e-4e0b-b1c9-2d855437e63f
      state: >-
        {% set value = state_attr('sensor.psa', 'energy')[0].charging.status %}
        {% if value == 'Failure' %}
          Defaut
        {% elif value == 'InProgress' %}
          En charge
        {% elif value == 'Stopped' %}
          Pause
        {% elif value == 'Finished' %}
          Terminé
        {% elif value == 'Disconnected' %}
          Déconnecté
        {% else %}
          Inconnu
        {% endif %}
      icon: >-
        {% set value = state_attr('sensor.psa', 'energy')[0].charging.status %}
        {% if value == 'Failure' %}
          mdi:alert
        {% elif value == 'InProgress' %}
          mdi:play
        {% elif value == 'Stopped' %}
          mdi:pause
        {% elif value == 'Finished' %}
          mdi:stop
        {% else %}
          mdi:power-plug-off-outline
        {% endif %}
    - name: e208 Batterie
      unique_id: acf1f4f5-4180-43ba-9d1c-feb978f6b1eb
      state: >-
        {{ state_attr('sensor.psa', 'energy')[0].level }}
      unit_of_measurement: "%"
      device_class: battery
    - name: e208 Kilometrage
      unique_id: 4fe63f50-67f8-45f7-b148-e1f5554a85c9
      state: >-
        {{ state_attr('sensor.psa', 'timed_odometer').mileage }}
      unit_of_measurement: "Km"
      icon: 'mdi:road-variant'
    - name: e208 Autonomie
      unique_id: 0016a6a1-fed5-4a41-abb3-b1d6ca54bbab
      state: >-
        {{ state_attr('sensor.psa', 'energy')[0].autonomy }}
      unit_of_measurement: "Km"
      icon: 'mdi:map-marker-distance'
    - name: e208 Pré-conditionnement Defaut
      unique_id: a78793bf-1c13-4281-bf9f-d4abaed72d2f
      state: >-
        {% set value = state_attr('sensor.psa', 'preconditionning').failure_cause %}
        {% if value == 'Defect' %}
          Defectueux
        {% elif value == 'DoorOpened' %}
          Porte ouverte
        {% elif value == 'LowBattery' %}
          Batterie faible
        {% elif value == 'LowFuelLevel' %}
          Plus d'essence
        {% elif value == 'TooManyUnusedProg' %}
          Erreur de programmation
        {% else %}
          Inconnu
        {% endif %}
      icon: >-
        {% set value = state_attr('sensor.psa', 'preconditionning').failure_cause %}
        {% if value == 'Defect' %}
          mdi:information
        {% elif value == 'DoorOpened' %}
          mdi:information
        {% elif value == 'LowBattery' %}
          mdi:information
        {% elif value == 'LowFuelLevel' %}
          mdi:information
        {% elif value == 'TooManyUnusedProg' %}
          mdi:information
        {% else %}
          mdi:information-off
        {% endif %}
    - name: e208 Pré-conditionnement
      unique_id: b7c7350c-32ba-495a-aff0-7b88c2a134d5
      state: >-
        {{ state_attr('sensor.psa', 'preconditionning').air_conditioning.status }}
    - name: e208 Puissance de charge
      unique_id: e30a2bf6-3211-4859-abf1-17aa5f132ba6
      state: >-
        {{ state_attr('sensor.psa', 'energy')[0].charging.charging_rate * 0.163 }}
      unit_of_measurement: "kWh"
      icon: mdi:speedometer
############################################################################################################
    - name: e208 Parcouru
      unique_id: 7348f2e2-851f-4dc3-890f-4c73f571fb7e
      state: >-
        {% if is_state('binary_sensor.e208_alimentation', 'on') %}
          {{ states('sensor.e208_autonomie') }}
        {% else %}
          {{ (states('sensor.e208_parcouru')) - (states('sensor.e208_kilometrage') - state_attr('sensor.beta_test_timestamp', 'km')) }}
        {% endif %}
      attributes:
        km: >
          {% if is_state('binary_sensor.e208_alimentation', 'on') %}
            {{ states('sensor.e208_kilometrage') }}
          {% else %}
            {{ state_attr('sensor.e208_parcouru', 'km') }}
          {% endif %}
      unit_of_measurement: "Km"
      icon: 'mdi:map-marker-right'



############################################################################################################
    - name: e208 Fin de charge estimée
      unique_id: c249f813-62dc-474d-bb9f-f94220636f87
      state: >-
        {% set value = state_attr('sensor.psa', 'energy')[0].charging.status %}
        {% if value == 'InProgress' %}

          {% set value = state_attr('sensor.psa', 'energy')[0].charging.remaining_time %}
          
          {% if value.find("H") > 0 %}
            {% set hr = value[value.find("T")+1:value.find("T")+ 3] %}
            {% if hr[1:2] == "H"  %}
              {% set hr = "0" + hr[0] %}
            {% endif %}
          {% else %}
            {% set hr = "00" %}
          {% endif %}

          {% if value.find("M") > 0 %}
            {% set mn = value[value.find("M")-2:value.find("M")] %}
            {% if mn[0:1] == "H" or mn[0:1] == "T" %}
              {% set mn = "0" + mn[1] %}
            {% endif %}
          {% else %}
            {% set mn = "00" %}
          {% endif %}

          {% set result = hr + ":" + mn %}

          {% if result == "00:00" %}
            {{ result }}
          {% else %}
            {{ as_datetime((now() + timedelta( hours = int(hr), minutes = int(mn) )).isoformat()).strftime("%H:%M") }}
          {% endif %}

        {% else %}
          Déconnecté
        {% endif %}
      icon: "mdi:timer-outline"

rest_command:
  maj:
    url: http://192.168.1.131:5000/wakeup/MON VIN

Et mon sensor.yaml

# Peugeot e208  
  - platform: rest
    name: peugeot_e208
    resource: http://192.168.1.131:5000/get_vehicleinfo/MON VIN?from_cache=1
    scan_interval: 60
    timeout: 30
    value_template: 'OK'
    json_attributes:
     - energy
     - timed_odometer
     - battery
  - platform: template
    sensors:
      e208_battery_voltage:
        friendly_name: "Battery Voltage"
        unit_of_measurement: "V"
        value_template: '{{ states.sensor.peugeot_e208.attributes["battery"]["voltage"] * 4 }}'
      e208_battery_level:
        friendly_name: "Battery"
        unit_of_measurement: "%"
        value_template: '{{ states.sensor.peugeot_e208.attributes["energy"][0]["level"] }}'
      e208_battery_autonomy:
        friendly_name: "Autonomy"
        unit_of_measurement: "km"
        value_template: '{{ states.sensor.peugeot_e208.attributes["energy"][0]["autonomy"] }}'
       # Uncomment for miles instead of km
       #e208_battery_autonomy:
        #friendly_name: "Autonomy"
        #unit_of_measurement: "m"    
        #value_template: "{{ ((state_attr('sensor.peugeot_e208', 'energy')[0]['autonomy']) / 1.609) | round(0)}}"
      e208_charging_status:
        friendly_name: "Charging Status"
        value_template: '{{ states.sensor.peugeot_e208.attributes["energy"][0]["charging"]["status"] }}'
      e208_mileage:
        friendly_name: "Mileage"
        unit_of_measurement: "km"
        value_template: '{{ states.sensor.peugeot_e208.attributes["timed_odometer"]["mileage"] }}'
       # Uncomment for miles instead of km
       #e208_mileage:
        #friendly_name: "Mileage"
        #unit_of_measurement: "m"
        #value_template: "{{ ((state_attr('sensor.peugeot_e208', 'timed_odometer')['mileage']) / 1.609) | round(2)}}"
# Peugeot e208 charge_control
  - platform: rest
    name: peugeot_e208_charge_control
    resource: http://192.168.1.131:5000/charge_control?vin=MON VIN&?always_check=true
    scan_interval: 60
    timeout: 30
    value_template: 'OK'
    json_attributes:
     - _next_stop_hour
     - percentage_threshold
  - platform: template
    sensors:
      e208_stop_hour:
        friendly_name: "Next Stop Time"
        value_template: '{{ states.sensor.peugeot_e208_charge_control.attributes["_next_stop_hour"]}}'
      e208_threshold:
        friendly_name: "Threshold"
        unit_of_measurement: "%"
        value_template: '{{ states.sensor.peugeot_e208_charge_control.attributes["percentage_threshold"] }}' 

Comment je pourrais rajouter ma C5 à cette configuration ?
Si je duplique la totalité de cette configuration en modifiant le VIN et le nom C5 à la place de 208 un peu partout, il y a des erreurs…
Si je double juste les lignes comme ça, c’est pareil le bordel…

Qu’est ce que je peux faire ?

Coucou,
Bon j’ai reconfiguré que pour ma e208… Pour la C5, je ne suis pas sûr que 2 voitures fonctionnent avec PSA Car controller…

Par contre je me suis appuyé sur le lovelace déposé plus haut mais je n’ai pas reussi (ou pas compris) pour creer le script de mise à jour… J’ai fait ce que j’ai pu mais vraiment sans savoir ce que je fais :roll_eyes: