Hallo,
ich bin langsam am verzweifeln da ich eine einfache Berechnung nicht hin bekommen.
Ich möchte ein regelbares Netzteil nutzen um bei negativem Bezug einen Akku zu laden.
Um den aktuellen Leistungsüberschuss zu ermitteln, wollte ich rechnen:
Überschuss = Überschuss - Bezug
Ich versuche einen Sensorwert in eine Variable zu schreiben:
Die beiden Sensorwerte sind z.Z. natürlich identisch, ich wollte später den Interwall der Aktualisierung von “tasmota_sml_curr_w” von 20s auf 3-5s reduzieren und “aktueller Bezug” als Durchschnitt auf 30s oder mehr ändern.
Beide Sensorwerte lassen sich im Dashboard anzeigen und beinhalten +/- Werte.
Auch eine Berechnung in zwei Schritten nach diesem Prinzip hat nicht funktioniert:
Temp = Überschuss
Überschuss = Temp - Bezug
Es gab keine Fehlermeldung beim kompilieren, der Wert für “id(ladeleistung)” bleibt immer auf dem initialisierten Grundwert von 0.
Ich habe es direkt über ESPHome auf einem ESP8266 versucht und über eine Automation, hat beides nicht funktioniert.
Hat da jemand eine Idee, wie ich das gerechnet bekomme oder ob so etwas grunsdätzlich nicht funktioniert ?
Sollten weitere Infos meinerseits fehlen, bitte nachfragen…
Hallo m1scha,
danke für die Rückmeldung…
Einen Helfer anlegen, der einen Werte zu sich selbst addiert,habe ich nicht hin bekommen…
Anlegen ja, gab nur keine Werte.
Außerdem soll der Wert abgezogen und nicht addiert werden
Wenn A = A - B unlogisch ist, müsste doch schon der Kompiler meckern und mit Zwischenschritt:
X = A
A = X - B hatte ich es schon probiert
Aber ich werd’s nochmal testen.
Ich denke, du kannst dir die if-Verzweigung sparen, wenn du die states vorher in ein float wandelst und einen Default-Wert setzt, für den Fall, dass der Wert nicht gewandelt werden kann.
Damit solltest du dir auch das Wandeln in der min/max Funktion sparen können.
{% set x = float(states('sensor.POut'), 0) %}
{% set y = float(states('sensor.tasmota_sml_curr_w'), 0) %}
{{ min(max(x - y, -600), 600) | round(0) }}