PV Überschuss in Wärme verwandeln.. ESP32 mit MQTT und Homeassistant verknüpfen

Hallo,

vorweg: Ich bin nicht der geborene Code Mensch… Dachte das bekomme ich hin, bis jetzt aber Fehlanzeige^^
Dafür kann ich halt das mechanisch Elektrische gut…

Mein Projekt:
Ich hab ein “Balkonkraftwerk” mit 2,5kWP, eine Gasheizung und einen 300l Pufferspeicher mit Wärmeübergabestation (Plattenwärmetauscher) ans Trinkwasser.
Die Funktion ist: PV Überschuss wird in Wärme gewandelt (2kW Heizstab im Speicher). Wenn Warmwasser gebraucht wird, läuft eine Ladepumpe an, befeuert den Plattenwärmetauscher mit Speicherwasser und erwärmt damit den Warmwasservorlauf der Gasheizung.
Das funktioniert auch alles sehr gut. Hab den Speicher zum testen mal auf 60°C geladen, wenn man dann duschen geht, läuft die Heizung kurz bzw. garnicht an (Nur so lang wie der Tauscher braucht um warm zu werden) und die Wärme kommt aus dem Speicher.

Jetzt habe ich den Heizstab an einem PWM gesteuerten SSR, das Signal kommt aus einem ESP32 (Wemos D1 Mini) mit Tasmota.
Mein PV Überschuss kommt vom digitalen Zähler bzw. einem ESP der über die IR Schnittstelle die Werte ausliest.

Ich hab Homeassistant laufen, damit ich einen MQTT Broker hab. Ich will auch mehr einbinden, daher dachte ich es macht Sinn die Logik auch da drüber laufen zu lassen.
Immerhin hab ich es geschafft mir den MQTT Wert vom Stromzähler in HA Anzeigen zu lassen.

Die Idee kommt von

Auf Seite 12 sieht man meine Anlage ^^

Mein Zähler gibt Netzbezug als positive Werte an, und Einspeisung als negative. Ich dachte ich könnte die Negativen Werte einfach an ein “pwm Dimmer Script” weitergeben und die werden dann in umgewandelt in 0-100%

alias: Nulleinspeisung
description: ""
# Alle 10 Sekunden prüfen wir, ob eine der Bedingungen zutrifft.
trigger:
  - platform: time_pattern
    seconds: /10
action:
# wenn mehr als 550 Watt eingespeist werden, dann ....
  - if:
      - type: is_power
        condition: device
        device_id: 2e562692166a7f556412a313a97fe3eb
        entity_id: e08cbf7ef28d8daf1565733651991cdb
        domain: sensor
        below: -550
    then:
        # setzen wir den Output von beiden Wechselrichtern auf den zuvor errechneten Wert
      - service: number.set_value
        data:
          value: "{{ states('sensor.pv_einspeisung')|float }}"
        target:
          entity_id: f1f3f486dcc5f83cfb8921b981e478bb
        enabled: true
      - service: number.set_value
        data:
          value: "{{ states('sensor.pv_einspeisung')|float }}"
        target:
          entity_id: 3d92ed40c51df0d25c983576bee09282
        enabled: true
  - if:
      # sinkt die Einspeisung auf weniger als 400 Watt, dann......
      - type: is_power
        condition: device
        device_id: 2e562692166a7f556412a313a97fe3eb
        entity_id: e08cbf7ef28d8daf1565733651991cdb
        domain: sensor
        above: -400
    then:
        # setzen wir beide Wechselrichter auf 700 Watt Output.
      - device_id: 1104e25f8f413428dd29d04b13169ab3
        domain: number
        entity_id: 6311b5b2385d6f86b15ddfa06bde927f
        type: set_value
        value: 700
      - device_id: 9bfd33a5996fa6a0c98a283d065ea50b
        domain: number
        entity_id: e76f11aae03459148dde6ae0100434c9
        type: set_value
        value: 700
mode: single

Ich dachte an sowas ähnliches. (Ist aus nem anderen Forum) Aber ich blick es einfach nicht ^^
Kann mir da einer helfen?

Hab für

    - sensor:
       name: "PV_Leistung"
       unique_id: "pv_leistung"
       state_topic: "heizung/ueberschuss/SENSOR"
       value_template: "{{ value_json['']['Power_curr'] }}"
       unit_of_measurement: "W"

schon ewig gebraucht (Und ChatGPT ^^)