Entités pour api Psa car controller

si tu tu saisis l’http://IP_Ha:5000 tu dois tomber sur la page my_car_info, as tu cela?
peut etre ouvrir le port 5000 sur ton routeur (chez moi il est ouvert par virtual server car j’ai un second réseau pour ma domotique.)

Oui en effet ça fonctionne j'ai bien my_car_info j'ai vérifier que le port était bien ouvert, je suis revenu au point initial, ça m'affiche

Internal Server Error
The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

Donc retour au point de départ, les sensors de base comme la batterie le kilométrage etc...fonctionne bien mais impossible d'obtenir les autres comme le pré-conditionnement etc...


Il n'y a aucun autre moyen d'avoir ces info là?

voici ma conf templates.yaml

# Citroen C5 Aircross  
  - platform: rest
    name: c5_aircross_officiel
    resource: http://192.168.1.216:5100/get_vehicleinfo/XXXXX?from_cache=1
    scan_interval: 60
    timeout: 30
    value_template: "{{ value_json.energy[0].updated_at }}"
    json_attributes:
     - energy
     - timed_odometer
     - battery
     - last_position
     - preconditionning
     - kinetic
     - doors_state
     - ignition
     - environment
    device_class: timestamp
     
  - platform: template
    sensors:
      
      c5_aircross_temp_ext:
        unique_id: c5_aircross_temp_ext
        friendly_name: "Température Ext Voiture"
        unit_of_measurement: "°C"
        value_template: "{{ state_attr('sensor.c5_aircross_officiel','environment')['air'] ['temp'] |round(2) }}"
        icon_template: mdi:temperature-celsius 
        
      c5_aircross_ess_niveau:
        unique_id: c5_aircross_ess_niveau
        friendly_name: "Niveau essence"
        unit_of_measurement: "%"
        value_template: "{{ state_attr('sensor.c5_aircross_officiel','energy')[1]['level']|round(0) }}"
        icon_template: mdi:gas-station    
        
      c5_aircross_battery_voltage:
        unique_id: c5_aircross_battery_voltage
        friendly_name: "Tension de Batterie"
        unit_of_measurement: "V"
        value_template: "{{ state_attr('sensor.c5_aircross_officiel','battery')['voltage'] * 4 }}"
        icon_template: mdi:car-battery

        
      c5_aircross_battery_level:
        unique_id: c5_aircross_battery_level
        friendly_name: "Niveau Batterie"
        value_template: "{{ state_attr('sensor.c5_aircross_officiel','energy')[0]['level'] }}"
        icon_template: >-
         {% set battery_level = states('sensor.c5_aircross_battery_level')|float (0) -%}
         {% if battery_level <= 15 %}
           mdi:battery-outline
         {% elif battery_level > 15 and battery_level <= 45 %}
           mdi:battery-low
         {% elif battery_level > 45 and battery_level <= 75 %}
           mdi:battery-medium
         {% elif battery_level > 75 %}
           mdi:battery-high
         {% endif %}  
        attribute_templates: 
          state_class: measurement
          unit_of_measurement: "%"
          device_class: battery
          
      c5_aircross_battery_autonomy:
        unique_id: c5_aircross_battery_autonomy
        friendly_name: "Autonomie électrique"
        value_template: "{{ state_attr('sensor.c5_aircross_officiel','energy')[0]['autonomy'] }}"
        icon_template: mdi:map-marker-distance
        attribute_templates: 
          state_class: measurement
          unit_of_measurement: "km"
        
      c5_aircross_carburant_autonomy:
        unique_id: c5_aircross_carburant_autonomy
        friendly_name: "Autonomie essence"
        value_template: "{{ state_attr('sensor.c5_aircross_officiel','energy')[1]['autonomy'] }}"
        icon_template: mdi:map-marker-distance
        attribute_templates: 
          state_class: measurement
          unit_of_measurement: "km"
          device_class: volume
        
      c5_aircross_charging_status:
        unique_id: c5_aircross_charging_status
        friendly_name: "Etat de la charge"
        value_template: >-
         {% set value = state_attr('sensor.c5_aircross_officiel', 'energy')[0]['charging']['status'] %}
         {% if value == 'Failure' %}
           Défaut
         {% elif value == 'InProgress' %}
           En charge
         {% elif value == 'Stopped' %}
           En pause
         {% elif value == 'Finished' %}
           Terminé
         {% elif value == 'Disconnected' %}
           Déconnecté
         {% else %}
           Inconnu
         {% endif %}
        icon_template: >-
         {% set value = state_attr('sensor.c5_aircross_officiel', '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 %}
          
      c5_aircross_charging_mode:
        unique_id: c5_aircross_charging_mode
        friendly_name: "Mode de chargement"
        value_template: >-
          {% if(state_attr('sensor.c5_aircross_officiel','energy')[0]['charging']['charging_mode'] == "Slow") %} Normal {%else%} 
          {% if(state_attr('sensor.c5_aircross_officiel','energy')[0]['charging']['charging_mode'] == "Quick") %} Rapide {%else%} Aucun{%endif%} {%endif%}
        icon_template: >-
            {% if is_state('sensor.c5_aircross_charging_mode', 'Slow') -%}
              mdi:ev-plug-type2
            {% elif is_state('sensor.c5_aircross_charging_mode', 'Quick') -%}
              mdi:ev-plug-ccs2
            {% else -%}
              mdi:power-plug-off-outline
            {% endif -%} 
          
      
      
          
      c5_aircross_mileage:
        unique_id: c5_aircross_mileage
        friendly_name: "Kilométrage compteur"
        value_template: "{{ state_attr('sensor.c5_aircross_officiel','timed_odometer')['mileage'] }}"
        icon_template: mdi:road-variant
        attribute_templates: 
          state_class: total_increasing
          unit_of_measurement: "km"
        
      c5_aircross_my_mileage:
        unique_id: c5_aircross_my_mileage
        friendly_name: " Mon Kilométrage"
        value_template: "{{ (state_attr('sensor.c5_aircross_officiel','timed_odometer')['mileage'] - 24452)| round(1)}}"
        icon_template: mdi:account-check
        attribute_templates: 
          state_class: total_increasing
          unit_of_measurement: "km"

      c5_aircross_latitude:
        unique_id: c5_aircross_latitude
        friendly_name: "latitude c5"
        value_template: 
             "{{ ((state_attr('sensor.c5_aircross_officiel', 'last_position')['geometry']['coordinates'][0]) ) }}"
      c5_aircross_longitude:
        unique_id: c5_aircross_longitude
        friendly_name: "longitude c5"
        value_template:
             "{{ ((state_attr('sensor.c5_aircross_officiel', 'last_position')['geometry']['coordinates'][1]) ) }}"
        
      c5_aircross_charging_rate:
        unique_id: c5_aircross_charging_rate
        friendly_name: "Taux de charge"
        value_template: "{{ state_attr('sensor.c5_aircross_officiel', 'energy')[0]['charging']['charging_rate'] }}"
        icon_template: mdi:chart-bell-curve
        attribute_templates: 
          state_class: measurement
          unit_of_measurement: "km/h"

      c5_aircross_charging_remaining_time:
        unique_id: c5_aircross_charging_remaining_time
        friendly_name: "Remaining time"
        value_template: "{{ state_attr('sensor.c5_aircross_officiel', 'energy')[0]['charging']['remaining_time'] }}"
        icon_template: mdi:clock-time-four-outline
        
      c5_aircross_pre_conditionnement_defaut:
        unique_id: c5_aircross_pre_conditionnement_defaut
        friendly_name: "Défaut de pré-conditionnement"
        value_template: >-
          {% set value = state_attr('sensor.c5_aircross_officiel', '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 %}
            Sans defaut
          {% endif %}
        icon_template: >-
          {% set value = state_attr('sensor.c5_aircross_officiel', '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 %}
     
      c5_aircross_fin_de_charge_estimee:
        unique_id: c5_aircross_fin_de_charge_estimee
        friendly_name: "Fin de charge estimée"
        value_template: >-
          {% set value = state_attr('sensor.c5_aircross_officiel', 'energy')[0].charging.status %}
          {% if value == 'InProgress' %}

            {% set value = state_attr('sensor.c5_aircross_officiel', '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 %}
             {% if as_datetime((now() + timedelta( hours = int(hr), minutes = int(mn) )).isoformat()).strftime("%H")| int < 12 %}
            {% set horaire =  " du matin" %}
            {% else %}
            {% set horaire = "" %}
            {% endif %}
              à {{ as_datetime((now() + timedelta( hours = int(hr), minutes = int(mn) )).isoformat()).strftime("%H:%M")}}{{ horaire}}
            {% endif %}

           {% else %}
            Terminé
           {% endif %}
        icon_template: mdi:timer-outline     

 
# c5_aircross charge_control
  - platform: rest
    name: c5_aircross_charge_control_officiel
    unique_id: c5_aircross_charge_control_officiel
    resource: http://192.168.1.216:5100/charge_control?vin=XXXXXXXX&?always_check=true
    scan_interval: 60
    timeout: 30
    value_template: 'OK'
    json_attributes:
     - _next_stop_hour
     - percentage_threshold
     
  - platform: template
    sensors:
      c5_aircross_stop_hour:
        unique_id: c5_aircross_stop_hour
        friendly_name: "Prochaine heure d'arrêt"
        value_template: "{{ state_attr('sensor.c5_aircross_charge_control_officiel','_next_stop_hour')}}"
        icon_template: mdi:clock-time-four-outline
      c5_aircross_threshold:
        unique_id: c5_aircross_threshold
        friendly_name: "Seuil"
        unit_of_measurement: "%"
        value_template: "{{ state_attr('sensor.c5_aircross_charge_control_officiel','percentage_threshold' )}}"
        icon_template: mdi:percent-outline
        
        
        
        
        
        

puis ça dans configuration yaml (je n’ai pris le temps creér un fichier rest)

rest_command:


  
    c5_aircross_change_charge_threshold:
     
     url: "http://192.168.1.216:5100/charge_control?vin=xxxxxxx&percentage=100"
     method: GET
  
# c5_aircross réveil

    c5_aircross_wakeup:
      
      url: "http://192.168.1.216:5100/wakeup/xxxxxxxx"  

# activation preconditioning    
    c5_aircross_preconditioning_on:
      url: "http://192.168.1.216:5100/preconditioning/xxxxxxxx/1"
      method: GET
# stop preconditioning  
    c5_aircross_preconditioning_off:
      url: "http://192.168.1.216:5100/preconditioning/xxxxxxxx/0"
      method: GET   

puis ça dans command_line.yaml

# c5_aircross communication

  - switch:
      name: c5_aircross_clim
      unique_id: c5_aircross_clim
      
      command_on: curl -s "http://192.168.1.216:5100/preconditioning/XXXXXXXX/1"
      command_off: curl -s "http://192.168.1.216:5100/preconditioning/XXXXXXX/0"
      #command_state: 'curl -k --silent "http://192.168.1.216:5100/get_vehicleinfo/XXXXXXX?from_cache=1"' 
      #value_template: > 
      #    {{ value_json.preconditionning.air_conditioning.status == 'Enabled' }}
      #icon: >-
      #   {% set value = value_json.preconditionning.air_conditioning.status %}
      #    {% if value == 'Enabled' %}
      #     mdi:car-defrost-front
      #   {% elif value == 'Disabled' or value == 'Finished' %}
      #      mdi:air-conditioner
      #    {% else %}
      #      mdi:alert
      #    {% endif %}
      #command_timeout: 180
  - switch:    
      name: c5_aircross_change_threshold
      unique_id: c5_aircross_change_threshold
      command_on: curl -s "http://192.168.1.216:5100/charge_control?vin=XXXXXX&percentage=80"
      command_off: curl -s "http://192.168.1.216:5100/charge_control?vin=XXXXXX&percentage=100"

rappel j’utilise le port 5100 (raison perso).
De mémoire, je me suis appuyer sur:

bon courage à toi pour fouiller, suivant ta config perso de structure YAML, il va falloir adapter

Je viens de tester le lien direct du pré-conditionning et ça m’affiche bien « True » dans le navigateur quand je lui met
http://192.168.1.34:5000/preconditioning/vin=MON_VIN/1
Donc la commande est bien prise en compte à priori du coup c’est super étrange qu’il refuse de m’afficher les infos avec http://192.168.1.34:5000/get_vehicleinfo/vin=MON_VIN?from_cache=1 (internal serveur error 500)

je viens de lire ceci

cela fonctionnerait avec le nom du serveur

edit: je viens de tester chez moi cela ne marche pas

il faut mettre http://192.168.1.34:5000/get_vehicleinfo/MON_VIN?from_cache=1
pas de vin=

T’ES UN GÉNIE!!!
Purééééééééééé je suis un boulet j’ai mis le vin= dans toutes les commandes put**!ù^*$
Mais quel idiot que je suis!! en effet ça fonctionne correctement sinon :

{"embedded": null, "links": {"_self": {"deprecation": null, "href": "https://api.groupe-psa.com/connectedcar/v4/user/vehicles/je_cache_ça/status?profile=endUser", "hreflang": null, "name": null, "profile": null, "templated": null, "title": null, "type": null}, "vehicle": {"deprecation": null, "href": "https://api.groupe-psa.com/connectedcar/v4/user/vehicles/Je_cache_ça", "hreflang": null, "name": null, "profile": null, "templated": null, "title": null, "type": null}}, "battery": {"current": null, "voltage": 92.0}, "doors_state": {"locked_state": null, "opening": [{"identifier": "Trunk", "state": "Closed"}, {"identifier": "Driver", "state": "Closed"}, {"identifier": "RearRight", "state": "Closed"}, {"identifier": "RearLeft", "state": "Closed"}, {"identifier": "Passenger", "state": "Closed"}, {"identifier": "RearWindow", "state": "Closed"}, {"identifier": "RoofWindow", "state": "Open"}], "updated_at": null}, "energy": [{"updated_at": "2025-02-06 10:54:43+00:00", "autonomy": 136.0, "battery": null, "charging": {"charging_mode": "No", "charging_rate": 0, "next_delayed_time": "PT0S", "plugged": false, "remaining_time": null, "status": "Disconnected"}, "consumption": null, "level": 49.0, "residual": null, "type": "Electric"}], "environment": {"created_at": null, "air": {"temp": 3.5}, "luminosity": {"day": true}}, "ignition": {"type": "Stop"}, "kinetic": {"acceleration": null, "moving": false, "pace": null, "speed": null}, "last_position": {"type": "Feature", "geometry": {"coordinates": [1.91242, 47.91094, 121.0], "type": "Point"}, "properties": {"heading": 336.0, "signal_quality": 9.0, "type": "Acquire", "updated_at": "2025-02-06 07:38:28+00:00"}}, "preconditionning": {"air_conditioning": {"failure_cause": null, "status": "Disabled", "updated_at": "2025-02-06 10:54:45+00:00", "created_at": "2025-02-06 10:54:45+00:00"}}, "privacy": {"state": "None"}, "safety": null, "service": {"type": "Electric", "updated_at": null}, "timed_odometer": {"updated_at": "2025-02-06 10:54:43+00:00", "mileage": 10436.2}}

Restons modeste, c’est souvent le cas, ici aussi, le problème se situe très souvent en la chaise et le clavier.
Content que cela fonctionne pour toi.
chez moi ça fonctionne bien pour ma C5 sauf que j’ai pas de retour de l’états de mes portières donc si j’oublie de les verrrouiller, et bien j’ai pas de précondionnement, j’ai vu des issues sur le GITHUB mais ça bouge assez peu, en ce moment, du coté du développeur, dommage pour nous.

bonne continuation

Reste à savoir pourquoi certains sensor ne focntionnent pas comme le pré-conditionnement, j’avais repris la config d’un autre et je me demande si cela ne vient pas de ça
Mon configuration.yaml :

sensor PSA:
  - platform: rest
    resource_template: http://192.168.1.34: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.34:5000/wakeup/MON_VIN

    script:
    e208_maj:
    alias: e208 Rafraichir
    sequence:
      - data: {}
        service: rest_command.maj

Ils viennent tous de ce fichier, les sensors de base dans le sensor.yaml focntionnenent mais pas ceux là.

tes sensors sont mal définis:

il ne faut jamais d’espace dans les noms de sensors et pas de majuscule.
ce qui donne

- name: e208_alimentation

idem pour les unique_id

J’ai corrigé les noms des sensors mais cela ne change rien, seuls les sensors de base fonctionnent, d’ailleurs par exemple pour le pré conditionnement, même en relançant le module, ça m’affiche « indisponible » j’ai l’impression qu’il ne sait pas quoi faire avec ces modules ou que ça ne correspond pas, pourtant j’ai bien le service Peugeot Connect et je peux bien gérer le pré conditionnement via mon mobile.
Plus étrange c’est un script qui d’origine vient d’une autre e208, je doute que l’api est changé au point que le script ne remontent plus ces infos.
D’ailleurs comment update ces infos? Il y a un script à rajouter comment vous l’intégrez dans le dashboard?
Par contre dans tes fichiers tu a mis un template.yaml je n’ai pas ce fichier moi c’est un oublie de ma part ou c’est que j’utilise le fichier sensor.yaml à la place?
D’ailleurs dans les infos de ton pérconditionnement c’est différent de mon script alors je vais tester avec le tien.

bonjour, j’utilse la méthode 2 du lien ci dessous, qui permet d’avoir une organisation plus adaptée (c’est mon avis).
elle me semble plus aisée pour s’y retrouver. j’ai créé des répertoires.
voici un lien:

un extrait de mon configuration.yaml

homeassistant:
    customize: !include customize.yaml
    customize_glob: !include customize_glob.yaml    
    
notify: !include_dir_merge_list custom_sensors/notification/
sensor: !include_dir_merge_list custom_sensors/perso_sensors/
switch: !include_dir_merge_list custom_sensors/perso_switches/
camera: !include_dir_merge_list custom_sensors/perso_cameras/
binary_sensor: !include_dir_merge_list custom_sensors/perso_binary_sensors/
device_tracker: !include_dir_merge_list custom_sensors/perso_trackers/
mqtt:  !include custom_sensors/perso_mqtt/sensors_mqtt.yaml
cover: !include_dir_merge_list custom_sensors/perso_covers/
template: !include_dir_merge_list custom_sensors/perso_templates/
command_line: !include command_line.yaml       
group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

il ya aussi la méthode packages:

Mise en place de la fonction packages dans configuration.yaml.

Dans le lien que je t’ai donné il ya tout les sensors les inputs numbers et les automatisations et un exemple de dashboard.

Encore de la lecture

Alors après une bonne lecture j’ai essayé de me baser sur ton modèle, déjà j’ai ajouté la ligne
command_line: !include command_line.yaml
dans mon fichier configuration.yaml
En revanche si j’ajoute la commande de mise à jour via le code

rest_command:
  maj:
    url: http://192.168.1.34:5000/wakeup/VR3UHZKX4R4074874
    script:
    e208_maj:
    alias: e208_rafraichir
    sequence:
      - data: {}
        service: rest_command.maj

il me sors ça :

Avertissements de configuration
Invalid config for 'rest_command' at configuration.yaml, line 208: 'script' is an invalid option for 'rest_command', check: rest_command->maj->script
Invalid config for 'rest_command' at configuration.yaml, line 209: 'e208_maj' is an invalid option for 'rest_command', check: rest_command->maj->e208_maj
Invalid config for 'rest_command' at configuration.yaml, line 210: 'alias' is an invalid option for 'rest_command', check: rest_command->maj->alias
Invalid config for 'rest_command' at configuration.yaml, line 211: 'sequence' is an invalid option for 'rest_command', check: rest_command->maj->sequence
Invalid config for 'command_line' at configuration.yaml, line 13: expected a dictionary for dictionary value 'command_line->0->switch', got None

J’inserts le code via Studio Code Server pour être sûr que la mise en forme et le code ne soit pas erroné, et en effet il ne me détecte pas d’anomalie mais quand je veux redémarrer HA là j’ai les alertes sur le fichier de config.
Comment tu mets à jour les sensors toi sur ton dashboard?

rest_command et command_line sont différents et donc pas le même chemin et fichier Yaml.
j’ai laissé mes rest_command dans le fichier config. j’ai du rencontrer les memes soucis que toi, mais je n’ai pas creusé plus loin il faudrait que je le fasse.

Ha ben command_line il n’e veux pas non plus dans mon fichier de config :
Invalid config for 'command_line' at configuration.yaml, line 13: expected a dictionary for dictionary value 'command_line->0->switch', got None
J’ai même essayé ton sensor pour la température extérieure => il fonctionne! donc incompréhensible

tu peux mettre ton config yaml et tes sensors yaml pour que je puisse me rendre compte

Bonjour,
je viens de tomber là dessus

je l’ai testé cela fonctionne bien meme si cela ne m’apporte rien de plus pour moi, par contre tous les sensors sont créés, il n’ya rien à faire de plus.

pour l’otp je m’y suis repris à 3 fois mais avec la dernière métode (voir ci desous ) c’est passé

il faudra voir si le suivi est bon mais c’est prometteur.

Hello, merci pour le partage je vais y jeter un coup d’œil !
Contrairement à l’add-on PSA Car Controller, il ne semble pas y avoir de fichier car_model.yaml comportant les caractéristiques des voitures, donc une chance que ça fonctionne avec les véhicules oubliés ? (pour rappel, j’ai fait un pull requests pour intégrer la mienne il y a plusieurs mois, sans succès…).

Alors voilà ce que j'ai dans mon configuration.yaml

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
sensor: !include sensor.yaml
########################################
sensor PSA:
  - platform: rest
    resource_template: http://192.168.1.34:5000/get_vehicleinfo/MON_VIN?from_cache=1
    scan_interval: 60
    timeout: 30
    verify_ssl: false
    name: PSA
    unique_id: a14e3837-c502-40d1-9e99-75fc77973d5c
    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: d5826d9d-85e4-4ff4-8af9-a4ce6058ece9
      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_deplacement
      unique_id: 1b60eab3-1b56-4b2e-bcec-adc50bd90367
      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: 79014abe-44c1-49c5-8565-4ce311005bfa
      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: 3576c8bf-8c1c-4352-9452-01dc94a489c0
      state: >-
        {{ state_attr('sensor.psa', 'energy')[0].level }}
      unit_of_measurement: "%"
      device_class: battery
    - name: e208_kilometrage
      unique_id: f05d6fc2-5ce9-408c-a2eb-6a40ba4aa842
      state: >-
        {{ state_attr('sensor.psa', 'timed_odometer').mileage }}
      unit_of_measurement: "Km"
      icon: 'mdi:road-variant'
    - name: e208_autonomie
      unique_id: afea3c03-1d99-4726-9d71-5bd23a388fd0
      state: >-
        {{ state_attr('sensor.psa', 'energy')[0].autonomy }}
      unit_of_measurement: "Km"
      icon: 'mdi:map-marker-distance'
    - name: e208_pre_conditionnement Defaut
      unique_id: a903b70e-e393-4b84-82d1-2d76d42a6859
      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_pre_conditionnement
      unique_id: 8432c9b5-00ba-4699-98b4-4fa9914d162f
      state: >-
        {{ state_attr('sensor.psa', 'preconditionning').air_conditioning.status }}
    - name: e208_puissance_de_charge
      unique_id: 9d8ab2bd-24db-4923-b7f3-d31da1d12a19
      state: >-
        {{ state_attr('sensor.psa', 'energy')[0].charging.charging_rate * 0.163 }}
      unit_of_measurement: "kWh"
      icon: mdi:speedometer
############################################################################################################
    - name: e208_fin_de_charge_estimee
      unique_id: 717d8e7d-dd09-43c3-b690-922fb8a583e0
      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.34:5000/wakeup/MON_VIN

Tu noteras que j'ai supprimé la ligne de rest_command qui me renvoyais une erreur et de même je n'ai pas mis command_line: !include command_line.yaml puisque ça ne focntionne pas, il indique la ligne en erreur.
Voilà le sensor.yaml :

# Peugeot e208  
  - platform: rest
    name: peugeot_e208
    unique_id: ee5d62c2-bd97-46fc-9290-d17c637176ad
    resource: http://192.168.1.34:5000/get_vehicleinfo/MON_VIN?from_cache=1
    scan_interval: 60
    timeout: 30
    verify_ssl: false
    device_class: timestamp
#    value_template: 'OK'
    value_template: "{{ value_json.energy[0].updated_at }}"
    json_attributes:
    - energy
    - timed_odometer
    - battery
    - last_position
    - _next_stop_hour
    - percentage_threshold
    - kinetic
    - environment
#######################################
  - 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: "Batterie"
#        unit_of_measurement: "%"
#        value_template: '{{ states.sensor.peugeot_e208.attributes["energy"][0]["level"] }}'
      e208_battery_autonomy:
        friendly_name: "Autonomie"
        unit_of_measurement: "km"
        value_template: '{{ states.sensor.peugeot_e208.attributes["energy"][0]["autonomy"] }}'
      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"] }}' 
      e208_charging_status:
        friendly_name: "Status de la charge"
        value_template: '{{ states.sensor.peugeot_e208.attributes["energy"][0]["charging"]["status"] }}'
      e208_mileage:
        friendly_name: "Kilométrage"
        unit_of_measurement: "km"
        value_template: '{{ states.sensor.peugeot_e208.attributes["timed_odometer"]["mileage"] }}'
      e208_temp_ext:
        unique_id: a4435b40-be80-4171-94c6-2570d0e39f11
        friendly_name: "Température Ext Voiture"
        unit_of_measurement: "°C"
        value_template: '{{ states.sensor.peugeot_e208.attributes["environment"]["air"]["temp"] |round(2) }}'
        icon_template: mdi:temperature-celsius
      e208_clim_status:
        unique_id: coc249f813-62dc-474d-bb9f-f94220636f87-efgh
        friendly_name: "Climatisation"
        value_template: "{{ state_attr('sensor.peugeot_e208', 'preconditionning')['air_conditioning']['status'] }}"
        icon_template: mdi:thermometer-lines
      e208_battery_level:
        unique_id: coc249f813-62dc-474d-bb9f-f94220636f87-abcd
        friendly_name: "Niveau Electrique"
        unit_of_measurement: "%"
        value_template: "{{ state_attr('sensor.peugeot_e208', 'energy')[0]['level'] }}"
        icon_template: >-
          {% set battery_level = state_attr('sensor.peugeot_e208', 'energy')[0]['level']|float %}
          {% if battery_level <= 15 %}
          mdi:battery-outline
          {% elif battery_level > 15 and battery_level <= 45 %}
          mdi:battery-low
          {% elif battery_level > 45 and battery_level <= 75 %}
          mdi:battery-medium
          {% elif battery_level > 75 %}
          mdi:battery-high
          {% endif %}

Donc actuellement certains sensors fonctionnent d'autre pas ou ne s'affichent pas correctement comme le pré conditionnement qui m'indique en anglais si c'est enable ou non, voilà ce que ça me donne :

bonjour,
je pense qu’il s’agit d’un problème de remontée d’info coté constructeur, as tu essayé l’autre intégration cité ci dessus, chez moi cela n’a rien changé mais elle a le mérite d’etre beaucoup plus simple à mettre en oeuvre pas de yaml à créer et de fichier model car.
pour le tester sans tout perdre, j’ai arreté l’integration psa et installer la nouvelle.

A toi de voir.