[Modul] NRG-Stack Dashboard - Energiefluss-Kachel, 3D-Karte & Verlaufs-Charts für den ganzen Verbund (Update 0.9.40: Heizkurven-Editor, Wärmepumpen-Bedienung, Tagesplan mit Schaltleistung)

Alles mal Kopiert schaut gut aus zumindest da wo noch Daten da waren.

Danke für alles

gruß Stefan

1 „Gefällt mir“

Hallo Dietmar

Seit gestern wo ich die ganzen Werte kopiert habe ist mein Dashboard irgendwie sehr langsam der Seitenaufbau dauert sehr lange wenn ich zwischen den Tagen springe dauert das auch.

Was mir noch aufgefallen ist das meine Symbox seit dem Zeitpunkt auch teilweise deutlich mehr CPU braucht.

Kann das damit was zum tun haben?

Danke

Gruß Stefan

Hallo Stefan,

ja, das kann zusammenhängen. Im CPU-Diagramm springt die Grundlast gegen Abend des 2. Oktober von etwa 9 auf etwa 15 % und bleibt dort, das passt zeitlich zu deinem Kopierlauf. Sicher ist der Zusammenhang damit aber noch nicht, deshalb möchte ich es zuerst messen, bevor ich etwas ändere.

Zwei Dinge, die ich vermute:

Das Archiv arbeitet im Hintergrund noch. Nach größeren Nachträgen verdichtet Symcon die Daten neu. Das kann Stunden bis ein, zwei Tage CPU kosten und endet von selbst.
Es sind viel mehr Einzelwerte in den Zielvariablen. Deine alten Leistungswerte waren vermutlich sehr dicht geloggt (alle paar Sekunden). Kopiert wurde 1:1, das Dashboard muss beim Tageswechsel also pro Tag sehr viele Werte lesen. Das würde genau zu „Springen zwischen den Tagen ist langsam“ passen.

Dafür brauche ich von dir zwei Dinge:

a) Bei den drei Kopierläufen stand am Ende jeweils eine Zeile „Fertig: … Werte kopiert.“ Wie viele waren es bei Batterie, Ladestand und Netz?

b) Dieses Skript misst, wie viele Werte pro Tag in den Zielvariablen liegen und wie lange das Lesen dauert. Es schreibt nichts. Das Datum ist ein Tag aus dem kopierten Zeitraum:

<?php
$archiv = IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0];
$ziele = [16668 => 'Batterie', 11554 => 'Ladestand', 36491 => 'Netz'];
$tag = strtotime('2026-09-10');   // ein Tag im kopierten Zeitraum
foreach ($ziele as $id => $name) {
    $t0 = microtime(true);
    $roh = AC_GetLoggedValues($archiv, $id, $tag, strtotime('+1 day', $tag) - 1, 0);
    $n = count($roh);
    unset($roh);
    $t1 = microtime(true);
    $agg = AC_GetAggregatedValues($archiv, $id, 5, $tag, strtotime('+1 day', $tag) - 1, 0);
    $t2 = microtime(true);
    echo "$name ($id): $n Rohwerte am " . date('d.m.', $tag) . ($n >= 50000 ? ' (Lesegrenze erreicht!)' : '')
        . ', Lesen ' . round(($t1 - $t0) * 1000) . ' ms, 5-Min-Aggregat '
        . (is_array($agg) ? count($agg) . ' Zeilen' : 'FEHLER (zu viele Werte?)') . ', ' . round(($t2 - $t1) * 1000) . " ms\n";
}

Als Vergleichswert: bei mir liegen für einen Tag rund 16.000 Rohwerte, Lesen dauert 30 ms. Wenn bei dir pro Tag Zehntausende liegen oder „Lesegrenze erreicht“ bzw. „FEHLER“ steht, ist das der Grund.

Dann gibt es eine saubere Lösung: Für Tage vor dem 15.09. reichen 5-Minuten-Mittelwerte völlig, das sind nur 288 Werte pro Tag statt Zehntausende. Ich baue dir dafür ein Skript, das die kopierten Rohwerte durch 5-Minuten-Mittel ersetzt. Das mache ich erst, wenn deine Zahlen das bestätigen, und teste es vorher bei mir.

