Mon problème
j’ai réussis à installer l’api de psa car controller et tout fonctionne dans celle ci. le problème vient des entités que je récupère pour créer une carte avec les informations de la voiture (C5 aircross) qui reste désespérément en indisponible (elles sont bien toutes présentes dans mes entités)
Le tutoriel d’origine
J’ai suivit ce tuto:
je pense que le soucis peut venir soit de l’ IPofTheSoftware qui n’est pas le bon (j’ai pris l’ip du raspberry pi car celui du soft était au format 0.0.0.0) soit du port 5000 qui reste en désactiver dans les options de l’api mais je ne trouve pas comment l’activer (quel chiffre mettre pour l’activer ?
j’espère avoir donné toutes les infos nécessaire mais n’hésitez pas à m’en demander plus.
Merci d’avance pour votre aide
Ma configuration
System Health
version
core-2021.12.7
installation_type
Home Assistant OS
dev
false
hassio
true
docker
true
user
root
virtualenv
false
python_version
3.9.7
os_name
Linux
os_version
5.10.63-v8
arch
aarch64
timezone
Europe/Paris
Home Assistant Community Store
GitHub API
ok
Github API Calls Remaining
4850
Installed Version
1.18.0
Stage
running
Available Repositories
934
Installed Repositories
23
Home Assistant Cloud
logged_in
false
can_reach_cert_server
ok
can_reach_cloud_auth
ok
can_reach_cloud
ok
Home Assistant Supervisor
host_os
Home Assistant OS 7.1
update_channel
stable
supervisor_version
supervisor-2021.12.2
docker_version
20.10.9
disk_total
14.1 GB
disk_used
4.1 GB
healthy
true
supported
true
board
rpi3-64
supervisor_api
ok
version_api
ok
installed_addons
Samba share (9.5.1), Duck DNS (1.14.0), File editor (5.3.3), Mosquitto broker (6.0.1), PSA Car Controller (v2.6.0)
Lovelace
dashboards
3
resources
8
views
8
error
/config/UI-lovelace.yaml not found
mode
storage
J’ai aussi du mal à visualiser correctement les informations de la voiture. Mais moi, ça vient bien du sensor qui a du mal à se mettre à jour je pense.
Il faudrait que tu nous partage les screenshot de la vue et des états dans le panneau de développement.
Merci pour vos réponses.
C’est bien ça que vous me demandez?
C’est bizarre. Partage nous ta configuration peutetre. Voici la mienne si tu veux t’en inspirer:
Configuration :
Basic sensor
sensor PSA:
- platform: rest
resource_template: http://[IP]:5000/get_vehicleinfo/[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
Sensor, switch, automation...
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"
automation:
- id: "63a2f136-91ad-4fb7-8f75-0644db525be5"
alias: "e208 GPS Tracking"
trigger:
- platform: state
entity_id: binary_sensor.e208_deplacement
attribute: latitude
- platform: state
entity_id: binary_sensor.e208_deplacement
attribute: longitude
condition: []
action:
- service: device_tracker.see
data:
dev_id: "e208"
battery: "{{ state_attr('sensor.psa', 'energy')[0].level }}"
gps:
- "{{ state_attr('sensor.psa', 'last_position').geometry.coordinates[1] }}"
- "{{ state_attr('sensor.psa', 'last_position').geometry.coordinates[0] }}"
switch:
- platform: command_line
switches:
e208_clim:
command_on: curl -s "http://[IP]:5000/preconditioning/[VIN]/1"
command_off: curl -s "http://[IP]:5000/preconditioning/[VIN]/0"
command_state: 'curl -k --silent "http://[IP]:5000/get_vehicleinfo/[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
rest_command:
maj:
url: http://[IP]:5000/wakeup/[VIN]
script:
e208_maj:
alias: e208 Rafraichir
sequence:
- data: {}
service: rest_command.maj
Lovelace
- title: '208'
path: '208'
icon: mdi:car-sports
badges: []
cards:
- type: vertical-stack
cards:
- type: picture
image: /local/images/e208.png
tap_action:
action: none
hold_action:
action: none
- type: glance
entities:
- entity: sensor.e208_kilometrage
- entity: binary_sensor.e208_deplacement
- entity: sensor.e208_autonomie
show_name: true
state_color: true
- type: entities
entities:
- entity: sensor.entree_frostrisk
- entity: switch.e208_clim
secondary_info: last-updated
- entity: sensor.e208_pre_conditionnement_defaut
- entity: script.e208_maj
- entity: sensor.release_psa
- type: map
entities:
- entity: zone.home
- entity: zone.travail_benjamin
- entity: zone.travail_celine
- entity: device_tracker.e208
hours_to_show: 18
- type: vertical-stack
cards:
- type: gauge
entity: sensor.e208_batterie
min: 0
max: 100
- type: glance
entities:
- entity: binary_sensor.e208_alimentation
- entity: sensor.e208_charge
- entity: sensor.e208_puissance_de_charge
state_color: true
show_name: true
- type: entities
entities:
- entity: sensor.e208_temps_restant_de_charge
- type: history-graph
entities:
- entity: sensor.e208_parcouru
- entity: sensor.e208_autonomie
hours_to_show: 24
refresh_interval: 0
merci j’ai pu solutionner mon soucis. tout fonctionne maintenant
Bonjour, je me permets de faire appel à vos connaissances concernant le plug-in PSA.
J’ai pu faire l’installation et tout fonctionne correctement, cependant il y a régulièrement des défauts de connexion.
Et j’ai remarqué que cela venait de quand il fallait que je rentre le code PIN à quatre chiffres sur l’application smartphone.
Il semblerait que le plug-in sous home assistant Ne gère pas cela ?
Avez-vous également ce problème ?
Comment gérez vous pour le code pin lorsque qu’il est demandé ?
Merci à vous
Marque le post qui t’as aidé comme solution.
Merci
mskjeux
Septembre 13, 2022, 10:12
9
Salut,
Après une restauration d’une sauvegarde, impossible de demarrer PSA Car controler.
J’ai desinstallé, restauré des savergardes ou autre, bien configurer le sur 5000 mais impossible a lancer.
Il avait pourtant bien fonctionné jusqu’a present…
Des idées ?
mskjeux
Septembre 14, 2022, 4:06
10
Salut à tous,
Pas d’avis sur mon pb ?
J’ai réinstallé l’addon mais rien n’y fait !
J’ai refait le fichier configuration.yaml qui semble correct.
Regarde mon message, je pense que sa arrangerais ton problème.
J’ai eu le même problème, il y a 3 semaines quand j’ai installer un ssd et restaurer une sauvegarde.
La solution, est d’arrêter le RPi et débrancher l’alimentation du secteur. Relancer HA et vider le cache du navigateur. Suffit de ce connecter a HA et de s’identifier et tout rentre dans l’ordre.
1 « J'aime »
mskjeux
Septembre 14, 2022, 5:05
12
Tu es un génie !!!
Je cherche depuis lundi et maintenant ça fonctionne.
J’ai déjà vidé le cache, redémarré mais pas débranché le PI.
2 « J'aime »
mskjeux
Septembre 15, 2022, 8:06
13
Bonjour,
AsthomV, pourrais tu dire comment tu as configuré ton C5 pour que cela fonctionne ?
J’ai un e208 et une C5.
La 208 j’arrive à configurer.
La C5 seule impossible à remonter les infos.
Et alors les 2 ensemble…
AsthomV
Septembre 15, 2022, 8:23
14
Bonjour,
Désolé je ne suis pas souvent sur le forum.
Voilà ce que j’ai du mettre pour le C5 dans les sensors:
# C5
- platform: rest
name: c5
resource: http://xxx.xx.xx.xx:5000/get_vehicleinfo/VOTREVIN?from_cache=1
scan_interval: 5
timeout: 30
value_template: 'OK'
json_attributes:
- energy
- timed_odometer
- battery
- last_position
- platform: template
sensors:
c5_battery_voltage:
friendly_name: " Tension de batterie"
unit_of_measurement: "V"
value_template: '{{ states.sensor.c5.attributes["battery"]["voltage"] * 4 }}'
c5_battery_level:
friendly_name: "Niveau de batterie"
unit_of_measurement: "%"
value_template: '{{ states.sensor.c5.attributes["energy"][0]["level"] }}'
c5_battery_autonomy:
friendly_name: "Autonomie"
unit_of_measurement: "km"
value_template: '{{ states.sensor.c5.attributes["energy"][0]["autonomy"] }}'
c5_fuel_autonomy:
friendly_name: "Autonomie essence"
unit_of_measurement: "km"
value_template: '{{ states.sensor.c5.attributes["energy"][1]["autonomy"] }}'
c5_charging_status:
friendly_name: "Statut de charge"
value_template: '{{ states.sensor.c5.attributes["energy"][0]["charging"]["status"] }}'
# Uncomment for miles instead of km
c5_mileage:
friendly_name: "Kilometrage"
unit_of_measurement: "km"
value_template: "{{ ((state_attr('sensor.c5', 'timed_odometer')['mileage']) ) | round(2)}}"
c5_locationlatitude:
friendly_name: "latitudec5"
value_template:
"{{ ((state_attr('sensor.c5', 'last_position').geometry.coordinates[0]) ) }}"
c5_locationlongitude:
friendly_name: "longitudec5"
value_template:
"{{ ((state_attr('sensor.c5', 'last_position').geometry.coordinates[1]) ) }}"
C’était le plus compliqué à trouver car les emplacements des informations ne sont pas les mêmes que les autres véhicules électriques. J’ai ajouté également l’autonomie essence.
J’espère que ça t’aidera!
AsthomV
Septembre 15, 2022, 8:26
15
et ça dans le fichier config:
# c5 WakeUp
rest_command:
c5_wakeup:
url: http://xxx.xx.xx.xx:5000/wakeup/VOTREVIN
mskjeux
Septembre 15, 2022, 8:54
16
Merci.
Pour le fichier à mettre dans les sensors. Tu as mis dans les 2 ?
Et dans le configuration.yaml tu as mis que ça ?
Mais j’ai tj une erreur bizarre qui fait référence au pourcentage de batterie.
AsthomV
Septembre 15, 2022, 9:13
17
Alors il y a ça en plus dans le config qui va solutionner ton problème je pense:
# c5 communication
switch:
- platform: command_line
switches:
c5_change_threshold:
friendly_name: "Seuil fin charge (100%-->80%)"
command_on: curl -s "http://xxx.xx.xx.xx:5000/charge_control?vin=VOTREVIN&percentage=80"
command_off: curl -s "http://xxx.xx.xx.xx:5000/charge_control?vin=VOTREVIN&percentage=100"
c5_change_charge_hour:
friendly_name: "fin de charge à 7h26"
command_on: curl -s "http://xxx.xx.xx.xx:5000/charge_control?vin=VOTREVIN&hour=7&minute=26"
command_off: curl -s "http://xxx.xx.xx.xx:5000/charge_control?vin=VOTREVIN&hour=0&minute=0"
c5_clim:
friendly_name: "Preconditionnement"
command_on: curl -s "http://xxx.xx.xx.xx:5000/preconditioning/VOTREVIN/1"
command_off: curl -s "http://xxx.xx.xx.xx:5000/preconditioning/VOTREVIN/0"
Tu peux changer l’heure de fin de la charge programmé bien sûr (moi 7h26)
mskjeux
Septembre 15, 2022, 9:37
18
Merci je n’ai plus d’erreur…
Et pour le fichier des sensor ?
Tu as mis dans les 2 ?
AsthomV
Septembre 15, 2022, 11:21
19
moi je n’ai pas le dossier sensor. C’est toi qui l’a créé? normalement c’est le sensor.yaml à remplir uniquement. Tout fonctionne ou il te manque encore des choses?
Il 'y a pas d’obligation à avoir un fichier séparé, ni avoir un répertoire. ça dépends des directives !include_dir_named
ou !include
contenues dans le configuration.yaml
Par contre, il faut éviter de mélanger les méthodes, sinon c’est vite le souci
Home Assistant permet d’ajouter des intégrations, des capteurs et pleins d’autres choses de plusieurs manières.
N’étant pas un expert Home Assistant mais un vrai débutant, j’étais un peu perdu au début.
Je vais essayer de vous parler des différentes manières de structurer votre configuration.yaml.
Mise à jour : 26/06/2020 – Temps de lecture / réalisation : < 1 / 05 min – Difficulté : Faible.
To do :
Mise a jour du liens Xiaomi.
Prérequis, matériels nécessaires & utilisés :
Version de HA…