Benachrichtigungen
Alles löschen

Sensorwert abhängig vom Vorzeichen aufsplitten

10 Beiträge
2 Benutzer
0 Reactions
67 Ansichten
0
Themenstarter

Halli Hallo,

ich bin noch absoluter Neuling im Home Assistant, habe allerdings schon viel gelernt in der kurzen Zeit… Leider schaffe ich es gerade nicht eine Hürde zu überwinden. Ich möchte mein Engergiedashboard befüllen, hierfür benötige ich von meiner PV VictronAnlage Pylontech-Speichern in kWh den geladene und abgeben Power, ich kann jedoch nur die W auslesen welche je nach Be- und Entladen positiv oder negativ ist, somit muss ich einen Step zuvor einlegen über ein Template getrennt die positiven Werte über zwei Entitäten auszugeben.

Ich habe in diesem Thema Sensorwert abhängig vom Vorzeichen aufsplitten - SmartHome for Dummies meine notwenigen Daten gefüllt. Im Entwicklerwerkzeug Template gibt er mir auch tatsächlich die aktuellen Werte getrennt aus, jedoch kann ich die neuen Entitäten „Battery out“ noch „Battey in“ finden um diese dann jeweils per Helfer auf kwh umzurechnen. Anbei der Screenshot vom Entwicklerwerkzeuge und von meiner config.yaml. Ich habe keine Plan ob ich noch andere Schritte zuvor machen muss damit die neuen Entitäten abrufbar sind. Eine Template.yaml gibt es bei mir nicht, Selbstreden habe ich HomeAssistant immer neu gestartet. Ich freue mich über euere Hilfe. Vielen Dank :-.)

Config.yaml

Loads default set of integrations. Do not remove.

default_config:

Load frontend themes from the themes folder

frontend:
themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
frontend:
themes: !include_dir_merge_named themes

battery_notes:
enable_autodiscovery: true
default_battery_low_threshold: 10
battery_increase_threshold: 25
hide_battery: false
round_battery: true

template:

  • sensor:
  • name: „Battery Out“
    state: |
    {% set gridin = (states(‚sensor.victron_system_battery_power‘) | int(0)) %}
    {% if gridin < 0 %}
    {{ gridin | abs }}
    {% else %}
    0
    {% endif %}
    unit_of_measurement: ‚W‘
    state_class: measurement
    device_class: power
    unique_id: 6b9dda0f-4ed9-4c77-97a8-ecd343f8c9ec
  • name: „Battery In“
    state: |
    {% set gridin = (states(‚sensor.victron_system_battery_power‘) | int(0)) %}
    {% if gridin > 0 %}
    {{ gridin }}
    {% else %}
    0
    {% endif %}
    unit_of_measurement: ‚W‘
    state_class: measurement
    device_class: power
    unique_id: fa70a301-30de-41d2-a278-3d061051f443
Olli 04/05/2025 12:09 pm

@oschmitzi Den obligatorischen Neustart von HA hast du ausgeführt? Werden Fehler geworfen beim Überprüfen der Config?

 

image
7 Antworten
0
Themenstarter

 

IMG 2940

Hey Olli,

Olli hier 🙂

 

vielen Dank für die schnelle Antwort! Ja mehrfach neu gestartet, Prüfung gerade gemacht! Habe die Template in die Config.yaml geschrieben, ist das korrekt, bei mir gibt keine Template.yaml! 

f

gruss 

oschmitzi Themenstarter 04/05/2025 6:09 pm

Ein Update! Ich hatte im

editor in der comfig.yaml ein Ausrufezeichen! Habe die entsprechenden Zeilen gelöscht! Nun ein grüner Haken! Alles neu gestartet, leider hat sich die Anzahl Entitäten oder helfer nicht um zwei erhöht! Nachdem es im Entwickler Tool Template die Werte plus minus Watt zugeordnet werden muss aus meiner leihenhaften Sicht noch ein Flaschenhals sein. Die Information als Sensor Entität ein Homeassistant zur Verfügung zu stellen!

IMG 2948

 

0

Sorry, ich habe vorhin nicht auf alle Details deines Screenshots geachtet. Da sind Einrückungen nicht richtig und auch Fehler mit den Anführungsstrichen. Insbesondere die korrekten Einrückungen sind bei YAML-Code super wichtig, da sich hieraus die eigentliche Struktur ableitet.

Versuche es mal mit folgendem Code in deiner configuration.yaml:

template:
  - sensor:
    - name: 'Battery Out'
      state: |
      {% set gridin = (states(‚sensor.victron_system_battery_power‘) | int(0)) %}
      {% if gridin < 0 %}
      {{ gridin | abs }}
      {% else %}
      0
      {% endif %}
      unit_of_measurement: 'W'
      state_class: measurement
      device_class: power
      unique_id: 6b9dda0f-4ed9-4c77-97a8-ecd343f8c9ec
    - name: 'Battery In'
      state: |
      {% set gridin = (states(‚sensor.victron_system_battery_power‘) | int(0)) %}
      {% if gridin > 0 %}
      {{ gridin }}
      {% else %}
      0
      {% endif %}
      unit_of_measurement: 'W'
      state_class: measurement
      device_class: power
      unique_id: fa70a301-30de-41d2-a278-3d061051f443

