YAML mal wieder. vermutlich ganz dumme Frage

Hallo, zusammen,

Ich habe einen Template-Sensor erstellt, der mir nur die ans Netz abgegebene Leistung, die von meiner Balkonsolaranlage kommt.

Nur leider erhalte ich dadurch negative Werte, die ich so nicht benutzen kann.

Mir ist klar, daß ich irgendwo entweder ein ABS oder ein *-1 einfügen muss. Nur erschließt sich mir nicht, WO genau das hin muss.

Hier der Code des Sensors:

{% set power = states('sensor.channel_abc_power') | float(0) %}
{{ iif(power < 0, power, 0) }}

Kann mir jemand sagen, wo genau das ABS oder *-1 hin gehört?

{% set power = states('sensor.channel_abc_power') | float(0) %}
{{ iif(power < 0, power, 0) | round(1)  * -1 }}

oder

round(2)

oder so, wieviele Nachkommastellen du auch immer haben willst.

Vielen Dank.

In der Zeile mit dem iif hätte ich es am Wenigsten vermutet.
Ich hab das jetzt mal so eingetragen. Aber ob es funktioniert, kann ich erst morgen sagen, wenn wieder Strom von der Sonne kommt.

Ich nutze das für den gleichen Anwendungszweck genau so, wird also funktionieren :slight_smile:

Bin zu doof dafür! Bei mir ist immer -0,0W obwohl eben reichlich anliegt…

Ich hoffe, du hast nicht wirklich das r bei power vergessen?

Natürlich nicht! :woozy_face: Es ging darum zu “beweisen”, das es einen Wert gibt. Die Erzeugung ist also 1575, der Sensor zeigt aber -0,0 W. :thinking:

2025-02-08 10-21-16

Wie peinlich: Ich habe Abgabe und Erzeugung verwechselt.

Bei dir ist es eben umgedreht, was du haben willst. Ich will aus einem negative Wert einen Positiven machen, darum muss ich ja schauen, ob < 0 ist. Und ein Drittel so viele Ausrufezeichen erfüllen auch ihren Zweck, sonst fühle ich mich so angeschrien :wink:

Gerade nachgeschaut.

Bei mir funktioniert es. Danke noch mal.

Mein Fehler, Du misst die Abgabe und ich die Erzeugung :grimacing:

Ich habe es noch ein wenig verfeinert, hoffe ich. Mir gehen die “unavailable” Meldungen auf den Kecks, wenn z. B. HA hochfährt. Hoffentlich damit im Keim erstickt. (Nachtrag: Leider nicht, any ideas?)

{% set is_avalable = states('sensor.sunny_boy_grid_power') not in ['unknown', 'unavailable'] %}

{% if is_avalable %}
  {% set sensor_data = states('sensor.sunny_boy_grid_power') | float(0) %}
  {{ iif( sensor_data > 0, sensor_data, 0 )  }}
{% else %}
  0
{% endif %} 

Cool, wieder etwas gelernt. Werde alle meine Sensoren in der Template.yaml entsprechend “umbauen” bzw. löschen.

1 „Gefällt mir“

Auch wenn du schon eine Lösung hast - das hier sollte klappen und ist in meinen Augen der einfachste Weg

{% set power = states('sensor.channel_abc_power') | float(0) | abs %}

Gruß, Lars