Nulleinspeisung Akku i

ich bräuchte eine Automation, die die Differenz zwischen PV und den Hausverbrauch berechnet und diesen Wert an mein zusätzliches Akkuladegerät übergibt alle 5 Sekunden mit einer Toleranz von 100 W noch eingespeist werden sollen. Maximale Einspeiseleistung Ladegerät ist 1000W

Das Ganze soll nur laufen, wenn mein PV Akku voll ist.

Ich habe keine Ahnung, wie man das berechnet oder wie man das einfügen muss in einer Automation. Kann mir jemand helfen. Danke.

hier meine selbst gebaute Automation mit drei Stufen, was geladen werden soll. Das ist mir leider zu ungenau.:

alias: BKW Akku laden T2MG
description: ""
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.solarnet_leistung_netzeinspeisung
    above: 400
    id: Akku Laden ein 300w
    for:
      hours: 0
      minutes: 0
      seconds: 5
  - trigger: numeric_state
    entity_id:
      - sensor.solarnet_leistung_netzeinspeisung
    above: 600
    id: Akku Laden ein 500w
    for:
      hours: 0
      minutes: 0
      seconds: 10
  - trigger: numeric_state
    entity_id:
      - sensor.solarnet_leistung_netzeinspeisung
    above: 800
    id: Akku Laden ein 700w
    for:
      hours: 0
      minutes: 0
      seconds: 10
  - trigger: numeric_state
    entity_id:
      - sensor.solarnet_leistung_netzeinspeisung
    id: Akku Laden aus
    below: 50
    for:
      hours: 0
      minutes: 0
      seconds: 10
  - trigger: sun
    event: sunset
    offset: "01:00:00"
    id: Sonnenuntergang
  - trigger: numeric_state
    entity_id:
      - sensor.byd_battery_box_premium_hv_ladezustand
    above: 95
    id: Akku Ladegerät ein
  - trigger: numeric_state
    entity_id:
      - sensor.balkonkraftwerk_akku_einspeisen_power
    for:
      hours: 0
      minutes: 5
      seconds: 0
    below: 20
    id: Akku einspeisen unter 20w
  - trigger: numeric_state
    entity_id:
      - sensor.byd_battery_box_premium_hv_ladezustand
    above: 97
    id: Akku Laden ein
  - trigger: state
    entity_id:
      - sensor.t2mg86c275_t2mg86c275_state
    id: Akku voll geladen
    to: FULL
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Akku Laden ein 700w
        sequence:
          - device_id: f6435aaec693359350f3906e788d5244
            domain: number
            entity_id: 1dc717fd47ffd832da2ff49023908d6f
            type: set_value
            value: 0
            enabled: false
          - device_id: f6435aaec693359350f3906e788d5244
            domain: number
            entity_id: 5aac2c8b40b4d74b27af34958d0c7731
            type: set_value
            value: 100
            enabled: false
          - delay:
              hours: 0
              minutes: 0
              seconds: 20
              milliseconds: 0
            enabled: false
          - device_id: f6435aaec693359350f3906e788d5244
            domain: number
            entity_id: 5aac2c8b40b4d74b27af34958d0c7731
            type: set_value
            value: 900
      - conditions:
          - condition: trigger
            id:
              - Akku Laden ein 500w
        sequence:
          - device_id: f6435aaec693359350f3906e788d5244
            domain: number
            entity_id: 5aac2c8b40b4d74b27af34958d0c7731
            type: set_value
            value: 700
      - conditions:
          - condition: trigger
            id:
              - Akku Laden ein 300w
        sequence:
          - device_id: f6435aaec693359350f3906e788d5244
            domain: number
            entity_id: 5aac2c8b40b4d74b27af34958d0c7731
            type: set_value
            value: 500
      - conditions:
          - condition: trigger
            id:
              - Akku Laden aus
        sequence:
          - device_id: f6435aaec693359350f3906e788d5244
            domain: number
            entity_id: 5aac2c8b40b4d74b27af34958d0c7731
            type: set_value
            value: 0
      - conditions:
          - condition: trigger
            id:
              - Sonnenuntergang
        sequence:
          - action: switch.turn_off
            metadata: {}
            data: {}
            target:
              entity_id:
                - switch.balkonkraftwerk_akku_laden
          - action: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id:
                - switch.balkonkraftwerk_akku_einspeisen_switch_0
      - conditions:
          - condition: trigger
            id:
              - Akku voll geladen
        sequence:
          - action: switch.turn_off
            metadata: {}
            data: {}
            target:
              entity_id:
                - switch.balkonkraftwerk_akku_laden
      - conditions:
          - condition: trigger
            id:
              - Akku Ladegerät ein
        sequence:
          - action: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.balkonkraftwerk_akku_laden
      - conditions:
          - condition: trigger
            id:
              - Akku einspeisen unter 20w
        sequence:
          - action: switch.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: switch.balkonkraftwerk_akku_einspeisen_switch_0
mode: single

