Wert eines Sonsors in Automation benutzen

Hallo

Ich will meinen Marstek-Speicher immer dann laden wenn mein Überschuss mind 600W beträgt.

Da wo unten in dem Script die 111 als Ladewert steht da will ich eigentlich als Wert den aktuellen Überschuss abzüglich 300 setzen. Den aktuellen Überschuss habe ich auch in einem Helfer stehen.

So was wie das hier hat nicht zum Erfolg geführt.

{{ -(states.sensor.uberschuss.state | float - 300) }}

Sobald dort keine Zahl steht kommt der Fehler

Message malformed: expected float for dictionary value @ data[‘value’]

Wie bekomme ich das hin ?

Vorab schon mal vielen Dank.

Automation YAML Code

alias: Test_Marstek_laden
description: ""
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.uberschuss
    for:
      hours: 0
      minutes: 0
      seconds: 10
    below: -600
conditions: []
actions:
  - device_id: b98cb34d04299bcfb302ff87652fa60e
    domain: number
    entity_id: f4d02618d253c9dd5bab3ba276450f31
    type: set_value
    value: 111
  - device_id: b98cb34d04299bcfb302ff87652fa60e
    domain: select
    entity_id: 767b97d797a4a9e2764692f2ef499b54
    type: select_option
    option: anti_feed
  - device_id: b98cb34d04299bcfb302ff87652fa60e
    domain: select
    entity_id: d86db8343961c2d6041bbc43007c8838
    type: select_option
    option: charge
  - type: turn_on
    device_id: b98cb34d04299bcfb302ff87652fa60e
    entity_id: 8a88f1b0c15b0c0188df2fd10e34fd2f
    domain: switch
mode: single


1 „Gefällt mir“

Welcher Marstek Akku?

Auch wenn es keine Rolle spielt welcher Speicher dahinter steckt - es ist der Venus E V3

Wie bekommt der V3 seine Stromzählerwerte? Kannst du nicht Diese so manipulieren das der Akku erst Einspeisung registriert, wenn bereits ein Überschuss von 600W vorhanden ist? Ich verwende zum Beispiel ein IR-Lesekopf mit einer Tasmota-Version die dem Akku einen Ecotracker vorgaukelt. Dort habe ich dann einen Offset eingegeben um zu vermeiden das durch Pendeln, Strom aus dem Netz bezogen wird. Das Ganze ist Zeit gesteuert, so das nach Sonnenuntergang kein Akkustrom im Netz verschwindet. Dadurch wird die Regelung HA unabhängig. Auch die Regelung der PV-Anlage läuft komplett HA unabhängig.

Nach dem Motto.: Viele Köche verderben den Brei.

Was ich eben noch gefunden habe. Da ich im Winter kaum Überschuss habe, Habe ich eine Art Erhaltungsladung gebastelt. Diese aktiviert “anti-feed” wenn bestimmte Parameter erfüllt sind und schaltet, mit einer zweiten Automation “manual” wenn die Parameter nicht mehr erfüllt sind.

alias: Marstek Venus E HH, Winterbetrieb >>LADEN<<
description: ""
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.tasmota_mb310_power_curr
    for:
      hours: 0
      minutes: 0
      seconds: 20
    below: -90
conditions:
  - condition: numeric_state
    entity_id: sensor.hm_600_300_aktuelle_leistung
    above: 220
  - condition: template
    value_template: |2
       {% set heute = (now().month, now().day) %}
       {{ heute >= (10, 15) or heute <= (3, 3) }}
actions:
  - device_id: 73e8179f51021b53f629922f0a018664
    domain: select
    entity_id: fb2948fc6ff5cc4edcf4ca98910308f7
    type: select_option
    option: anti-feed
mode: single

alias: Marstek Venus E HH, Winterbetrieb >>STANDBY<<
description: ""
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.marstek_venus_e_hh_marstek_ac_power
    for:
      hours: 0
      minutes: 0
      seconds: 10
    above: 1
conditions:
  - condition: template
    value_template: |2
       {% set heute = (now().month, now().day) %}
       {{ heute >= (10, 15) or heute <= (3, 2) }}
  - type: is_value
    condition: device
    device_id: 73e8179f51021b53f629922f0a018664
    entity_id: 6c05616394c4d1e7d331a53d467a5bc2
    domain: sensor
    below: 81
actions:
  - device_id: 73e8179f51021b53f629922f0a018664
    domain: select
    entity_id: fb2948fc6ff5cc4edcf4ca98910308f7
    type: select_option
    option: manual
  - repeat:
      until:
        - condition: numeric_state
          entity_id: sensor.marstek_venus_e_hh_marstek_ac_power
          below: 1
      sequence: []
mode: single

Die hatte ich noch darumliegen. :grin: Verwende sie aber nicht mehr. Ich schalte meine Akku’s im Winter komplett aus.

