Loading...
Author Cloudapp
E.G.

PV-String-Anomalie in Home Assistant erkennen: Verschattung, defektes Modul oder loser MC4-Stecker

15. Juni 2026
Inhaltsverzeichnis

Ein PV-String kann monatelang leise unterperformen, und du merkst es erst auf der Jahresabrechnung. Eine Teilverschattung durch einen nachgewachsenen Baum, ein Modul mit defekter Bypass-Diode, ein MC4-Stecker, der sich über die Jahre gelockert hat — alles kostet Ertrag, ohne dass eine einzige Fehlermeldung erscheint. Mein Wechselrichter zeigt brav grün, während ein halber String im Halbschatten liegt.

Die Lösung ist überraschend simpel und braucht keine Zusatzhardware: Wenn deine Anlage zwei MPPT-Tracker hat, müssen die beiden Strings bei gleicher Ausrichtung im Tagesverlauf ziemlich parallel laufen. Driften sie dauerhaft auseinander, stimmt etwas nicht. Genau das lässt sich in Home Assistant in drei Schritten überwachen.

Die Idee: zwei MPPT-Strings vergleichen

Bei einer Anlage mit zwei gleich ausgerichteten Strings ist der Strom je Strang über den Tag nahezu deckungsgleich. Spannung verrät wenig (sie bleibt auch bei Verschattung relativ stabil), aber der Strom bricht ein, sobald ein Modul im String weniger Licht bekommt oder elektrisch schlechter angebunden ist. Wir berechnen also fortlaufend die prozentuale Differenz der beiden Strang-Ströme und schlagen Alarm, wenn sie über einer Schwelle bleibt — nicht bei einem kurzen Wolkenschatten, sondern erst bei anhaltender Abweichung.

Schritt 1 — den Strang-Strom über Modbus auslesen

Datengrundlage sind die Modbus-Holding-Register des Wechselrichters. Bei meinem Huawei SUN2000 liegen Spannung und Strom je String direkt nebeneinander: 32016/32017 für String 1, 32018/32019 für String 2 (Spannung scale 0.1, Strom scale 0.01). Wie du den Wechselrichter überhaupt per Modbus anbindest, habe ich im Modbus-Grundlagen-Post beschrieben.

# innerhalb eines Modbus-TCP-Hubs (host/port = eigener Wechselrichter/SDongle/Proxy)
sensors:
  - name: "PV String 1 Spannung"
    slave: 1
    address: 32016
    input_type: holding
    data_type: int16
    scale: 0.1
    unit_of_measurement: "V"
    device_class: voltage
    scan_interval: 60
  - name: "PV String 1 Strom"
    slave: 1
    address: 32017
    input_type: holding
    data_type: int16
    scale: 0.01
    precision: 2
    unit_of_measurement: "A"
    device_class: current
    scan_interval: 60
  - name: "PV String 2 Spannung"
    slave: 1
    address: 32018
    input_type: holding
    data_type: int16
    scale: 0.1
    unit_of_measurement: "V"
    device_class: voltage
    scan_interval: 60
  - name: "PV String 2 Strom"
    slave: 1
    address: 32019
    input_type: holding
    data_type: int16
    scale: 0.01
    precision: 2
    unit_of_measurement: "A"
    device_class: current
    scan_interval: 60

Die Registeradressen sind herstellerspezifisch. Bei einem anderen Wechselrichter (Fronius, SMA, GoodWe) findest du die Strang-Register im Modbus-Mapping des Herstellers — die Logik danach bleibt identisch.

Schritt 2 — ein Template-Sensor für die prozentuale Differenz

Dieser Template-Sensor rechnet die Abweichung relativ zum stärkeren der beiden Strings. Der Knackpunkt ist die Untergrenze von 0,5 A: morgens und abends, wenn beide Strings nahe null liefern, würde jede Mini-Abweichung prozentual gegen unendlich laufen — die Schwelle blendet diese Dämmerungs-Phase aus und liefert dann sauber 0.

- name: "PV String Differenz"
  unique_id: pv_string_differenz
  unit_of_measurement: "%"
  icon: "mdi:solar-panel"
  state: >
    {% set s1 = states('sensor.pv_string_1_strom') | float(0) %}
    {% set s2 = states('sensor.pv_string_2_strom') | float(0) %}
    {% set max_val = [s1, s2] | max %}
    {% if max_val > 0.5 %}
      {{ ((s1 - s2) | abs / max_val * 100) | round(1) }}
    {% else %}
      0
    {% endif %}

Schritt 3 — die Alarm-Automation mit Fehlalarm-Schutz