Mit diesem Template kannst Du Dir die Differenz von zwei Sensor Werten ermitteln, und auf 1000 begrenzen. Bei negativen Ergebnis, wird eine 0 ausgeben.

{% set a = states('sensor.sensor1') | float(0) %}
{% set b = states('sensor.sensor2') | float(0) %}
{% set diff = a - b %}
{% set max = 1000 %}
{% if diff < 0 %}
0
{% elif diff > max %}
{{ max }}
{% else %}
{{ diff }}
{% endif %}

Diesen Sensor kannst Du dann in Deiner Automation als Auslöser oder Bedingung verwenden.

Gruß Osorkon

Danke schonmal, gibts auch die Möglichkeit den Differenzwert alle 5 Sekunden zu setzen? aktuell wird hier ein fester Wert gesetzt:

          - device_id: f6435aaec693359350f3906e788d5244
            domain: number
            entity_id: 5aac2c8b40b4d74b27af34958d0c7731
            type: set_value
            value: 100
            enabled: false

Das gante ist aus einem in MQTT integrierten t2m Gateway stick, der ein Ladegerät steuert:

Dazu als value: den Sensor Wert, den Du erstellst hast verwenden. Einfach in die Yaml Ansicht wechseln.

value: "{{ states('sensor.xyz') |int(0) }}"

Oder, wenn Du den Template Sensor nicht brauchst. Kannst Du auch direkt das Template von oben verwenden.

value: |
  {% set a = states('sensor.sensor1') | float(0) %}
  {% set b = states('sensor.sensor2') | float(0) %}
  {% set diff = a - b %}
  {% set max = 1000 %}
  {% if diff < 0 %}
  0
  {% elif diff > max %}
  {{ max | int(0) }}
  {% else %}
  {{ diff | int(0) }}
  {% endif %}

Gruß Osorkon

einfach… aber mag er nicht :slight_smile:

actions:

  • choose:
    • conditions:
      • condition: trigger
        id:
        • Akku Überschussladen
          sequence:
      • repeat:
        while:
        - condition: numeric_state
        entity_id: sensor.pv_uberschuss
        above: 0
        - condition: state
        entity_id: sensor.t2mg86c275_t2mg86c275_state
        state:
        - FULL
        sequence:
        - device_id: f6435aaec693359350f3906e788d5244
        domain: number
        entity_id: 5aac2c8b40b4d74b27af34958d0c7731
        value: „{{ states(‚sensor.pv_uberschuss‘) |int(0) }}“
        - delay:
        hours: 0
        minutes: 0
        seconds: 5
        milliseconds: 0
actions:
  - action: number.set_value
    metadata: {}
    data:
      value: |
        {% set a = states('sensor.sensor1') | float(0) %}
        {% set b = states('sensor.sensor2') | float(0) %}
        {% set diff = a - b %}
        {% set max = 1000 %}
        {% if diff < 0 %}
        0
        {% elif diff > max %}
        {{ max | int(0) }}
        {% else %}
        {{ diff | int(0) }}
        {% endif %}
    target:
      entity_id: number.xyz

number.xyz musst Du gegen Deine eigene Number Entität ersetzen.
Sowie sensor.sensor1 und sensor.sensor2 durch Deine 2 Sensor Entitäten.

Gruß Osorkon

Vielen Dank! sieht jetzt so aus und funktioniert so:

action: number.set_value
metadata: {}
data:
  value: |
    {% set a = states('sensor.solarnet_pv_leistung') | float(0) %}
    {% set b = states('sensor.solarnet_leistung_verbrauch') | float(0) %}
    {% set diff = a - b %}
    {% set max = 1000 %}
    {% if diff < 0 %}
    0
    {% elif diff > max %}
    {{ max | int(0) }}
    {% else %}
    {{ diff | int(0) }}
    {% endif %}
target:
  entity_id: number.t2mg86c275_t2mg86c275_set_output

Jetzt bräuchte ich nochmals Hilfe… Hatte einen Denkfehler weil wenn PV Solar - Eigenverbrauch gesetzt wird dann regelt sich die Regelung zu tode (wenn überschuss da, regelung regelt nach und nach 5 sekunden kein überschuss da und alles wieder 0 dann wieder überschuss da) und der Wert der gesetzt werden muss für die Akku Ladung ist nicht diese Differenz sondern die Leistung der Netzeinspeisung, auch Begrenzt auf unter 100=0 und über 1000 auf 1000 begrenzt. Wie kann ich das berechnen?


Kannst Du ein wenig weiter ausholen? Was genau möchtest Du berechnen
Bzw. wo hängt es denn?

Gruß Osorkon

Gerne,

ich bräuchte statt der Differenz nur den Pv Überschuss Wert auf 1000 begrenzt und unter 100 auf 0 gesetzt

{% set a = states('sensor.pv_uberschuss') | int(0) %}
{% set max = 1000 %}
{% if a < 100 %}
0
{% elif a > max %}
{{ max | int(0) }}
{% else %}
{{ a | int(0) }}
{% endif %}

Gruß Osorkon