Aus aktuellen Leistungsdaten (Watt) den Verbrauch ermitteln (Wh)

Hallo,
ich stehe gerade auf dem berühmten Schlauch. Ich müsste für meine Solaranlage die Verbrauchsdaten der Batterie ermitteln, also als kWh Wert. Ich habe allerdings nur die aktuellen Leistungswerte in Watt zur Verfügung, welche sekündlich aktualisiert werden.
Hat das schon mal jemand realisiert. Meine (leider nie so erfolgreiche) Suche im Forum hat nichts ergeben.
Viele Grüße
Marc

Bei stündlicher Aktualisierung macht eine Berechnung überhaupt keinen Sinn , da wird nicht mal ein Näherungswert raus kommen.
Ich habe bei Intervallen von einer Minute ganz gute Resultate erzielt - verglichen mit Energiezaehler. Genauigkeit hängt aber davon ab wie stark die Leistung schwankt.

Ich habe dafür folgendes Script geschrieben, dass ich alle 5 Minuten aufrufe:

<?php

$archiveID = 39620;
$start = strtotime("today 00:00");

calculateEnergies(50355, 10679, 28801);
calculateEnergies(42519, 33720);
calculateEnergies(16307, 47853, 36066);
calculateEnergies(41415, null, 32685);
calculateEnergies(35489, null, 22699);
calculateEnergies(16846, null, 27366);


function calculateEnergies($liveDataID, $dailyPositiveID, $dailyNegativeID = null) {
    global $archiveID;
    global $start;
    
    $todayLogged = array_reverse(AC_GetLoggedValues($archiveID, $liveDataID, $start, 0, 0));

    $previousValue = 0;
    $previousDuration = 0;

    $positiveEnergy = 0;
    $negativeEnergy = 0;

    //print_r($todayLogged);

    foreach($todayLogged as $value) {
        if($previousValue != 0 && $previousDuration > 0) {
            $energy = ($previousValue + $value['Value']) * $previousDuration / 2 / 3600;

            if($energy >= 0) {
                $positiveEnergy+= $energy;
            } else {
                $negativeEnergy+= $energy;
            }
        }

        $previousValue = $value['Value'];
        $previousDuration = $value['Duration'];
    }

    if($dailyPositiveID) {
        SetValue($dailyPositiveID, $positiveEnergy/1000);
    }

    if($dailyNegativeID) {
        SetValue($dailyNegativeID, -$negativeEnergy/1000);
    }
}

Die Live-Daten müssen geloggt werden.

Die erste Variable in der aufgerufenen Funktion zieht sich aus dem Archiv die einzelnen Leistungsdaten, berechnet die Energie und speichert diese dann in ein oder zwei andere Variablen für den Zeitraum „heute bis jetzt“.

Zwei Variablen deswegen, um z. B. Akku in/out abzubilden. PV braucht z. B. nur einen Wert, da immer positiv.

Servus
Du willst es ja vermutlich nur angezeigt haben, oder ?
Bei jeder Aktualisierung aufrufen:
Pseudocode:
Wh = Watt_Aktuell * (1 / (Timestamp_aktuelle_Aktualisierung - Timestamp_vorige_Aktualisierung)) * 3600;
Timestamp_vorigeAktualisierung = Timestamp_aktuelle_Aktualisierung;

  • gehört natürlich in PHP umgesetzt, das obige ist nur mal die Formel dazu.

Würde aber die Datenrate reduzieren, minütlich reicht doch auch- weil sonst machst dir irgendwann IPS zu.

greez
bb

Du kannst dafür das Energiezähler-Modul aus dem Store verwenden:

Vielen Dank für die Antworten. Das Energiezähler Modul hatte ich auf dem Schirm, allerdings ist die Beschreibung nicht eindeutig, da nicht klar ist, dass man die Spannungsangabe vernachlässigen kann, wenn man den Typ auf Leistung setzt.