Bei mir verhält sich das etwas anders.

Gäbe es nur die eine Venus könnte ich die im KI Modus an den Shelly gekoppelt betreiben.

ABER

Es sind 3 Venus E und ich habe eine “große” Anlage mit Akku von ENPAL.

Ich kann die MARSTEK’s nicht auf KI oder Automatik oder auf was auch immer schalten - das wird nicht klappen.

Ich habe am Übergabepunkt einen Shelly PRO 3EM von dem ich die Werte beziehe.

Die Venus Akkus kann ich über Modbus over TCPIP steuern.

Einen “gefakten” Sensor in Form eines Helfers ist ja kein Problem.

Das Problem liegt darin in der Automation einen Variable oder Sensor verwenden zu können in dem der Wert steht den ich aus dem Helfer beziehe oder den ich aus dem Wert des Shellys nach meinen Wünschen generiere.

Habe in einem anderen Post von 2023 etwas gesehen mit einer HACS-Erweiterung VAR um Variablen anzulegen - da stelle ich mir die Frage ob das HA zwischenzeitlich nicht selbst kann.

Aber auch dann stehe ich vor dem Problem “Wie benutze ich diese in der AUtomation so dass diese statt einer Zahl akzeptiert wird”

Du kannst bei float einen Ersatzwert angeben, für den Fall, dass die Funktion keine Zahl erkennt. Hier mit dem Wert 0:

{{ -(states.sensor.uberschuss.state | float(0) - 300) }}

siehe Convert to float: float

Danke, aber das ist nicht das Problem

Ein Wert wird ja erkannt, aber in der Automation die du weiter oben siehst wird ein solcher Ausdruck - egal ob mit float oder float(0) - nicht akzeptiert. Beim Versuch das zu speichern kommt die Fehlermeldung die ich auch weiter oben angegeben habe.

Ganz banal gefragt: hast du es so versucht?

value: "{{ -(states.sensor.uberschuss.state | float ) - 300 }}"

Weil dann diese Fehlermeldung kommt wenn ich es abspeichern will

Das ist eine Frage…

Probier mal in der Yaml Ansicht das hier einzufügen , und dann Puffer statt 11 zu verwenden

variables:
  Puffer: "{{ (states.sensor.uberschuss.state | float - 300) }}"

Und verwende nicht die Geräte als Ziel sonder nutze die Entitäten, dann sieht man erstens was du ansprichst und kann zweitens eher mal die Automation selber testen.

ja

habe ich natürlich

habe ich auch schon gemacht - selbes ergebnis

{{ (states('sensor.uberschuss') | float(0) * -1) - 300 }}

Werfe ich einmal in die Runde. Geht das?

Schau mal ganz oben als ich das Thema eröffnet habe - genau so habe ich es ja versucht.

Wenn ich in der Automation statt “Gerät” “Zahl” auswähle komme ich nicht weiter weil ich nicht weiß wie ich das Ziel zuweise. Er bemängelt das auch aber ich kann das wo ZIEL steht nichts eingeben.

{{ -(states.sensor.uberschuss.state | float - 300) }}

ist nicht ganz das Gleiche wie

{{ (states('sensor.uberschuss') | float(0) * -1) - 300 }}

Versuche einfach einmal im Template-Editor.

Hast Du in den Entwicklerwerkzeugen geschaut unter Aktionen, ob diese Action so überhaupt funktioniert?

Ich mag diese Geräte-Aktionen mittlerweile nicht mehr so weil nicht immer stabil - wie heißt denn die Entity, die hier geschrieben werden soll?

image

Hier wird ein Input_number Helfer als Ziel erwartet.
Ggf. kannst Du hier auch die Entity aus voriger Frage einsetzen.
Probiere immer zuerst in den Entwicklerwerkzeugen und wenn Du es dort richtig herausgefunden hast, kopierst Du den yaml Code in die Automatisation.

Ja - aber ich kann das Ziel nirgendwo auswähln oder eintragen

Ja im Template Editor geht mein Ausdruck und liefert den gewünschten Wert.

Der Name der entität ist number.marstek_venus_modbus_ladeleistung_einstellen

geht nicht - selbe Fehler wie bei allem anderen das ich versucht habe.

Wie kann ich denn der Entität, die ich ja kenne, gezielt in einer Aktion der Automation einen Wert zuweisen ?

Nach welcher Aktion soll ich denn dort suchen?

Verstehe

Woher stammt Deine Gewißheit, daß man diesen Wert über HA auch wirklich setzen kann?
Gibt es ein Beispiel?

PS: Von Modbus habe ich keine Ahnung aber einige schwören darauf.

Weil genau das die entität ist die auch oben in meinem Beispiel gestzt wird mit dem Wert 111.

Dort wird aber anscheinend statt des Namens die ID verwendet.

Ist eine Integration speziell für den Speicher