Bis dahin: wenn dir die CPU-Last Sorgen macht, schau in 1–2 Tagen, ob sie von allein wieder sinkt (Punkt 1).

Viele Grüße
Dietmar

zu a kann ich leider nichts mehr sagen auser das es sauber durchlief speziel die Netz Variabel war sehr groß

zu b da kamm das heraus:

sorgen macht mir die last an sich nicht mir ist es nur aufgefallen das es höher ist und alles entwas langsamer läuft

Hallo Stefan,

danke für die Messung, die hilft. Gut, dass dir die Last keine Sorgen macht. Ich würde es aber gern einordnen, denn die Zahlen sprechen etwas gegen meine erste Vermutung:

Batterie (1.392 Werte, 45 ms) und Ladestand (125 Werte, 17 ms) sind völlig unauffällig.
Netz hat 13.805 Werte pro Tag, das ist für eine Netzleistung nicht ungewöhnlich viel. Auffällig ist nur das Aggregat mit 816 ms. Bei mir braucht eine vergleichbar dichte Variable dafür etwa 20 bis 50 ms.

Also liegt es nicht daran, dass ich zu viel kopiert hätte. Es hängt etwas an der Netz-Archivdatei. Ob das durch das Kopieren kam oder schon vorher so war, kann ich so nicht sagen. Dafür bitte noch einen Vergleich mit einem Tag, den das Skript nicht angefasst hat (nach dem 15.09.). Dieses Skript schreibt nichts:

<?php
$archiv = IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0];
$id = 36491;   // Netz
foreach (['2026-09-10', '2026-09-20', '2026-09-28'] as $datum) {
    $tag = strtotime($datum);
    $t0 = microtime(true);
    $roh = AC_GetLoggedValues($archiv, $id, $tag, strtotime('+1 day', $tag) - 1, 0);
    $n = count($roh);
    unset($roh);
    $t1 = microtime(true);
    $agg = AC_GetAggregatedValues($archiv, $id, 5, $tag, strtotime('+1 day', $tag) - 1, 0);
    $t2 = microtime(true);
    echo date('d.m.', $tag) . ": $n Rohwerte, Lesen " . round(($t1 - $t0) * 1000) . ' ms, 5-Min-Aggregat '
        . (is_array($agg) ? count($agg) . ' Zeilen' : 'FEHLER') . ', ' . round(($t2 - $t1) * 1000) . " ms\n";
}

Der 10.09. ist ein kopierter Tag, der 20.09. und der 28.09. sind Tage mit echten Live-Daten.

20.09. und 28.09. ebenfalls um die 800 ms → dann ist das nicht durch das Kopieren entstanden. Die Netz-Variable ist einfach aufwendig, und die Last hat dann eine andere Ursache.
20.09. und 28.09. deutlich schneller → dann hängt es doch am Kopierlauf, und ich schaue mir an, wie ich die Netz-Werte wieder entschlacke.

Außerdem eine Gegenfrage: Hast du am 2. Oktober zusätzlich Module aktualisiert (z. B. Dashboard oder InverterHub)? Dann wäre auch das ein möglicher Auslöser für die Last, unabhängig vom Kopieren.

Viele Grüße
Dietmar

das kamm heraus

10.09.: 13805 Rohwerte, Lesen 355 ms, 5-Min-Aggregat 288 Zeilen, 810 ms
20.09.: 1439 Rohwerte, Lesen 515 ms, 5-Min-Aggregat 288 Zeilen, 1235 ms
28.09.: 1440 Rohwerte, Lesen 555 ms, 5-Min-Aggregat 288 Zeilen, 552 ms

nein glaube nicht das ich da ein Update gemacht habe mach sie eigentlich gleich wenn du sie veröffentlichst.

gruß stefan

Hallo Stefan,

danke, das ist aufschlussreich. Die Tage, die das Skript nicht angefasst hat (20.09. und 28.09.), sind genauso langsam, obwohl dort nur rund 1.440 Werte liegen. Also liegt es nicht an der Menge pro Tag, sondern an der Netz-Variable bzw. ihrer Archivdatei als Ganzes. Gut, dass du nichts aktualisiert hast, damit scheidet das als Ursache aus.

