Erste KI-basierte Solarprognose die selbst lernt und deine Anlage kennenlernt - veröffentlicht-!

Ich habe mal meine Umrechnungs-Templates ein wenig aktualisiert.
Am Sonntag nach Installation der V12 werden viele das grafische Statistikmodul ausprobieren wollen. Um alle Energieflüsse und Berechnungen ausführen zu können braucht dieses Modul natürlich Daten. Einige werden diese Daten haben. Bei einigen Daten weiß man gar nicht, wo man die hernehmen soll. Genauso ist es bei meiner Huawei-PV-Anlage. Allerdings kann man alle geforderten Werte mittels Template darstellen. Diese Formeln nutzen dann Werte aus dem Inverter, der Batterie (wenn vorhanden) und dem Powermeter. Die Formeln sehen auf den ersten Blick kompliziert aus, sind aber eigentlich nur Plus- und Minus-Rechnungen, und ein paar wenn/dann Abfragen. Die Einzelbuchstaben sind nur Abkürzungen. Z.B. rechnet man watt1 + watt2 in der Formel einfach w_1+w_2. Anpassen müßt Ihr natürlich die Entitätsnamen aus Eurer Anlage.
Die Formeln können aber auch noch an anderer Stelle nützlich sein.

Ich habe die ganze Liste einfach zu den Templates in meine configuration.yaml dazugefügt.

##Netzstrom zu Haus
      - name: "grid to house"
        unique_id: "grid_to_house"
        unit_of_measurement: "W"
        device_class: "power"
        state_class: "measurement"
        state: >-
          {% set g_c = states('sensor.grid_consumption') | int(0) -%}
          {% set g_t_b = states('sensor.grid_to_battery') | int(0) -%}
          {{ (g_c-g_t_b) | int(0) }}

##Hausverbrauch
      - name: "house consumption"
        unique_id: "house_consumption"
        unit_of_measurement: "W"
        device_class: "power"
        state_class: "measurement"
        state: >-
          {% set t = states('sensor.battery_to_house') | int(0) -%}
          {% set u = states('sensor.grid_to_house') | int(0) -%}
          {% set g = states('sensor.generation_to_house') | int(0) -%}
          {{ ((t + u + g )| float(0)) |round(0) }}

##Netzstrom in Batterie
      - name: "grid to battery"
        unique_id: "grid_to_battery"
        unit_of_measurement: "W"
        device_class: "power"
        state_class: "measurement"
        state: >-
          {% set ip = (((states('sensor.inverter_active_power')| int(0))) /1.08)-%}
          {% set cdp = states('sensor.battery_charge_discharge_power')| int(0) -%}
          {% if ip < 0 and cdp > 0 %}
          {{ (ip *-1) | int(0) }}
          {% else %}
          {{ 0 }}
          {% endif %}

##Netzverbrauch
      - name: "grid consumption"
        unique_id: "grid_consumption"
        unit_of_measurement: "W"
        device_class: "power"
        state_class: "measurement"
        state: >-
          {% set u = states('sensor.inverter_active_power') | int(0) -%}
          {% if u < 0 -%}
              {{ (- u) | int(0) }}
          {% else %}
              {{ (0) | int(0) }}
          {% endif %}
          
##Solarstrom zu Netz
      - name: "generation to grid"
        unique_id: "generation_to_grid"
        unit_of_measurement: "W"
        device_class: "power"
        state_class: "measurement"
        state: >-
          {% set g2g = states('sensor.power_meter_active_power') | int(0) -%}
          {% if (g2g) > 0 -%}
              {{ (g2g) | int(0) }}
          {% else %}
              {{ (0) | int(0) }}
          {% endif %}
          
##Solarstrom zu Haus
      - name: "generation to house"
        unique_id: "generation_to_house"
        unit_of_measurement: "W"
        device_class: power
        state_class: "measurement"
        state: >-
          {% set pv = states('sensor.inverter_input_power') | int(0) -%}
          {% set g_t_b = states('sensor.generation_to_battery') | int(0) -%}
          {% set g_t_gr = states('sensor.generation_to_grid') | int(0) -%}
          {% if (pv - g_t_b - g_t_gr) > 0 -%}
           {{ (pv - g_t_b - g_t_gr) | int(0) }}
          {% else %}
           {{ (0) }}
          {% endif %}

##Solarstrom zu Batterie/Akku
      - name: "generation to battery"
        unique_id: "generation_to_battery"
        unit_of_measurement: "W"
        device_class: power
        state_class: "measurement"
        state: >-
          {% set b = states('sensor.battery_charge') | int(0) -%}
          {% set ap = states('sensor.inverter_input_power') | int(0) -%}
          {% if b > 0 and ap > 0 and b < ap -%}
              {{ (b) | int }}
          {% elif b > 0 and ap > 0 and b > ap -%}
              {{ (ap) | int(0) }}
          {% else %}
              {{ (0) | int(0) }}
          {% endif %}

##Batterieabgabe ins Haus
      - name: "battery to house"
        unique_id: "battery_to_house"
        unit_of_measurement: "W"
        device_class: "power"
        state_class: "measurement"
        state: >-
          {% set u = states('sensor.battery_charge_discharge_power') | int(0) -%}
          {% if u < 0 %}
              {{ (- u) | int(0) }}
          {% else %}
              {{ (0) | int(0) }}
          {% endif %}
          
##aktuelle Batterieladung
      - name: "battery charge"
        unique_id: "battery_charge"
        unit_of_measurement: "W"
        device_class: "power"
        state_class: "measurement"
        state: >-
          {% set u = states('sensor.battery_charge_discharge_power') | int(0) -%}
          {% if u > 0 %}
              {{ (u) | int(0) }}
          {% else %}
              {{ (0) | int(0) }}
          {% endif %}
          
##Batterieentladung
      - name: "battery discharge"
        unique_id: "battery_discharge"
        unit_of_measurement: "W"
        device_class: "power"
        state_class: "measurement"
        state: >-
          {% if states('sensor.battery_charge_discharge_power') | int(0) < 0 -%}
          {{(states('sensor.battery_charge_discharge_power') | float(0) *-1 ) | round(0)}}
          {% elif states('sensor.battery_charge_discharge_power') | int(0) >= 0 -%}
          {{(states('sensor.battery_charge_discharge_power') | float(0) * 0)| round(0) }}
          {% endif %}

Die Überprüfung nach dem Neustart im Template-Editor zeigte keine Fehler, ein Backup vorher ist trotzdem nicht verboten. Ich habe einfach diese Templates in den Template-Editor eingegeben (Ihr müßt aber Änderungen nach Euren Gegebenheiten machen). Wenn dann überall Werte erscheinen, sollte alles funktionieren.

{{states('sensor.generation_to_house')}}
{{states('sensor.inverter_input_power')|float(0)}}
{{states('sensor.inverter_active_power')|float(0)}}
{{states('sensor.generation_to_battery')|float(0)}}
{{states('sensor.generation_to_grid')|float(0)}}
{{states('sensor.battery_charge_discharge_power')|float(0)}}
{{states('sensor.grid_to_battery')|float(0)}}
{{states('sensor.grid_consumption')|float(0)}}
{{states('sensor.power_meter_active_power')|float(0)*-1}}
{{states('sensor.grid_to_house')|float(0)}}

Vielleicht hilft es ja dem einen oder anderem hier im Forum.

3 „Gefällt mir“