Entités pour api Psa car controller

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:

C’est étrange qu’il ne puisse pas gérer 2 voitures. Tu as bien tes 2 voitures sur l’application mycitroen?
Je n’ai pas accès à mon ha tout de suite j’essaierai de voir si il n’y a pas possibilité d’avoir 2 fois laddon? Pour le script de mise a jour j’avoue que je ne l’ai pas fait donc aucune idée du soucis désolé

La C5 est une Citroen mais la 208 une Peugeot… Oui elles osnt connecté via les 2 applis sur mon téléphone.
Après configutation de User config de PSA car controller avecCitroen puis Peugeot, elles sont présentes dans Home assistant mais seule la derniere connectée remonte les infos :

Ci dessous Peugeot étant connecté en dernier, je n’ai que ces infos à elle.


Pour la Citroen, il n’y a rien :

SI je connecte la Citroen en dernier, c’est l’inverse :crazy_face:

Ah donc il y a des chances que ce soit juste un problème de chemin d’accès aux informations (ton states.sensor.c5.attributes[…] il doit manquer genre [1] ou [2] avant le reste des infos demandés

:unamused: j’essaye mais là je n’ai pas compris…
Disons que je n’ai pas de grandes connaissances en codage ou autre.
Je suis volontaire et j’essaye de comprendre mais ce n’est pas toujours facile…

Essaie de lancer via un terminal de commande ça :
Curl http://192.168.1.131:5000/get_vehicleinfo/MON VIN?from_cache=1

Voir ce que tu obtiens. Sinon test la c5 en enlevant le ?from_cache=1 de ton fichier config. (Faudra le remettre mais ça peut donner une indication.)
Je ne suis pas très calé en programmation mais faudra peut être mettre modifier des choses par là.

Avec le VIN 208 : Curl http://192.168.1.131:5000/get_vehicleinfo/VIN 208?from_cache=1
J’obtiens çà :

C:\>Curl http://192.168.1.131:5000/get_vehicleinfo/VIN 208?from_cache=1
{"embedded": null, "links": {"_self": {"deprecation": null, "href": "https://api.groupe-psa.com/connectedcar/v4/user/vehicles/1566c497a5655686153316861544651774d7a4d314f544d6a497a45324e54526a4e325a6d597a633259545a695a54566a4f44417a4e7a566a4d6a6c6a4d4467324d4463334f574e6a597a526d4d6d59344e7a67324f444a6c5a6d45325a4463775a544a6a596d4a6b597a64695957553d/status", "hreflang": null, "name": null, "profile": null, "templated": null, "title": null, "type": null}, "vehicle": null}, "battery": {"current": 0.0, "voltage": 90.0}, "doors_state": null, "energy": [{"updated_at": "2022-09-17 07:01:26+00:00", "autonomy": 234.0, "battery": null, "charging": {"charging_mode": "No", "charging_rate": 0, "next_delayed_time": "PT22H", "plugged": false, "remaining_time": "PT0S", "status": "Disconnected"}, "consumption": null, "level": 80.0, "residual": null, "type": "Electric"}, {"updated_at": "2021-09-15 10:24:24+00:00", "autonomy": null, "battery": null, "charging": null, "consumption": null, "level": 0.0, "residual": null, "type": "Fuel"}], "environment": null, "ignition": null, "kinetic": {"acceleration": null, "moving": null, "pace": null, "speed": null}, "last_position": {"type": "Feature", "geometry": {"coordinates": [null, null, null], "type": "Point"}, "properties": {"heading": null, "signal_quality": null, "type": null, "updated_at": null}}, "preconditionning": {"air_conditioning": {"failure_cause": null, "programs": null, "status": "Disabled", "updated_at": "2022-09-17 07:01:26+00:00"}}, "privacy": {"state": "None"}, "safety": null, "service": {"type": "Electric", "updated_at": "2022-09-17 07:01:26+00:00"}, "timed_odometer": {"updated_at": null, "mileage": 16425.6}}C:\>

Mais rien si je change avec le VIN de ma C5
Curl http://192.168.1.131:5000/get_vehicleinfo/VIN C5?from_cache=1

Je cache mes VIN a chaque mais je ne sais pas si c’est important :wink:

Oui c’est mieux de cacher :wink:
Donc ça vient bien de ce lien qui ne récupère pas les infos. Tu les a bien dans l’addon de ha?
Essai peut être avec from_cache=2 sans grande conviction…

Je rajoute ?from_cache=2 pour la C et je laisse ?from_cache=1 pour la 208 ?

Oui mais c’est juste un test sans grande conviction.
Comment as tu ajouté ta seconde voiture dans l’addon?

Dans PSA CAR CONTROLLER ?
DAns User config, un coup avec les identifiants Peugeot et ensuite avec ceux de Citroen

Bon j’assaye de modifier ligne par ligne en copiant ce qui fonctionne pour la E208 et en mettant les infos de la C5…
Mais je ne pense pas que les id soient les même ?

Je ne pense pas que ça vienne des lignes de commandes mais bien de l’addon. Si tu n’arrives pas a avoir les infos directement dedans ni via la commande que je t’ai donné c’est que ça ne vient pas de ton fichier config.
Je vois sur ton screen que tu as aussi un 5008? Tu as des infos dessus?

Là c’est un mystere, ces 2 véhicules apparaissent lorsque je connecte les miens et je n’ai jamais eu de 5008
image

Il n’existerait pas un genre de cache pour cet addon PSA CC ou il restrait ces informations?

AsthomV, tu penses pouvoir me partager ton config.yaml et sensor.yaml ?
Soit en MP ou ici en cachant ton VIN ?

Dsl mon ha est down sans raison et je ne suis pas à côté pour corriger.
Mon fichier config est bien rempli et renvoie à plein d’autres fichiers (genre sensor.yaml) donc ça risque d’être compliqué pour toi de t’y retrouver. Comme je te l’ai dis je pense que ça vient de l’addon voir de ton compte psa vu qu’il détecte des vehicules fantôme… c’est très étrange. Ils se créent en même temps que tu crée la c5 ou la 208? Il faudrait sûrement vider le cache pour retrouver un truc un peu plus clean (je n’ai pas la manip en tête mais ça doit se trouver facilement sur le net)