Nach dem Einfügen natürlich HA wieder neu starten.

0
Themenstarter

Vielen Dank, habe es versucht, habe deine Zeilen komplett ab template ersetzt. leider kommt eine Fehlermeldung.....

Bildschirmfoto 2025 05 04 um 19.37.33
0
Themenstarter

Sorry für die Teilangaben Olli....

Hier meine komplette Config.yaml mit deinen eingefügten Zeilen 

.......................

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

battery_notes:
enable_autodiscovery: true
default_battery_low_threshold: 10
battery_increase_threshold: 25
hide_battery: false
round_battery: true

template:
- sensor:
- name: 'Battery Out'
state: |
{% set gridin = (states(‚sensor.victron_system_battery_power‘) | int(0)) %}
{% if gridin < 0 %}
{{ gridin | abs }}
{% else %}
0
{% endif %}
unit_of_measurement: 'W'
state_class: measurement
device_class: power
unique_id: 6b9dda0f-4ed9-4c77-97a8-ecd343f8c9ec
- name: 'Battery In'
state: |
{% set gridin = (states(‚sensor.victron_system_battery_power‘) | int(0)) %}
{% if gridin > 0 %}
{{ gridin }}
{% else %}
0
{% endif %}
unit_of_measurement: 'W'
state_class: measurement
device_class: power
unique_id: fa70a301-30de-41d2-a278-3d061051f443

 

.......................

 

und der dazugehörigen Fehlermeldung:

 

missed comma between flow collection entries (25:8)

