HomeAssistant – Tesla Integration, via TeslaFi

Von | 27. Mai 2024

Angeregt durch die Idee des Überschussladens brauche ich erstmal die Informationen des Teslas im HomeAssistent, um dann mit den Werten zu arbeiten.

1. Ansatz direkte Tesla-Integration

Von der Webseite des Überschussladens ging es Richtung Tesla Intergration in Home Assistant, die wurde aber rausgenommen, daher gab es im HACS eine Tesla_Custom Integration.

Die funktioniert aber auch nicht, weil Tesla seine API geändert hat und schwerer zugänglich ist. Zudem würde man mit jedem Zugriff das Auto aus seinem Sleep-Modus wecken und die Batterie belasten und dabei sinnlos Traffic erzeugen, wenn der Wagen rumsteht, was er meistens tut.

2. Ansatz TeslaFi-API

Ich überwache/sammle die Daten via TeslaFi. Über die ist der Zugriff, auch steuernd, auf das Auto möglich. Gleichzeitig bieten Sie eine API an. => https://teslafi.com/api.php

Dort kann man sich einen Access Token holen und auf die aktuellen und letzten gültigen Daten zugreifen.

https://www.teslafi.com/feed.php?token=<MY TOKEN>&command=lastGood

Wir man den Zugriff in Home-Assistant integriert ist wie immer tricky und gleichzeitg ganz einfach.

Vollständig beschrieben ist es hier:

https://dancwilliams.com/monitoring-teslafi-in-home-assistant/

Als erstes installiert man sich das AddOn FileEditor, da hätte ich auch früher drauf kommen können, dann kann man ganz einfach configuration.yaml bearbeiten. Da kommt das folgende in die Template-Section template:

# TeslaFi

- platform: rest
  name: TeslaFi Report
  resource: "https://www.teslafi.com/feed.php"
  scan_interval: 180
  params:
    token: YOUR TESLAFI API TOKEN HERE
    command: lastGood
  value_template: "{{ value_json.display_name }}"
  json_attributes:
    - api_version
    - autopark_state
    - autopark_state_v2
    - autopark_style
    - battery_current
    - battery_heater
    - battery_heater_on
    - battery_level
    - battery_range
    - calendar_enabled
    - calendar_supported
    - car_type
    - car_version
    - carState
    - center_display_state
    - charge_current_request
    - charge_current_request_max
    - charge_enable_request
    - charge_energy_added
    - charge_limit_soc
    - charge_limit_soc_max
    - charge_limit_soc_min
    - charge_limit_soc_std
    - charge_miles_added_ideal
    - charge_miles_added_rated
    - charge_port_cold_weather_mode
    - charge_port_door_open
    - charge_port_latch
    - charge_port_led_color
    - charge_rate
    - charge_to_max_range
    - chargeNumber
    - charger_actual_current
    - charger_phases
    - charger_pilot_current
    - charger_power
    - charger_voltage
    - charging_state
    - climate_keeper_mode
    - color
    - conn_charge_cable
    - currency
    - data_id
    - Date
    - defrost_mode
    - df
    - display_name
    - dr
    - driveNumber
    - driver_temp_setting
    - driver_temp_settingF
    - elevation
    - est_battery_range
    - eu_vehicle
    - exterior_color
    - fan_status
    - fast_charger_brand
    - fast_charger_present
    - fast_charger_type
    - fd_window
    - fp_window
    - ft
    - gps_as_of
    - gui_24_hour_time
    - gui_charge_rate_units
    - gui_distance_units
    - gui_range_display
    - gui_temperature_units
    - heading
    - homelink_nearby
    - id
    - id_s
    - ideal_battery_range
    - idleNumber
    - idleTime
    - in_service
    - inside_temp
    - inside_tempF
    - is_auto_conditioning_on
    - is_climate_on
    - is_front_defroster_on
    - is_preconditioning
    - is_rear_defroster_on
    - is_user_present
    - last_autopark_error
    - latitude
    - left_temp_direction
    - location
    - locked
    - longitude
    - managed_charging_active
    - managed_charging_start_time
    - managed_charging_user_canceled
    - max_avail_temp
    - max_range_charge_counter
    - maxRange
    - measure
    - min_avail_temp
    - motorized_charge_port
    - newVersion
    - newVersionStatus
    - not_enough_power_to_heat
    - Notes
    - notifications_enabled
    - notifications_supported
    - odometer
    - odometerF
    - option_codes
    - outside_temp
    - outside_tempF
    - parsed_calendar_supported
    - passenger_temp_setting
    - perf_config
    - pf
    - polling
    - power
    - pr
    - rangeDisplay
    - rd_window
    - rear_seat_heaters
    - remote_start
    - remote_start_enabled
    - remote_start_supported
    - rhd
    - right_temp_direction
    - roof_color
    - rp_window
    - rt
    - scheduled_charging_pending
    - scheduled_charging_start_time
    - seat_heater_left
    - seat_heater_rear_center
    - seat_heater_rear_left
    - seat_heater_rear_left_back
    - seat_heater_rear_right
    - seat_heater_rear_right_back
    - seat_heater_right
    - seat_type
    - sentry_mode
    - shift_state
    - side_mirror_heaters
    - sleepNumber
    - smart_preconditioning
    - speed
    - spoiler_type
    - state
    - steering_wheel_heater
    - sun_roof_installed
    - sun_roof_percent_open
    - sun_roof_state
    - temperature
    - third_row_seats
    - time_to_full_charge
    - timestamp
    - trip_charging
    - usable_battery_level
    - user_charge_enable_request
    - valet_mode
    - valet_pin_needed
    - vehicle_id
    - vehicle_name
    - vin
    - wheel_type
    - wiper_blade_heater

Wenn man alles richtig macht findet man unter Einstellungen -> Geräte -> Entitäten einen sensor.tesla_fi, der alle Daten in seinen Attributen enthällt.

Bei den Werten werden amerikanische Eeinheiten geliefert, also Meilen und Fahrenheit.

Will man nun zweitens vereinfacht, auf einen Wert zugreifen, zum Beispiel den Batteriestand, geht es über Einstellungen -> Geräte ->Helper und dann ein neues Template anlegen. Allerdings muss da nicht der ganze Code aus obiger Webseite rein, sondern nur die Berechnungsvorschrift, also :

Nun hat man Zugriff auf die Entität sensor.model3.battery und kann diese anzeigen oder in Automatisierungen verwenden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert