The flobz plugin, is not working the expected way. i’ve read that the openhab community already developed a binding.
Maybe anyone can port this to home assistant?
New version with self updating token.works great again
In my opinion, better wait for the new API.
I Checked today, but still not published yet.
Car (e208 GT) is arriving very soon now. Time for some preparation ^^
So I have a few questions left unanswered.
Regarding the login data from the APK file backup, does that mean I can use the app OR flobz’, solution or both at the same time?
Does the login keep working/refreshing itself or do I have to redo the login data extraction again and again after specific time periods?
I can answer a few question by myself already. Both work fine in parallel. Login seems to refresh itself if needed by now.
New one: @ds1707 can you paste your restful sensors please? I never tinkered with restful at all yet…
Yes of course i can share my RESTFUL Sensor config.
The API only allows a request every 2 minutes that’s why i am facing the follwing problem.
I wanted to include also other sub directories of the JSON path, to put it in one request, maybe you can solve it.
And here is the config:
- platform: rest
name: car_corsa_energy
json_attributes_path: "$['energy'][0]"
# json_attributes_path: "$"
json_attributes:
# - battery.current
# - battery.voltage
- charging.charging_rate
- level
- autonomy
- updated_at
resource: http://192.168.17.2:5000/get_vehicleinfo/VIN
# value_template: '{{ value_json.level }}'
value_template: '{{ value_json.energy.level }}'
scan_interval: 750
- platform: template
sensors:
battery_soc:
friendly_name: 'Batteriestand'
value_template: "{{ state_attr('sensor.car_corsa_energy', 'level') }}"
unit_of_measurement: '%'
autonomy:
friendly_name: 'Reichweite'
value_template: "{{ state_attr('sensor.car_corsa_energy', 'autonomy') }}"
unit_of_measurement: 'km'
rest_command:
charge_control100:
url: 'http://192.168.17.2:5000/charge_control?vin=VIN&percentage=100'
charge_control90:
url: 'http://192.168.17.2:5000/charge_control?vin=VIN&percentage=90'
charge_control80:
url: 'http://192.168.17.2:5000/charge_control?vin=VIN&percentage=80'
I tried anything to get it stay in root with it’s dictionary, but no dice. It causes nothing but errors and non working sensors. So I did what you wanted to not do in the end:
configuration.yaml
- platform: rest
name: car_208e_energy
json_attributes_path: "$.energy[0]"
json_attributes:
- level
- autonomy
- updated_at
resource: http://192.168.181.50:5000/get_vehicleinfo/FID
value_template: '{{ value_json.energy[0].level }}'
scan_interval: 180
- platform: rest
name: car_208e_battery
json_attributes_path: "$.battery"
json_attributes:
- current
- voltage
resource: http://192.168.181.50:5000/get_vehicleinfo/FID
value_template: '{{ value_json.battery.current }}'
scan_interval: 180
- platform: rest
name: car_208e_charging
json_attributes_path: "$.energy[0].charging"
json_attributes:
- charging_rate
- charging_mode
- plugged
- status
resource: http://192.168.181.50:5000/get_vehicleinfo/FID
value_template: '{{ value_json.energy[0].charging.status }}'
scan_interval: 180
- platform: template
sensors:
energy_level:
friendly_name: 'Batteriestand'
value_template: "{{ state_attr('sensor.car_208e_energy', 'level') }}"
unit_of_measurement: '%'
energy_autonomy:
friendly_name: 'Reichweite'
value_template: "{{ state_attr('sensor.car_208e_energy', 'autonomy') }}"
unit_of_measurement: 'km'
battery_current:
friendly_name: 'Batteriestatus'
value_template: "{{ state_attr('sensor.car_208e_battery', 'current') }}"
battery_voltage:
friendly_name: 'Batterie Wearing'
value_template: "{{ state_attr('sensor.car_208e_battery', 'voltage') }}"
unit_of_measurement: '%'
charging_charging_rate:
friendly_name: 'Laderate'
value_template: "{{ state_attr('sensor.car_208e_charging', 'charging_rate') }}"
charging_charging_rate_kw:
friendly_name: 'Laderate'
value_template: "{{ state_attr('sensor.car_208e_charging', 'charging_rate') * 0.29 }}"
unit_of_measurement: 'kW'
charging_charging_mode:
friendly_name: 'Lademodus'
value_template: "{{ state_attr('sensor.car_208e_charging', 'charging_mode') }}"
charging_plugged:
friendly_name: 'Ladegerät Eingesteckt'
value_template: "{{ state_attr('sensor.car_208e_charging', 'plugged') }}"
charging_status:
friendly_name: 'Ladevorgang Status'
value_template: "{{ state_attr('sensor.car_208e_charging', 'status') }}"
rest_command:
stop_charge:
url: "http://192.168.181.50:5000/charge_now/FID/0"
max_charge_100:
url: "http://192.168.181.50:5000/charge_control?vin=FID&percentage=100"
max_charge_90:
url: "http://192.168.181.50:5000/charge_control?vin=FID&percentage=90"
max_charge_85:
url: "http://192.168.181.50:5000/charge_control?vin=FID&percentage=85"
max_charge_80:
url: "http://192.168.181.50:5000/charge_control?vin=FID&percentage=80"
Calling the website for information does not fire a refresh from flobz server solution to PSA as far as I can see, so this works quite fine. Ugly, but fine.
Only thing I still wanna have… device_tracker made off the coordinates in the REST output. But this seems to be quite impossible.
EDIT: And I have a working Device Tracker
configuration.yaml
- platform: rest
name: car_208e_mapdata
json_attributes_path: "$.last_position.geometry"
json_attributes:
- coordinates
resource: http://192.168.181.50:5000/get_vehicleinfo/FID
value_template: '{{ value_json.last_position.geometry.coordinates[2] }}'
scan_interval: 180
automaion.yaml
- id: car_track
alias: Tracker Car
trigger:
- entity_id: sensor.car_208e_mapdata
platform: state
- event: start
platform: homeassistant
action:
- data:
dev_id: car
battery: '{{states.sensor.energy_level.state}}'
gps_accuracy: '15'
gps:
- '{{state_attr(''sensor.car_208e_mapdata'', ''coordinates'')[1]}}'
- '{{state_attr(''sensor.car_208e_mapdata'', ''coordinates'')[0]}}'
service: device_tracker.see
mode: single
known_devices.yaml
car:
name: Mein 208e
icon: mdi:car-hatchback
picture: /local/peugeot.png
track: true
Awesome, thanks for the work on this everyone.
Got the SOC and range of our e208 on my dashboard now… fab!!!
After my car suddently started to feel like being a Hybrid car aka the API changed as it seems, I updated a few things + flobz’ server and I went some other way I was recommended by flobz regarding HA integration: GitHub - Flodu31/HomeAssistant-PeugeotIntegration: Integration between Peugeot API and Home Assistant
Pro: Only one call to the server (@ds1707 this is for ya)
Con: A bit more complicated at first.
configuration.yaml
sensor:
- platform: rest
name: peugeot_e208
resource: http://192.168.181.50:5000/get_vehicleinfo/VRXXXXXXXXXXXXXXX
scan_interval: 60
timeout: 30
value_template: 'OK'
json_attributes:
- energy
- timed_odometer
- battery
- last_position
- platform: template
sensors:
e208_battery_voltage:
friendly_name: "Batterie Spannung"
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"][1]["level"] }}'
e208_battery_autonomy:
friendly_name: "Autonomie"
unit_of_measurement: "km"
value_template: '{{ states.sensor.peugeot_e208.attributes["energy"][1]["autonomy"] }}'
e208_charging_mode:
friendly_name: "Lademodus"
value_template: '{{ states.sensor.peugeot_e208.attributes["energy"][1]["charging"]["charging_mode"] }}'
e208_charging_rate:
friendly_name: "Laderate"
unit_of_measurement: "km/h"
value_template: '{{ states.sensor.peugeot_e208.attributes["energy"][1]["charging"]["charging_rate"] }}'
e208_charging_plugged:
friendly_name: "Ladegerät Eingesteckt"
value_template: '{{ states.sensor.peugeot_e208.attributes["energy"][1]["charging"]["plugged"] }}'
e208_charging_status:
friendly_name: "Ladestatus"
value_template: '{{ states.sensor.peugeot_e208.attributes["energy"][1]["charging"]["status"] }}'
e208_mileage:
friendly_name: "Kilometerstand"
unit_of_measurement: "km"
value_template: '{{ states.sensor.peugeot_e208.attributes["timed_odometer"]["mileage"] }}'
e208_mapdata:
friendly_name: "Kartendaten"
value_template: '{{ states.sensor.peugeot_e208.attributes["last_position"]["geometry"]["coordinates"] }}'
known_devices.yaml
car:
name: Mein 208e
icon: mdi:car-hatchback
picture: /local/peugeot.png
track: true
automation.yaml
- id: car_track
alias: Tracker Car
trigger:
- entity_id: sensor.e208_mapdata
platform: state
- event: start
platform: homeassistant
action:
- data:
dev_id: car
battery: '{{states.sensor.e208_battery_level.state}}'
gps_accuracy: '15'
gps:
- '{{ (states.sensor.peugeot_e208.attributes["last_position"]["geometry"]["coordinates"][1]) }}'
- '{{ (states.sensor.peugeot_e208.attributes["last_position"]["geometry"]["coordinates"][0]) }}'
service: device_tracker.see
mode: single
P.S. It seems like I have to use [“energy”][1] as my car is on identity crisis and thinks it’s a hybrid car and [“energy”][0] is the nulled fuel information in my case. Use what works for you
P.P.S. And now I am back to [0] O_o
Awesome workaround, works like a charm, thank you for sharing!
Is it also possible to show the position tracking in a card?
You were able to. But PSA is plain stupid right now. "kinetic" and "last_position" fields are empty · Issue #50 · flobz/psa_car_controller · GitHub
The last position is not empty for me. I own an open Corsa. The coordinates are in home assistant, but I don’t have any experiences showing coordinates nor tracks in the card?
Can you give me a hint?
Aww crap, I forgot this one in my howto:
known_devices.yaml
car:
name: Mein 208e
icon: mdi:car-hatchback
picture: /local/peugeot.png
track: true
Did you add the automation I posted above? This one will fill the self made device tracker. Then it should have the coordinates and you can add it in a map lovelace tile. Worked nicely until my car went to coordinates = null mode… Solution not found yet, but likely it happened due to registering to a Telemaintenance service inside the app. If you can register such service, too… DONT (yet) ^^
Hello Daniel,
i have added your automation:
alias: Garage Corsa Position
description: ''
trigger:
- entity_id: sensor.car_corsa_charge_mapdata
platform: state
- event: start
platform: homeassistant
condition: []
action:
- data:
dev_id: car
battery: '{{states.sensor.car_corsa_battery_level.state}}'
gps_accuracy: '15'
gps:
- >-
{{
(states.sensor.car_corsa.attributes["last_position"]["geometry"]["coordinates"][1])
}}
- >-
{{
(states.sensor.car_corsa.attributes["last_position"]["geometry"]["coordinates"][0])
}}
service: device_tracker.see
mode: single
And there were coorinates in the sensor.car_corsa_charge_mapdata, but i don’t have any device tracker that i can visualize in any map.
Can you help me out?
See above. You need to add the block I pasted into known_devices.yaml
Ah understood, but I don’t have this file. Shall I create it? Where and do I need to link the configuration.yaml to it?
I created the file with the input, now i am waiting for the next movement of the car, to receive data.
Strange… Maybe becuase of that:
Once device_tracker
is enabled, a file will be created in your configuration dir named known_devices.yaml
. Edit this file to adjust which devices to be tracked.
Has anyone managed to get the flobz app_decoder working for a Vauxhall Corsa-e in the UK at all? I’m struggling - I’ve tried a few different versions of the APK (from 1.27.0 up to 1.29.2) and I just get kicked out after entering GB as the country code:
What is your country code ? (ex: FR, GB, DE, ES...)
GB
Traceback (most recent call last):
File "/psa_car_controller/psa_car_controller/app_decoder.py", line 112, in <module>
token = res.json()["accessToken"]
KeyError: 'accessToken'
HOST_BRANDID : https://id-dcr.vauxhall.co.uk/mobile-services sitecode: 0V_GB_ESP
{"returnCode":"NEED_ACTIVATION"}
Has anyone managed to overcome this at all?