22 | - sensor:
23 | - name: 'Battery Out'
24 | state: |
25 | {% set gridin = (states(‚sensor. ...
-------------^
26 | {% if gridin < 0 %}
27 | {{ gridin | abs }}

 

 

Ein Neustart ist so nicht möglich.

 

Lieben Dank... 

 

Gruß Olli 🙂

Olli 04/05/2025 9:09 pm

@oschmitzi Hier verstecken sich ja noch mehr falsche Anführungszeichen 

(states(‚sensor.victron_system_battery_power‘) 

Das müssen vor und nach dem Sensor jeweils ' sein.

0
Themenstarter

Hallo Olli,

ich bekomme schon ein schlechtes Gewissen nochmals auf dieses Thema aufspringen zu müssen. Ich habe Deinen Template-Code mit den Anführungszeichen ausgetauscht. Nun gibt mir auch das Entwicklerwerkzeug "Template" wieder Werte aus. 

template Olli Angepasst

Nun kopiere ich diese Zeilen aus dem Entwicklerwerkzeug in meine Config.yaml .....

 

Bildschirmfoto 2025 05 05 um 06.35.58

... in Zeichen

.............

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

battery_notes:
enable_autodiscovery: true
default_battery_low_threshold: 10
battery_increase_threshold: 25
hide_battery: false
round_battery: true

template:
- sensor:
- name: 'Battery Out'
state: |
{% set gridin = (states('sensor.victron_system_battery_power') | int(0)) %}
{% if gridin < 0 %}
{{ gridin | abs }}
{% else %}
0
{% endif %}
unit_of_measurement: 'W'
state_class: measurement
device_class: power
unique_id: 6b9dda0f-4ed9-4c77-97a8-ecd343f8c9ec
- name: 'Battery In'
state: |
{% set gridin = (states('sensor.victron_system_battery_power') | int(0)) %}
{% if gridin > 0 %}
{{ gridin }}
{% else %}
0
{% endif %}
unit_of_measurement: 'W'
state_class: measurement
device_class: power
unique_id: fa70a301-30de-41d2-a278-3d061051f443

 

------

Wirft mir die Config.yaml weiterhin folgende Fehler aus mit denen ich recht wenig anfangen kann....

 

missed comma between flow collection entries (25:8)

22 | - sensor:
23 | - name: 'Battery Out'
24 | state: |
25 | {% set gridin = (states('sensor. ...
-------------^
26 | {% if gridin < 0 %}
27 | {{ gridin | abs }}

 

.....

 

Meine erstige Template, bzw. Config.yaml war von Beginn an mit den korrekten Anführungszeichen..............

# Loads default set of integrations. Do not remove.

default_config:

 

# Load frontend themes from the themes folder

frontend:

  themes: !include_dir_merge_named themes

 

automation: !include automations.yaml

script: !include scripts.yaml

scene: !include scenes.yaml

 

 

battery_notes:

  enable_autodiscovery: true

  default_battery_low_threshold: 10

  battery_increase_threshold: 25

  hide_battery: false

  round_battery: true

 

 

template:

 

  - sensor:

  - name: "Battery Out"

    state: |

      {% set gridin = (states('sensor.victron_system_battery_power') | int(0)) %}

      {% if gridin < 0 %}

        {{ gridin | abs }}

      {% else %}

        0

      {% endif %}

    unit_of_measurement: 'W'

    state_class: measurement

    device_class: power

    unique_id: 6b9dda0f-4ed9-4c77-97a8-ecd343f8c9ec

  - name: "Battery In"

    state: |

      {% set gridin = (states('sensor.victron_system_battery_power') | int(0)) %}

      {% if gridin > 0 %}

        {{ gridin }}

      {% else %}

        0

      {% endif %}

    unit_of_measurement: 'W'

    state_class: measurement

    device_class: power

    unique_id: fa70a301-30de-41d2-a278-3d061051f443

 

.......

 

Dieses wie mit deiner angepassten Template gibt mir im Entwicklerwerkzeug die jeweils korrekten Werte aus, nur kann ich weder mit dieser noch mit deiner Template (weil Fehler im Config.yaml) die zwei Entitäten  "Battery In" und "Battery Out" finden.

Ist meine Annahme richtig das diese Art der Templaterstellung in der Conig.yaml grundlegend ausreichend ist, oder muss ich irgendwelche Hacs, AddOns oder Integrationen installieren und oder in weiteren *.yaml Eintragungen vornehmen um diese neuen Entitäten auffindbar zu machen.

Danke nochmals an dieser Stelle, wenn dieses Problem gelöst gebe ich sehr gerne ein "Bier" aus und nutze deine Amazon-Link`s 😉

Viele Grüße 

 

Olli

0
Themenstarter

Es hat mir keine Ruhe gelassen. Ich habe es nun geschafft die beiden Entitäten "Battery In" und Battery Out" in meiner Entitätsliste zu finden. Du hattest Recht Olli, es lag an den Einrückungen wo man höllisch aufpassen muss.

So sieht exakt meine Config.yaml nun aus....

 

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

battery_notes:
enable_autodiscovery: true
default_battery_low_threshold: 10
battery_increase_threshold: 25
hide_battery: false
round_battery: true

template:

- sensor:
- name: Battery Out
unique_id: "6b9dda0f-4ed9-4c77-97a8-ecd343f8c9ec"
state: |
{% set gridin = (states('sensor.victron_system_battery_power') | int(0)) %}
{% if gridin < 0 %}
{{ gridin | abs }}
{% else %}
0
{% endif %}
unit_of_measurement: 'W'
state_class: measurement
device_class: power
- name: Battery In
unique_id: "fa70a301-30de-41d2-a278-3d061051f443"
state: |
{% set gridin = (states('sensor.victron_system_battery_power') | int(0)) %}
{% if gridin > 0 %}
{{ gridin }}
{% else %}
0
{% endif %}
unit_of_measurement: 'W'
state_class: measurement
device_class: power

 

.......................

 

Nun taucht eine neue Herausforderung auf. Wenn ich auf die jeweiligen neuen Templatesensoren klicke zeigt er mir nicht die jeweiligen aufgetrennten W positiv und negativ an, sondern wenn sich der Wert ändert aber nicht den Zahlenwert. Somit kann ich dies nicht mit einem Helfer in die gewünschten kWh umrechnen. Eine Idee Olli was das Problem sein könnte 😉

 

Bildschirmfoto 2025 05 05 um 11.44.02
Bildschirmfoto 2025 05 05 um 11.44.19
0

Wir haben es hier aber auch mit Kommas und Einrückungen 😉

Die If-Abfrage für den eigentlichen Wert der neuen Sensoren sind noch nicht richtig eingerückt. So wie hier, müsste es dann aber wirklich funktionieren:

template:
  - sensor:
    - name: 'Battery Out'
      state: |
        {% set gridin = (states('sensor.victron_system_battery_power') | int(0)) %}
        {% if gridin < 0 %}
        {{ gridin | abs }}
        {% else %}
        0
        {% endif %}
      unit_of_measurement: 'W'
      state_class: measurement
      device_class: power
      unique_id: 6b9dda0f-4ed9-4c77-97a8-ecd343f8c9ec
    - name: 'Battery In'
      state: |
        {% set gridin = (states('sensor.victron_system_battery_power') | int(0)) %}
        {% if gridin > 0 %}
        {{ gridin }}
        {% else %}
        0
        {% endif %}
      unit_of_measurement: 'W'
      state_class: measurement
      device_class: power
      unique_id: fa70a301-30de-41d2-a278-3d061051f443

Am besten fügst du in Foren solchen Code als Code formatiert ein, damit die Formatierung (und insbesondere Einrückungen) nicht verloren geht. Hier im Forum wäre das das "<>"-Zeichen:

image

Ohne die korrekten Einrückungen, ist der Code deutlich schwerer zu lesen/verstehen und es passieren leichter solche Flüchtigkeitsfehler wir in unserem Fall hier 😉

Ich hoffe nun klappt es aber wirklich! 😉

Produktempfehlungen