Jetzt muss ich noch klären, ob es am Kopieren liegt. Dafür gibt es zwei Kontrollen, die sich gut vergleichen lassen:

Deine alte Netz-Variable (13288) enthält für den 10.09. genau dieselben Daten wie die kopierte. Wenn die alte schnell ist und die kopierte langsam, dann liegt es an der Archivdatei der neuen Variable.
Eine unberührte Leistungsvariable (PV Gesamtleistung, 52136) für den 28.09. zeigt, wie schnell dein Archiv grundsätzlich ist.

<?php
$archiv = IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0];
$proben = [
    [13288, 'Netz ALT (Quelle)',       '2026-09-10'],
    [36491, 'Netz NEU (kopiert)',      '2026-09-10'],
    [52136, 'PV Gesamtleistung',       '2026-09-28'],
    [36491, 'Netz NEU (Live-Daten)',   '2026-09-28'],
];
foreach ($proben as [$id, $name, $datum]) {
    $tag = strtotime($datum);
    $t0 = microtime(true);
    $roh = AC_GetLoggedValues($archiv, $id, $tag, strtotime('+1 day', $tag) - 1, 0);
    $n = count($roh);
    unset($roh);
    $t1 = microtime(true);
    $agg = AC_GetAggregatedValues($archiv, $id, 5, $tag, strtotime('+1 day', $tag) - 1, 0);
    $t2 = microtime(true);
    echo "$name ($id) am " . date('d.m.', $tag) . ": $n Rohwerte, Lesen " . round(($t1 - $t0) * 1000)
        . ' ms, 5-Min-Aggregat ' . (is_array($agg) ? count($agg) . ' Zeilen' : 'FEHLER') . ', ' . round(($t2 - $t1) * 1000) . " ms\n";
}

Wie ich das lese:

Alt schnell, Netz neu langsam → die Archivdatei der neuen Netz-Variable ist durch den Kopierlauf aufgebläht. Dann gibt es eine saubere Lösung: Ich ersetze die kopierten Rohwerte durch 5-Minuten-Mittelwerte (288 statt über 13.000 Werte pro Tag). Die Originaldaten bleiben in deiner alten Variable erhalten, du verlierst nichts.
Alles langsam → dann ist dein Archiv bzw. der Datenträger der Symbox generell langsam oder gerade ausgelastet, und das Kopieren ist nicht die Ursache.

Du musst nichts ändern, bis wir das wissen.

Viele Grüße
Dietmar

das kamm raus

Netz ALT (Quelle) (13288) am 10.09.: 13805 Rohwerte, Lesen 358 ms, 5-Min-Aggregat 288 Zeilen, 824 ms
Netz NEU (kopiert) (36491) am 10.09.: 13805 Rohwerte, Lesen 339 ms, 5-Min-Aggregat 288 Zeilen, 823 ms
PV Gesamtleistung (52136) am 28.09.: 1303 Rohwerte, Lesen 80 ms, 5-Min-Aggregat 288 Zeilen, 77 ms
Netz NEU (Live-Daten) (36491) am 28.09.: 1440 Rohwerte, Lesen 561 ms, 5-Min-Aggregat 288 Zeilen, 559 ms

Hallo Stefan,

danke, das ist eindeutig, und eine gute Nachricht für das Kopieren: Deine alte Netz-Variable (13288) ist für den 10.09. mit denselben Daten genauso langsam (824 ms) wie die kopierte (823 ms). Das Kopieren hat also nichts schlechter gemacht, als es schon war. Die PV-Variable zum Vergleich ist mit 77 ms völlig unauffällig.

Die Netz-Variablen sind aber beide langsam, selbst an einem Tag mit nur 1.440 Werten (559 ms). Das spricht dafür, dass in der Archivdatei dieser Variablen sehr viele Zeilen insgesamt liegen und deshalb jede Abfrage teuer ist, unabhängig vom einzelnen Tag. Bei der neuen Netz-Variable kommt durch die Kopie vermutlich einiges dazu. Dass das auch deine höhere CPU erklärt, kann ich nicht belegen, aber es würde zum Zeitpunkt passen.

Es gibt einen sauberen Hebel: Für Tage vor dem 15.09. reichen 5-Minuten-Mittelwerte. Ich habe dafür ein Skript gebaut, das die kopierten Rohwerte in der neuen Variable durch 5-Minuten-Mittel ersetzt:

Aus über 13.000 Werten pro Tag werden 288. Die Tagesmittel und der Verlauf bleiben gleich (bei mir im Test mit 51.840 Rohwerten: alle 864 Mittelwerte stimmen mit dem Archiv-eigenen 5-Minuten-Mittel überein, größte Abweichung 0,005).
Deine alte Variable (13288) wird nicht angefasst. Du verlierst nichts. Falls es dir nicht gefällt, kannst du jederzeit mit dem Kopier-Skript neu kopieren.
Live-Daten ab dem 15.09. bleiben unberührt.

Erst Probelauf, dann scharf:

<?php
// ===== Einstellungen =====
$ziel      = 36491;                                   // Variable, deren kopierter Zeitraum verdichtet werden soll
$von       = strtotime('2023-01-01 00:00:00');
$bis       = strtotime('2026-09-15 00:00:00');        // alles davor wird verdichtet, danach bleibt unberührt
$schreiben = false;                                   // false = Probelauf (nur ein Tag, nichts geschrieben)
$probetag  = strtotime('2026-09-10 00:00:00');        // Tag für den Probelauf
// =========================

$archiv = IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0];
if (AC_GetAggregationType($archiv, $ziel) === 1) {
    die("Abbruch: Zielvariable ist ein Zähler - dieses Skript ist nur für Leistungs-/Prozentwerte.\n");
}
$typ = IPS_GetVariable($ziel)['VariableType'];   // 1 = Integer, 2 = Float
if (!defined('BUCKET')) {
    define('BUCKET', 300);                        // 5 Minuten
}

// Fenster [$f, $t) in 5-Minuten-Mittelwerte umrechnen. Gibt [vorher, nachher] zurück.
if (!function_exists('verdichte')) {
function verdichte($archiv, $ziel, $typ, $f, $t, $schreiben)
{
    $roh = AC_GetLoggedValues($archiv, $ziel, $f, $t - 1, 0);
    if (count($roh) >= 50000) {                   // Lesegrenze: Fenster halbieren
        unset($roh);
        $mitte = $f + intdiv(intdiv($t - $f, 2), BUCKET) * BUCKET;
        $a = verdichte($archiv, $ziel, $typ, $f, $mitte, $schreiben);
        $b = verdichte($archiv, $ziel, $typ, $mitte, $t, $schreiben);
        return [$a[0] + $b[0], $a[1] + $b[1]];
    }
    $n = count($roh);
    if ($n === 0) {
        return [0, 0];
    }
    $roh = array_reverse($roh);                   // aufsteigend
    $summe = [];
    $gewicht = [];
    for ($i = 0; $i < $n; $i++) {
        $start = max($roh[$i]['TimeStamp'], $f);
        if ($i < $n - 1) {
            $ende = $roh[$i + 1]['TimeStamp'];
        } else {
            $ende = $roh[$i]['Duration'] > 0 ? min($roh[$i]['TimeStamp'] + $roh[$i]['Duration'], $t) : $t;
        }
        $wert = $roh[$i]['Value'];
        for ($b = intdiv($start, BUCKET) * BUCKET; $b < $ende; $b += BUCKET) {
            $ueber = min($ende, $b + BUCKET) - max($start, $b);
            if ($ueber > 0) {
                $summe[$b] = ($summe[$b] ?? 0.0) + $wert * $ueber;
                $gewicht[$b] = ($gewicht[$b] ?? 0.0) + $ueber;
            }
        }
    }
    unset($roh);
    ksort($summe);
    $neu = [];
    foreach ($summe as $b => $s) {
        $m = $s / $gewicht[$b];
        $neu[] = ['TimeStamp' => $b, 'Value' => ($typ === 1) ? (int) round($m) : round($m, 2)];
    }
    if ($schreiben && count($neu) > 0) {
        AC_DeleteVariableData($archiv, $ziel, $f, $t - 1);
        foreach (array_chunk($neu, 2000) as $teil) {
            AC_AddLoggedValues($archiv, $ziel, $teil);
        }
    }
    return [$n, count($neu)];
}
}

if (!$schreiben) {
    $r = verdichte($archiv, $ziel, $typ, $probetag, strtotime('+1 day', $probetag), false);
    echo date('d.m.Y', $probetag) . ': ' . $r[0] . ' Rohwerte würden zu ' . $r[1] . " 5-Minuten-Mittelwerten.\n";
    die("Probelauf - nichts geschrieben. Passt das? Dann \$schreiben = true setzen und erneut ausführen.\n");
}

$vorher = 0;
$nachher = 0;
$tage = 0;
for ($f = $von; $f < $bis; $f += 21600) {         // 6-Stunden-Fenster
    $r = verdichte($archiv, $ziel, $typ, $f, min($f + 21600, $bis), true);
    $vorher += $r[0];
    $nachher += $r[1];
    if ((++$tage) % 400 === 0) {
        echo date('d.m.Y', $f) . ": bisher $vorher -> $nachher Werte\n";
    }
}
echo "Fertig: $vorher Rohwerte -> $nachher 5-Minuten-Mittelwerte.\n";
AC_ReAggregateVariable($archiv, $ziel);
echo "Archiv neu aggregiert. Dashboard-Seite neu laden.\n";

Bitte nur für 36491 (Netz). Die Batterie hat bei dir nur rund 1.400 Werte pro Tag und der Ladestand 125, dort bringt das nichts. Beim scharfen Lauf bitte nicht abbrechen, er kann ein paar Minuten dauern. Danach die Messung vom Netz noch einmal laufen lassen (10.09. und 28.09.), dann sehen wir, ob es etwas gebracht hat.

Viele Grüße
Dietmar

10.04.2023: bisher 0 -> 0 Werte
19.07.2023: bisher 0 -> 0 Werte
27.10.2023: bisher 0 -> 0 Werte
04.02.2024: bisher 0 -> 0 Werte
14.05.2024: bisher 0 -> 0 Werte
22.08.2024: bisher 0 -> 0 Werte
30.11.2024: bisher 0 -> 0 Werte
10.03.2025: bisher 0 -> 0 Werte
18.06.2025: bisher 0 -> 0 Werte
26.09.2025: bisher 0 -> 0 Werte
04.01.2026: bisher 0 -> 0 Werte
14.04.2026: bisher 4044 -> 4044 Werte
23.07.2026: bisher 32799 -> 32844 Werte
Fertig: 273632 Rohwerte -> 48096 5-Minuten-Mittelwerte.
Archiv neu aggregiert. Dashboard-Seite neu laden.

das öffnen der grafen ist jetzt besser geworden nicht mehr so lange ladezeiten dauert noch etwas aber nicht mehr schlimm lange

Hallo Stefan,

prima, das ist sauber durchgelaufen: aus 273.632 Rohwerten wurden 48.096 Fünf-Minuten-Mittel, und die Tage danach (ab 15.09.) habe ich nicht angefasst. Deine alte Netz-Variable (13288) hat weiterhin alle Originalwerte.

Ob es etwas gebracht hat, sehen wir nur an der Messung. Bitte lass nochmal dasselbe Skript wie vorhin laufen (die vier Proben: Netz alt, Netz neu am 10.09., PV am 28.09., Netz neu am 28.09.) und schau außerdem in ein paar Stunden aufs CPU-Diagramm und auf das Springen zwischen den Tagen im Dashboard.

Ich bin ehrlich unsicher, was dabei herauskommt:

  • 10.09. Netz neu sollte jetzt deutlich schneller sein (288 statt 13.805 Zeilen).
  • 28.09. Netz neu ist bei dir mit nur 1.440 Zeilen schon langsam gewesen. Falls das so bleibt, liegt die Ursache nicht an den kopierten Werten, sondern an etwas an der Netz-Quelle selbst. Dann ist das ein eigenes Thema und hat mit dem Kopieren nichts zu tun.

Meld dich einfach mit den neuen Zahlen.

Viele Grüße
Dietmar

ich werde beobachten

Danke erstmal habe aber meine alte Netz variabel auch stärker verdichtet da sie unnötig groß war

Netz ALT (Quelle) (13288) am 10.09.: 1437 Rohwerte, Lesen 59 ms, 5-Min-Aggregat 288 Zeilen, 53 ms
Netz NEU (kopiert) (36491) am 10.09.: 288 Rohwerte, Lesen 8 ms, 5-Min-Aggregat 288 Zeilen, 8 ms
PV Gesamtleistung (52136) am 28.09.: 1303 Rohwerte, Lesen 77 ms, 5-Min-Aggregat 288 Zeilen, 77 ms
Netz NEU (Live-Daten) (36491) am 28.09.: 1440 Rohwerte, Lesen 113 ms, 5-Min-Aggregat 288 Zeilen, 113 ms

Hallo Stefan,

das ist ein klares Ergebnis, danke fürs Messen: Die Netz-Variable ist am 10.09. von 823 auf 8 ms gefallen, und selbst der Live-Tag am 28.09., den das Skript nie angefasst hat, ist von 559 auf 113 ms gerutscht. Die Ursache war also tatsächlich die Größe der Netz-Archivdatei insgesamt, nicht der einzelne Tag. Die PV-Variable zur Kontrolle blieb unverändert bei 77 ms, wie erwartet.

Dass du die alte Netz-Variable ebenfalls verdichtet hast, ist völlig in Ordnung. Nur zur Erinnerung: dort liegen jetzt auch nur noch Fünf-Minuten-Mittel, die Originalwerte in voller Auflösung gibt es nicht mehr. Fürs Dashboard reicht das aus.

Ob damit auch die höhere CPU der Symbox und das zähe Springen zwischen den Tagen weg sind, siehst du am besten in den nächsten Stunden am CPU-Diagramm und im Dashboard. Sag mir gern, ob es sich normalisiert hat. Falls die CPU oben bleibt, schauen wir uns an, was die Netz-Quelle pro Sekunde ins Archiv schreibt, aber das hat dann mit dem Kopieren nichts mehr zu tun.

Viele Grüße
Dietmar

1 „Gefällt mir“

was mir noch aufgefallen ist weis nicht ob das damit zu tuen hat in der PHP Information taucht immer wider der Inverter auf und bleibt länger.

Screenshot 2026-10-03 131434

Hallo Stefan,

zu deiner Beobachtung mit dem Inverter in der PHP-Information: Der InverterHub hat zwei Lese-Timer (schnell und langsam), und ein Lesezyklus dauert normalerweise nur einige hundert Millisekunden. Rund 7 Sekunden wären auffällig, besonders bei kurzem Intervall, weil der Timer dann fast dauernd läuft und CPU braucht. Ein Einzelwert allein sagt aber noch nichts.

Mit dem Kopieren der Archivwerte hat das vermutlich nichts zu tun: Der InverterHub liest nur per Modbus und schreibt Live-Werte, er greift nicht auf das Archiv zu. Die Netz-Archivabfrage, die wir verbessert haben, ist ein eigenes Thema.

Damit ich es einordnen kann, brauche ich von dir:

  1. Mehrere Zeilen aus der PHP-Information über ein paar Minuten, mit vollem Namen (die Zeile ist bei dir abgeschnitten, es sollte „FastTimer“ oder „SlowTimer“ dort stehen) und der Zahl dahinter. Dann sehe ich, ob die 7 Sekunden ständig oder nur einmal vorkommen. Bitte schreib auch dazu, ob die Spalte Sekunden oder Millisekunden ist.
  2. Die Intervalle von Schnell- und Langsam-Timer in der InverterHub-Instanz (in Sekunden).
  3. Hängt an dieser Instanz nur der Wechselrichter oder auch weitere Geräte (z. B. SolarEdge mit Batterie oder Zähler)? Und steht im Status der Instanz etwas von Fehlern oder Timeouts?

Mit den Werten kann ich es gegen den Code prüfen.

Viele Grüße
Dietmar

hier mal video vielleicht hilft das was:

abgefragt wird der Wechselrichter und der Speicher

Hallo Stefan,

zuerst eine Korrektur von mir: Die Zahl in der letzten Spalte der PHP-Information („Zähler“) ist keine Dauer, sondern zählt, wie oft der Thread schon etwas ausgeführt hat. Meine Aussage mit den „7 Sekunden“ war deshalb falsch, bitte vergiss sie.

Aus deinem Video lese ich etwas anderes: Der Aufruf „InverterHub, Timer: FastTimer“ steht über mehrere Bilder mit derselben Startzeit (15:17:17) in der Liste, läuft also mindestens rund 14 Sekunden am Stück. Eigentlich sollte so ein Lesevorgang nur wenige hundert Millisekunden dauern, und der schnelle Timer läuft normalerweise alle 5 Sekunden. Ein Wert von 14 Sekunden passt dazu, dass der InverterHub auf Antworten vom Gerät wartet (jeder Abfrageblock wartet bis zu 3 Sekunden, bevor er aufgibt).

Das ist eine Beobachtung aus einem Video, kein Beweis. Um es einzugrenzen, brauche ich von dir:

  1. In der InverterHub-Instanz die Intervalle (schnell und langsam, in Sekunden).
  2. Welche Geräte an dieser Instanz hängen (Wechselrichter-Modell, Speicher-Modell) und ob sie per Netzwerk (Modbus TCP) oder RS485 angebunden sind.
  3. Den Status der Instanz, falls dort Fehler oder Zähler stehen.
  4. Im Symcon-Log (Meldungen) die Einträge der letzten Minuten mit dem Stichwort Timeout, Verbindung oder Modbus, am besten als Text oder Screenshot.
  5. Wenn du magst: das PHP-Information-Fenster über etwa 10 Minuten ansehen und mir sagen, ob die Zeile mit dem FastTimer ständig oder nur ab und zu dort steht.

Viele Grüße
Dietmar

Wechselrichter SolarEdge Se10KRWS48BEN4

Speicher Home Battery 92.kWh

Netzwerk Modbus TCP

Fehler treten nur wen am morgen einmal und am abent einmal auf

nichts besonderes zu finden

kommt ständig alle 10sec ca. und ist dann eine weile da

cpu auslastung ist wider rund gleich wie früher

Hallo Stefan,

danke für die Angaben und das CPU-Bild, damit lässt sich das gut einordnen:

  • Auf deinem CPU-Diagramm sieht man die erhöhte Grundlast ab dem Abend des 2. Oktober (rund 15 %) und den Rückgang gegen 13 Uhr am 3. Oktober auf rund 10 %. Das ist ziemlich genau der Moment, als du die Netz-Variable verdichtet hast. Die CPU-Last und das zähe Dashboard kamen also sehr wahrscheinlich von der großen Netz-Archivdatei. Mit Sicherheit beweisen kann ich das nicht, aber Zeitpunkt und Messwerte passen zusammen.
  • Die Zeile mit dem FastTimer des InverterHub war dagegen schon vorher da und ist heute unverändert, die CPU aber wieder normal. Daran liegt die Last also nicht. Deine Einstellungen (Schnell 5 s, Langsam 300 s) sind die Standardwerte, und dass nur morgens und abends je ein Fehler auftritt, klingt unauffällig. Dass die Abfrage von SolarEdge mit Batterie über Modbus ein paar Sekunden braucht, kann dazugehören. Ob es bei dir ungewöhnlich lang ist, kann ich daraus nicht sicher sagen, aber ich sehe keinen Handlungsbedarf, solange die CPU ruhig bleibt und das Dashboard flüssig ist.

Wenn das Dashboard wieder flüssig ist, wäre das Thema für mich damit erledigt. Schreib einfach, falls die Last in den nächsten Tagen wieder steigt.

Viele Grüße
Dietmar

1 „Gefällt mir“

Kleinigkeit:
hier stimmt die Bezeichnung noch nicht:

Grüße Martin