Jetzt fügt sich alles zusammen. Die Automation feuert, wenn die Differenz 30 % überschreitet und das 30 Minuten lang durchhält. Der zweite Schutz ist die Bedingung „String-1-Strom über 1 A“: sie verhindert nächtliche Fehlalarme und solche bei Sonnenauf-/-untergang, wenn die Anlage ohnehin kaum etwas liefert.

- id: pv_string_anomaly_warning
  alias: "PV String Anomalie Warnung"
  description: "Warnung wenn PV-Strings >30% Differenz fuer >30 Min"
  triggers:
  - trigger: numeric_state
    entity_id: sensor.pv_string_differenz
    above: 30
    for:
      minutes: 30
  conditions:
  - condition: numeric_state
    entity_id: sensor.pv_string_1_strom
    above: 1
  actions:
  - action: notify.mobile_app_your_phone
    data:
      title: "PV String Anomalie"
      message: >-
        String 1: {{ states('sensor.pv_string_1_spannung') }}V / {{ states('sensor.pv_string_1_strom') }}A |
        String 2: {{ states('sensor.pv_string_2_spannung') }}V / {{ states('sensor.pv_string_2_strom') }}A |
        Differenz: {{ states('sensor.pv_string_differenz') }}% |
        Verschattung, defektes Modul oder lockerer Stecker pruefen.
  mode: single

Die Push-Nachricht nennt direkt Spannung und Strom beider Strings plus die Differenz — du siehst auf dem Sperrbildschirm sofort, welcher String schwächelt, ohne die App öffnen zu müssen. notify.mobile_app_your_phone ersetzt du durch dein eigenes Mobilgerät.

Was die Warnung tatsächlich abfängt

In der Praxis sind es drei Ursachen. Verschattung: ein Baum, ein neuer Dachaufbau oder im Winter der Schornsteinschatten am Nachmittag — der betroffene String fällt reproduzierbar zur gleichen Tageszeit ab. Defektes Modul: eine durchgebrannte Bypass-Diode oder Mikrorisse ziehen einen String dauerhaft nach unten. Loser MC4-Stecker: ein über die Jahre korrodierter oder nicht ganz eingerasteter Steckverbinder erhöht den Widerstand — gefährlich, weil das im Extremfall heiß wird. Eine 30-%-Differenz, die nicht von der Tageszeit abhängt, ist genau das Signal, dem man nachgehen sollte.

Die Schwellen anpassen

30 % und 30 Minuten sind ein guter Startpunkt für zwei nominell gleiche Strings. Bei unterschiedlich großen oder unterschiedlich ausgerichteten Strings (Ost/West) ist eine konstante Grunddifferenz normal — dann erhöhst du die Schwelle oder vergleichst stattdessen die spezifische Leistung pro Modul. Wer empfindlicher warnen will, senkt auf 20 %; wer Ruhe will, zieht die for-Dauer auf 60 Minuten hoch.

Häufige Fragen

Warum 30 % und keine kleinere Schwelle?

Unter etwa 20 % bewegt man sich im Bereich normaler Streuung durch ziehende Wolken, leicht unterschiedliche Modultemperaturen und Messrauschen. 30 % über 30 Minuten trennt zuverlässig echte Defekte von Wetter. Für sehr gleichmäßige Anlagen kannst du nach ein paar Wochen Beobachtung vorsichtig nachschärfen.

Funktioniert das auch mit einem Wechselrichter mit nur einem String?

Der direkte Strang-Vergleich nicht — dafür brauchst du zwei MPPT-Tracker. Bei einer Single-String-Anlage kannst du stattdessen die tatsächliche gegen die erwartete Leistung (aus Einstrahlung/Uhrzeit) vergleichen, das ist aber deutlich aufwändiger. Der Zwei-String-Vergleich ist gerade deshalb so attraktiv: Er braucht keine Referenz, die Strings sind sich gegenseitig die Referenz.

Schlägt die Automation an bewölkten Tagen Fehlalarm?

Nein — Wolken treffen beide Strings gleichzeitig, die Differenz bleibt also klein. Genau deshalb vergleichen wir die Strings miteinander statt gegen einen Festwert. Die 30-Minuten-Bedingung fängt zusätzlich kurze, ungleichmäßige Schattenwürfe ab.

Welche Modbus-Register hat mein Wechselrichter?

Die hier genannten 32016–32019 gelten für Huawei SUN2000. Andere Hersteller haben eigene Mappings; suche im Modbus-Dokument deines Wechselrichters nach „PV1 Voltage/Current“ und „PV2 Voltage/Current“. Die scale-Faktoren (0.1 für Spannung, 0.01 für Strom) sind ebenfalls herstellerabhängig — falls die Werte um Faktor 10 daneben liegen, ist das fast immer der scale.

Verwandte Artikel