Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ladestand der Tesla Powerwall 2 wird falsch angezeigt / Incorrect value of battery_level #2528

Open
WallE159 opened this issue Nov 26, 2022 · 3 comments

Comments

@WallE159
Copy link

WallE159 commented Nov 26, 2022

Für den Ladestand (battery_level) der Tesla Powerwall 2 wird in openWB ein falscher Wert angezeigt, z. B. 9%, obwohldie Tesla-App 5% angibt.
Grund scheint die Notreserve in der Powerwall 2 zu sein, die für den battery_level nicht berücksichtigt wurde.

Problembeschreibung und Lösung unter home-assistant/core#82297.

Der korrigierte Wert für den battery_level_neu müsste demnach unter Berücksichtigung der Notreserve n wie folgt aus battery_level abgeleitet werden:
battery_level bei 100% Batteriespeicher sollte einen battery_level_neu von 100 ergeben;
battery_level bei Füllstand "Notreserve" sollte n ergeben (liegt aber Stand jetzt darüber).

Mit der Zwei-Punkte-Form für lineare Gleichungen ergibt sich folgende Funktion für den korrigierten battery_level f(x) in Abhängigkeit von dem (falschen) battery_level x:

Voraussetzung: Wir kennen den battery_level, der reported wird, wenn der Batteriespeicher einen Füllstand n hat.
Wir wissen, dass ein Füllstand von 100 korrekt reported wird.

P1 ( battery_level | n), P2 (100 | 100) ,

f(x) = (100 - n) / (100 - battery_level) * (x - battery_level) + n

Beispiel: beim Füllstand "Notreserve 5%" wird in der Tesla-App ein battery_level von 9 ausgegeben.
Dann ergibt folgende Funktion zur Herleitung des korrigierten battery_levels f(x):

f(x) = (100-5)/(100-9) * (x-9) + 5 = 95/91 * (x-9) + 5

Test:
für x=100:
f(x) = 95/91 * (100-9) + 5 = 100

für x=9:
f(x) = 95/91 * (9-9) + 5 = 5

battery_level
):lauten (der Term kann sicher noch vereinfacht werden):
battery_level = (100 * ((battery_level / 100.0) - (0.05))) / (0.95)

@benderl
Copy link
Collaborator

benderl commented Nov 30, 2022

Wie kann die "Notreserve" ermittelt werden? Hart auf 5% zu setzen macht keinen Sinn.

@WallE159
Copy link
Author

Ich bin leider noch nicht dahintergekommen, ob und wie die "Notreserve" ausgelesen werden kann, ein fixer Wert in der Berechnung macht natürlich keinen Sinn.
Ein (nicht ganz so schöner) Workaround wäre evtl., dass dieser Wert in der Modulkonfiguration Batteriespeicher angegeben werden kann, sobald Tesla Powerwall ausgewählt wird ...
Müsste vom User immer wieder angepasst werden, sobald die Notreserve in der Tesla-App geändert wird. Aber wie häufig macht man das?

@mkanet
Copy link

mkanet commented Nov 17, 2023

Hi, sorry I only know English.

I am currently using the below template sensor to get a more precise value.

template:
  - sensor:
      - name: Powerwall Charge Actual
        unique_id: powerwall_charge_actual
        state_class: measurement
        unit_of_measurement: '%'
        device_class: battery
        state: "{{ (((95 / 91) * (states('sensor.powerwall_charge') | float - 9)) + 5) | round }}"

I don't know what `sensor.powerwall_backup_reserve` does either. The value stays at `24` for me. I presume it is taken from the below setting from the Tesla App:

1

However, the value in the Tesla app shows 20% as the backup reserve in the screenshot above. The sensor sensor.powerwall_backup_reserve has a value of: 24% currently, I think it should be 20%. Maybe, this sensor needs to be adjusted too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants