Energie-Dashboard (Berechnungsgrundlage für Wärmepumpe - korrigiert Kaskadierung der Stromzähler)

sleepymaxx

New member
System-Beschreibung siehe unten.

Mein Problem ist folgendes:

Bei der Installation meiner Photovoltaik wurde ein neues System zum Stromanschluss angewendet: LEW (Energieversorger in Bayrisch Schwaben) Fährt durch den Stromverbrauchszähler Wärmepumpe(TAG/Nacht) in den Stromverbrauchszähler (Lichtstrom Gebäude) und dann erst durch die Messstation der Photovoltaik.
(Vorteil dabei: Selbst verbrachter Strom wird vor der Zählung Lichstrom abgezogen - dadurch deutlich niedrigere Verbrauchszahlen).
Nachteil dabei: aus dem Netz verbrauchter Strom wird doppelt gezählt (Wärmepupenstrom[TAG/Nacht] plus Lichtstrom) - jedenfalls in Home Assistant - (nicht vom Stromanbieter - der Saldiert die beiden!)

Daher komme ich in Home Assistant immer auf Falsche/nicht korrekte Angaben in meinem Energie - Dashboard.

Ich versuche jetzt schon seit monaten diesen Fehler irgendwie auszugleichen - bekomme es aber nicht hin.
Meine bisherigen Lösungsansäze scheitern immer wieder an fehlendem wissen oder probleme mit YAML...
Mein gedachter lösungsansatz dabei ist folgender:

1. Schritt: Tägliche aufzeichnung des Zählerstandes Lichtstrom zu Beginn Nachtstrom: 21:59:59 in eine Variable (A) oder einen Sensorwert (A).
2. Schritt: Tägliche aufzeichnung des Zählerstandes Lichtstrom zu Beginn Tagstrom: 5:59:59 in eine 2.Variable (B) oder einen zweiten Sensorwert (B).
3. Schritt: Berechnung des Echten Stromverbrauches der Wärmepumpe (Nacht) durch ein Skript welches bei veränderung des Zählerstandes Lichtstrom zwischen Uhrzeit 22:00:00 und 6:00:00 einen neuen Sensorwert schreibt nach der Formel/Schemata
[(Sensor.WärmepumpeNachtstrom) - (Sensor Lichststrom - Variable(oderSenorwert)A))]
4. Schritt: Berechnung des Echten Stromverbrauches der Wärmepumpe (Tag) durch ein Skript welches bei veränderung des Zählerstandes Lichtstrom zwischen Uhrzeit 6:00:00 und 22:00:00 einen neuen Sensorwert schreibt nach der Formel/Schemata
[(Sensor.WärmepumpeTagstrom) - (Sensor Lichststrom - Variable(oderSenorwert)B))]
6. Last but not least: Übernahme der korrekten Berechneten Sensorwerte in das Energie - Dashboard
Wärmepumpe Verbrauch Nacht / Tag

Für sämtliche Lösungsansäzte bin ich sehr dankbar!
Sorry für den ewigen Text aber ich versuche immer so genau wie möglich darzustellen worum es mir geht.
Mein versuch das problem mit NodeRed zu lösen scheitert leider auch an fehlendem verständnis.
Falls jemand etwas ähnliches schon gesehen/gelesen hat bitte auch mit links..

SYSTEM:
Home Assistant OS 9.4 Supervisor 2022.11.2 in Synology D216+II (Auf virtuellem PC)
Integration der Wärmepumpe Vissmann Vitocal 200S über ViCare (BJ 2011)
Integration der Photovoltaik FoxEss (KOPP BRANDING) mit HACS darin FOXessCloud (BJ 2022) [soll noch verändert werden auf direkte kommunikation per MODBus]
Integration der Stromzähler I (Lichtstrom Gebäude) und Stromzähler II (Wärmepumpe TAG/Nacht) über IR-Optoköpfe USB an edl21
Integration aller "grossverbraucher" (Waschmaschine/Trockner/Spülmaschine/Herd/Bügeleisen/Dampfgarer/Kühlschrank/Gefrierschrank..) über Miele@home
Integration von "kleinkrempel" (Drucker/Fritzbox/Repeater/Smartphones [6Personen]/Smart-TV´s/Mediaserver/Netzwerkradios...)
Zugriff unterwegs auf HA über VPN (wg. DSlite)
Zugriff unterwegs auf Synlogy über Quickconnect (wg. DSlite)
[TO Do´s: Integration Wasserverbrauchszähler/Zisternenverbrauchszähler(Waschmaschine/Garten/Spülmaschine/Toiletten)
Entität für die Großverbraucher zur Steuerung der Einschaltzeit/Start Verbrauch nach Leistung der PV
Steuerung der Wärmepumpe bei überproduktion Strom - Vorheizen des Pufferspeichers Warmwasser/Gebäude auf >55°C]
[Bei fragen zur durchführung der oben angegebenen Integrationen bitte gerne per PM - dort kann ich die Links zu den artikeln angeben von welchen ich das abgeschrieben habe!]
 
