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.