Zuletzt bearbeitet:
Variablen gibt es in HA nicht, dafür kann man die Helfer verwenden, in deinem Fall den Nummernhelfer. Da hinein schreibst du per Automatisierung (Zeittrigger) den gewünschten Wert.
Und als Sensor für berechnete Werte kannst du einen Template Sensor verwenden.
 
Vielen dank... ich setze mich mal Donnerstags davor und berichte... (Mittwochs ist immer so´n 12 std. Tag in der Arbeit und mit Family undso...
 
vielen Dank na u5zzug:

Nach deiner anregung habe ich nun 2 Helfer erstellt:
input_number.lichtstrom_nacht
input_number.lichtstrom_tag,
diese konfiguriert (max/min) und kann sie nun auch per Automation in den Skripten zu den angegebenen zeiten Schreiben lassen.

ScriptI:
YAML:
alias: Nullwert_Nachtstrom
description: ""
trigger:
  - platform: time
    at: "21:59:59"
condition: []
action:
  - service: input_number.set_value
    data_template:
      entity_id: input_number.lichtstrom_nacht
      value: "{{ states('sensor.warmestrom_positive_active_energy_total') }}"
mode: single
YAML:
alias: Nullwert_Tagstrom
description: ""
trigger:
  - platform: time
    at: "05:59:59"
condition: []
action:
  - service: input_number.set_value
    data_template:
      entity_id: input_number.lichtstrom_tag
      value: "{{ states('sensor.warmestrom_positive_active_energy_total') }}"
mode: single
 
nachschlag:

zwei weitere Scripts die jeweils nur Tags/Nachts laufen, so dass die endausgabe der jeweilligen Stromwerte sich am ende auch sinnvoll addieren und nicht ein teil des Tagstroms in den Nachtstrom gerechnet wird und umgekehrt..
YAML:
alias: läuftnachts
description: ""
trigger:
  - platform: time
    at: "22:00:00"
  - platform: state
    entity_id:
      - sensor.warmestrom_positive_active_energy_total
condition:
  - condition: time
    before: "06:00:00"
action:
  - service: script.Nachtstrom
mode: single
YAML:
alias: läufttags
description: ""
trigger:
  - platform: time
    at: "06:00:00"
  - platform: state
    entity_id:
      - sensor.warmestrom_positive_active_energy_total
condition:
  - condition: time
    before: "22:00:00"
action:
  - service: script.Tagstrom
mode: single
 
Zuletzt bearbeitet:
soo nun meine weiteren Fragen:

Wie bekome ich jetzt noch die beiden scripte hin, welche die berechnungen ausführen:

script:Tagstrom
WärmepumpenstromTAG-(Lichtstrom aktuell - LichtstromaufzeichnungTAG)

script:Nachtstrom
WärmepumpenstromNACHT-(Lichstrom aktuell - LichtstomaufzeichnungNacht)
immer wenn ich versuche diese in dem Scripteditor ohne visuellen editor zu basteln bekomme ich eine fehlermeldung bzw. bin garnicht in der lage das script zu speichern..

YAML:
alias: Nachtstrom
sequence:
  - service: input_number.set_value
    data:
    - value: '{{ states('sensor.lichtstrom_positive_active_energy_in_tariff_t2') | float - (states('sensor.warmestrom_positive_active_energy_total') | float - states('input_number.lichtstrom_nacht') | float) }}'
    target:
      entity_id: input_number.test
      unit_of_measurement: "Wh"
mode: single

Message malformed: Entity is neither a valid entity ID nor a valid UUID for dictionary value @ data['sequence'][0]['repeat']['until'][0]['entity_id']
 
Zuletzt bearbeitet:
nachschlag die II.

mir ist inzwischen klar dass es an der - value Zeile liegen muss (wenn ich diese in yaml mit # versehe bekomme ich einen blauen yaml strich (und der code wird speicherbar.. ) nur wo liegt mein fehler - oder wäre eure empfehlung eher dass ich ein template- sensor schreibe - wie würde das funktioniern?

Dankeschön soweit!
 
Lösung:
Helfer erstellen:
1. 1x Tageszeitsensor Beginn der Zeit Nachtstrom / Tagstrom (zum trennen der gezählten Einheiten) (binary_sensor.tag_nacht)
2. 2x Input Nummer (Aufzeichnungswert TAG / NACHT [zu beginn des jeweilligen Zeitraumes])(input_number.lichtstrom_nacht/input_number.lichtstrom_tag)
3. 2x Input Nummer (Aufzeichnungswert TAG / Nacht beginn - Aufzeichnungwert ende - Aufzeichnungswert beginn des neuen zeitraumes-[beginn des jeweillig folgenden Wertes](input_number.nachtwert_beginn/input_number.tagwert_beginn)
4. 2x Input Nummer (Wert der Spreizung TAG / NACHT [Beginn - Ende])(input_number.spreizungtag/input_number.spreizungnacht)
5. 2x Input Nummer Spreizung TAG gesamt/ Nacht gesamt (Wert der Spreizung heute + wert der Spreizung bisher TAG / Nacht)(input_number.spreizungtag_gesamt/input_number.spreizungnacht_gesamt)1673650706232.png
 
Füllen der Input - werte mit den Werten und verlaufswerten


Automatisierungen Erstellen: Spreizung NACHT

YAML:
alias: Wert der Spreizung NACHT
description: ""
trigger:
  - platform: time
    at: "21:59:59"
condition: []
action:
  - service: input_number.set_value
    data:
      entity_id: input_number.lichtstrom_nacht
      value: "{{ states('sensor.warmestrom_positive_active_energy_total') }}"
  - service: input_number.set_value
    data:
      entity_id: input_number.spreizungtag
      value: >-
        {{ states('sensor.warmestrom_positive_active_energy_total') | float -
        states('input_number.lichtstrom_tag') | float }}
  - service: input_number.set_value
    data:
      entity_id: input_number.spreizungtag_gesamt
      value: >-
        {{ states('input_number.spreizungtag_gesamt') | float +
        states('input_number.spreizungtag') | float }}
  - service: input_number.set_value
    data:
      entity_id: input_number.nachtwert_beginn
      value: >-
        {{ states('sensor.warmestrom_positive_active_energy_total') | float -
        states('input_number.spreizungtag_gesamt') | float }}
mode: single


/Spreizung TAG

YAML:
alias: Wert der Spreizung TAG
description: ""
trigger:
  - platform: time
    at: "05:59:59"
condition: []
action:
  - service: input_number.set_value
    data_template:
      entity_id: input_number.lichtstrom_tag
      value: "{{ states('sensor.warmestrom_positive_active_energy_total') }}"
  - service: input_number.set_value
    data_template:
      entity_id: input_number.spreizungnacht
      value: >-
        {{ states('sensor.warmestrom_positive_active_energy_total') | float -
        states('input_number.lichtstrom_nacht') | float }}
  - service: input_number.set_value
    data:
      entity_id: input_number.spreizungnacht_gesamt
      value: >-
        {{ states('input_number.spreizungnacht_gesamt') | float +
        states('input_number.spreizungnacht') | float }}
  - service: input_number.set_value
    data:
      entity_id: input_number.tagwert_beginn
      value: >-
        {{ states('sensor.warmestrom_positive_active_energy_total') | float -
        states('input_number.spreizungnacht_gesamt') | float }}
mode: single
 
Ergänzen der config.yaml

Erstellen des Templates für die endgültige berechnung der Sensorwerte
Die werte die am schluss der jweilligen berechnung zugezählt werden (+3400000/+1400000) sind nur zum ausgleich der berechung eingefügt (so dass sich bei MIR SELBST POSITVE Werte ausgegeben werden [nur diese sind darstellungsfähig])

YAML:
template:
  - sensor:

      - name: "waermepumpe_nachtstrom_real"
        unique_id: "waerme_nachtstrom_real"
        device_class: "energy"
        unit_of_measurement: "Wh"
        state: >
            {% if is_state('binary_sensor.tag_nacht', 'on') %}
            {{ (states('sensor.lichtstrom_positive_active_energy_in_tariff_t2') | float - states('input_number.nachtwert_beginn') | float - (states('sensor.warmestrom_positive_active_energy_total') | float - states('input_number.lichtstrom_nacht') | float)) + 34000000 }}
            {% endif %}
        state_class: total_increasing

      - name: "waermepumpe_tagstrom_real"
        unique_id: "waerme_tagstrom_real"
        device_class: "energy"
        unit_of_measurement: "Wh"
        state: >
            {% if is_state('binary_sensor.tag_nacht', 'off') %}
            {{ (states('sensor.lichtstrom_positive_active_energy_in_tariff_t1') | float - states('input_number.tagwert_beginn') | float - (states('sensor.warmestrom_positive_active_energy_total') | float - states('input_number.lichtstrom_tag') | float)) + 14000000 }}
            {% endif %}
        state_class: total_increasing
 
Zuletzt bearbeitet:

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
4.380
Beiträge
45.234
Mitglieder
3.982
Neuestes Mitglied
ThomasW
Zurück
Oben