Victron MultiPlus II

Ich hab den EM24 von Victron drin, aber ich will meinen Lastgang haben, was das Haus verbraucht. Also gesamt WR ins Netz + Lieferung aus dem Netz. Entspricht dem Wert „LOAD“.

Ich weiß ja was ich haben will und rechne es einfach. Mach dir keinen Kopf.

Danke

Nee nee, wollte nur verstehen, warum du Werte von L1-L3 hast, obwohl nur ein MPII dran hängt.
Den EM24 habe ich nicht, nutze den eHz direkt dafür.
Jetzt ist es klar.
Den Hausverbrauch muss ich damit dann auch berechnen.

Nimm mal statt 817 die 820.

Jeweils L1
817 = Verbrauch Haus
820 = Bezug Netz

Für L2 bzw. L3 1 bzw. 2 dazu addieren

Würde auch funktionieren, aber ich hab jetzt einfach 817 + 818 + 819 angelegt und habe genau den Wert aus‘m VRM.

Jetzt kann ich auf IPS-View im Haus den aktuellen Lastgang sehen und weiß was gerade los ist.

Habe heute das erstmal dem System einen Stresstest unterzogen um zu sehen wie das Victron System funktioniert.
Heute morgen vor Sonnenschein habe ich das System vom Netz getrennt. Als die Sonne aufging sind beide PVs schön hochgefahren. DC 4,1 kw AC 10,5 kw. Man konnte gut erkennen das wenn das System nicht mehr Leistung einforderte, er die Herz Zahl erhöhte und damit die AC PV reduzierte.
Plötzlich musste ich immer wieder feststellen das die 10,5kw PV Anlage vom Netz getrennt worden ist und neu hochgefahren ist.

Die Insel Einstellung des SMA liegen bei Regeln ab 51Herz bis 52 Herz und abschalten bei 53 Herz. So sind auch die Victrons eingestellt.

Das Problem, die Victrons haben die Herz Zahl bis 51,5 hoch geregelt und ab da hat sich der SMA getrennt. Nach Googlen habe ich herausgefunden das dieses Schema wohl nach Update vom Netz so gefordert wird und der SMA von 50,2 bis zum abschalten bis 51,5 geregelt wird. Ich hätte gedacht das der SMA in den Inselmodus springt was aber nicht so ist.
Die neue Konfiguration habe ich in die Victrons eingespielt Regelung ab 50,2 bis 51,4 abschalten 51,5 nicht optimal funktioniert aber erstmal.

Was mich stört, die letzten 1200w werden bei 51,4 Herz angefahren und danach getrennt, es müsste aber doch möglich sein auch die letzten Watt schrittweise gegen null zu fahren. SMA begründet dies, dass wenn es im Netz Probleme gibt, erst die Last gut weggenommen wird und erst dann getrennt wird.
Jetzt habe ich drei Möglichkeiten,
Alles so lassen, es regelt eigentlich alles gut hin, nur in den letzten Prozenten bevor der Akku voll ist wird es tricki.
Den Wechselrichter irgendwie in den Inselmodus zu bringen
Oder
Den normalen Netzmodus anpassen.

Zwischenfrage habt ihre eine Option den Akku absichtlich über das Netz voll zu laden ?



Ja, das mache ich über ein Script aus IPS heraus, nennt sich bei mir Notstromladen als ggf. Vorbereitung für einen „Blackout“.
Ob das aus deinem GX Device heraus auch zu parametrisieren ist weiss ich aber nicht.

VG,
Doc

@Doctor_Snuggles WOW!! Dau hast da echt schon ein cooles System aufgebaut! - respekt!

Hat es schon jemand geschafft per IP Symcon einen Smartmeter oder PV Wechselrichter vorzutäuschen??

Ich habe 3 alte Wechselrichter welche keine IP Anbindung haben. Die aktuellen Leistungswerte bekomme ich mit Stromzangen in IPS,… d.h. die Werte habe ich in IP Symcon, aber leider nicht im GX Device.

Jetzt war meine Idee die Werte per Symcon für das GX Device aufzubereiten und zur Verfügung zu stellen.

Hat hier jemand eine Idee, oder einen Tipp? Oder wird das vielleicht nie klappen?

Ich bin über jede Hilfe sehr dankbar!!

LG

GX versucht den SOC Minimum mit max -2% zu halten.
Hast Du z.B. 30% eingestellt wird der GX beim unterschreiten von 28% anfangen aus dem Netz zu laden. Sofern im MPII das Ladegerät eingeschaltet ist.
Hast Du im Sommer 15% eingestellt und Du veränderst im Winter auf 60%, fängt an der GX den Ladeprozess zu starten und lädt aus dem Netz bis 60%.

Der GX kann es auch zum Teil den SOC Min. selbst regeln. Mit BatteryLife. GX guckt sich dazu verschiedene Parameter an und steuert damit SOC Min.

Ich regel mit IPS garnichts. Ich überlaß das alles dem GX. Ich gebe nur bestimmte Parameter vor. SOC Min., Max. Inverterleistung, etc.

Danke @MCS-51 . Perfekt, hab es heute mit dem Min SOC mal probiert. Habe ihn zum testen mal auf 90 % genommen und der Akku fängt sofort an aus dem Netz zu laden. Für mich so ausreichend ohne es in IPS zu integrieren. Wenn es im Winter Rationierungen des Netzes zb. alle 4 Stunden Strom, 8 Stunden kein Strom, kann ich so gut arbeiten.

Wie auch MCS überlasse ich dem GX alle Aufgaben, es gibt zur Zeit nichts mit dem ich nicht zufrieden bin und mit IPS nach regeln muss.
Grüße Daniel

Stimmt,
so hatte ich das am Anfang auch mal gehabt, war mir aber später etwas zu unflexibel.
Ist aber so autarker ohne IPS.
Mit IPS habe ich aber noch mehr Möglichkeiten, das Maximum aus der PV heraus zu holen.
Mal sehen, was der Winter bzgl. Ausfälle so bringen wird …

Viele Grüße,
Doc

Was und wie steuerst Du den alles?
Stellst Du uns das Script zur Verfügung?

Das Script hatte ich hier irgendwo schon einmal gepostet.
Ich weiss nicht, ob das so jemanden hilft, da es sehr individuell und historisch gewachsen ist.
Ich pack’ euch mal ein paar Screenshots dazu, sonst blickt da keiner mit den ID’s durch.

// Regelung für die Einspeisung/Laden aus dem Netz (positiv => laden  /  negativ => Einspeisung ins Netz)

// ---------- Konfiguration ----------
$IDArchiveHandler = 10204;
$ID_Gesamtleistung = 42236;
$ID_Leistung_Mittelwert = 29827;                            // Werte zur Berechnung des möglichen Leistungsdurchschnitt
$ID_Sekunden = 27931;                                       // ID Sekundenzähler für Netzteil zum Einschalten

$ID_Instanz_ESS_SOLL = 21696;
$ID_ESS_SOLL = 12332;

$ID_Instanz_Relais1 = 16100;
$ID_Status_Relais1 = 52086;
$ID_Instanz_Steckdose = 32438;                              // Steckdose Heizungsraum für Netzteil (Treppenlicht 15min.)
$ID_Steckdose_Status = 52398;

$ID_Instanz_Enable_Charger = 13532;                         // Modbus Instanz Charger
$ID_Instanz_Enable_Inverter = 43112;                        // Modbus Instanz Inverter
$Status_Charger = GetValue(21531);                          // aktueller Status Lader (aus = 0, ein = 100)
$Status_Inverter = GetValue(37530);                         // aktueller Status Inverter (aus = 0, ein = 100)
$SoC = GetValue(12410);                                     // aktueller SoC Pylontech (Victron)
$ID_SoC_dyn = 16223;                                        // ID des dynamischen SoC
$ID_SoC_100 = 34342;                                        // ID des 0-100% SoC

$Laden_Offset = 100;                                        // Vorgabe Offset zur Nullausregelung in W
$Entladen_Offset = -20;
$Laden_Max = 2200;                                          // Ladeleistung Victron maximal in W
$Einspeisen_Max = -2400;                                    // Einspeisleistung Victron maximal in W (max. 2400W)
$SoC_min = GetValue(47773);                                 // minimum SoC bis abschalten des Inverters
$SoC_max = 100;                                              // maximaler SoC beim Laden (Victron)
$Soc_max_Netzteil = 88;                                     // maximaler SoC fürs Laden mit dem Netzteil
$SoC_Offset = 5;                                            // Inverter wiedereinschalt SoC über min. SoC
//$Sekunden_Offset = 60;                                      // Offsetzeit zum Zuschalten des Netzteils

$Sonnenstunden_morgen = GetValue(30733);                    // Sonnenstunden von morgen
$BatteryLife = GetValue(49237);                             // BatteryLife Status abfragen

$Leistung_Netzteil = 1400;                                  // max. Leistung in W des zus. Ladenetzteils (aktiviert über Relais1)
$Leistung_Heizstab = GetValue(53870);                       // aktuelle Leistung der Heizstäbe
$Netzteilmodus = GetValue(33898);                           // Netzteil zum Laden benutzen ja/nein

$Bezug = round(GetValue(36301),0);                          // aktueller Bezug vom eHz in W
$Leistungssteller_aktuell = GetValueInteger(35077);         // aktueller Wert vom ESS in W

// Ladeverhalten anpassen (normal/schnell)
if (GetValue(21454) == true) {                              
    $Sekunden_Offset = 10;                                  // Offsetzeit zum Zuschalten des Netzteils
    $NetzteilStartWatt = 2200;                              // Netzteil Startleistung ESS in Watt
} else {
    $Sekunden_Offset = 55;
    $NetzteilStartWatt = 2500;    
}


// ===================================================================================================================================

// Steuerung Einspeisleistung nach Batteriestatus (SoC)
if ($SoC < 20) {$Einspeisen_Max = -1000;}                                                               // Einspeisleistung bei niedriegen SoC begrenzen
if ($SoC < 15) {$Einspeisen_Max = -500;}


// ---------- BatteryLife - Steuerung dynamischer SoC_min (mit Sonnenstunden des nächsten Tages um 13:05) ----------

// einmal tägl. prüfen (13:05)
if (($_IPS['SENDER'] == "TimerEvent") and ($BatteryLife == 1)) {                                // wenn BatteryLife-Regelung nach Wetter (1)
    if ($_IPS['EVENT'] == 40077) {
        $SoC_min = 10;
        if ($Sonnenstunden_morgen <= 5) {$SoC_min = 15;}    //20%
        if ($Sonnenstunden_morgen <= 4) {$SoC_min = 25;}    //25%
        if ($Sonnenstunden_morgen <= 2) {$SoC_min = 30;}    //40%
        if ($Sonnenstunden_morgen <= 1) {$SoC_min = 40;}    //60%
        SetValue(47773, $SoC_min);
        return;
    }
}    

// beim Umschalten prüfen
if ($_IPS['SENDER'] == "Variable") {
    if ($_IPS['VARIABLE'] == 49237) {
        if ($BatteryLife == 0) {$SoC_min = 10;} 
        
        if ($BatteryLife == 1) {
            $SoC_min = 10;
            if ($Sonnenstunden_morgen <= 5) {$SoC_min = 15;}    //20%
            if ($Sonnenstunden_morgen <= 4) {$SoC_min = 25;}    //25%
            if ($Sonnenstunden_morgen <= 2) {$SoC_min = 30;}    //40%
            if ($Sonnenstunden_morgen <= 1) {$SoC_min = 40;}    //60%
        }
        
        if ($BatteryLife == 2) {$SoC_min = 20;}
        if ($BatteryLife == 3) {$SoC_min = 40;}
        if ($BatteryLife == 4) {$SoC_min = 60;}
        if ($BatteryLife == 5) {$SoC_min = 80;}

        SetValue(47773, $SoC_min);
        return;
    }
}

// ---------------- Berechnung des dynamischen SoC ----------------------------

$SoC_dyn = ($SoC - $SoC_min) * 100 / ($SoC_max - $SoC_min);                                             // Berechnung dynamischer Soc (zur Anzeige von 0-100% der verfügbaren Kapazität)
if (($SoC_dyn < 0) or ($Status_Inverter == 0)) {$SoC_dyn = 0;}
if ($SoC_dyn > 100) {$SoC_dyn = 100;}

SetValueInteger($ID_SoC_dyn, $SoC_dyn);

// ---------------- Berechnung des 0-100% SoC (10-95%)----------------------------

$min_SoC = 10;
$SoC_100 = ($SoC - $min_SoC) * 100 / ($SoC_max - $min_SoC);                                             // Berechnung 0-100% Soc (zur Anzeige von 0-100% der Gesamt-Kapazität)
if ($SoC_100 < 0) {$SoC_100 = 0;}
if ($SoC_100 > 100) {$SoC_100 = 100;}

SetValueInteger($ID_SoC_100, $SoC_100);

// *************************************************** Notstromladen *****************************************************************
$Notstromladen = GetValue(45988);
if ($Notstromladen == true) {
    $Bezug = -2000;                                         // 2000W Einspeisung vorgaukeln                                                                                                         
    $SoC_min = 10;                                          // Soc minimum zum entladen im Notstrombetrieb
    $SoC_max = 92;                                          // maximaler SoC beim Laden (Victron)
}
// ***********************************************************************************************************************************

// ---------- Steuerung des Inverters (ein/aus) ----------
if ($SoC <= $SoC_min) {                                                                                 // Wenn SoC < SoC_min Inverter ausschalten
    if ($Status_Inverter > 0) {
        ModBus_WriteRegisterShort($ID_Instanz_Enable_Inverter, 0);
    }
}
if ($SoC >= ($SoC_min + $SoC_Offset)) {                                                                 // Wenn SoC über (SoC_min. + Offset) Inverter einschalten
    if ($Status_Inverter < 100) {
        ModBus_WriteRegisterShort($ID_Instanz_Enable_Inverter, 100);
    }
}
            
// ---------- Steuerung des zusätzlichen Netzteils zum Laden (über Relais 1 Venus GX) ----------
if ($_IPS['SENDER'] == "Variable") {
    if ($_IPS['VARIABLE'] == 36301) {
        $Netzteil_aktuell = GetValue($ID_Status_Relais1) * $Leistung_Netzteil;                          // aktuelle Leistung Netzteil
        $Power_gesamt = $Leistungssteller_aktuell + $Netzteil_aktuell + ($Bezug * -1);                  // Gesamtleistung ermitteln
        SetValue($ID_Gesamtleistung, $Power_gesamt);                                                    // mögliche Gesamtleistung in Variable schreiben
        
        $Mittelwert = getMean ($IDArchiveHandler,$ID_Gesamtleistung,120,0);                             // Mittelwert mögliche Gesamtleistung über 2 min.
        SetValue($ID_Leistung_Mittelwert, $Mittelwert);        

        // *** Sekundenzähler für Freigabe des Netzteils ***
        if (($Power_gesamt + $Leistung_Heizstab) >= 2000) {
            $Restzeit = (GetValue($ID_Sekunden) - (time() - (IPS_GetVariable($ID_Sekunden)['VariableUpdated'])));
            if ($Restzeit < 0) {
                $Restzeit = 0;
                }
            SetValue($ID_Sekunden, $Restzeit);
        }
        if (($Power_gesamt + $Leistung_Heizstab) < 2000) SetValue($ID_Sekunden, $Sekunden_Offset);      // Sekundenzähler für Freigabe NT hochzählen oder löschen  

        // *** Netzteil zuschalten ***
        if (($Power_gesamt > 2000) and ($SoC <= $Soc_max_Netzteil) and ($Netzteilmodus == true) and ($Notstromladen == false)) {
            KNX_WriteDPT1($ID_Instanz_Steckdose, true);                                                 // Steckdose Heizungsraum ein (15 min. Treppenlicht)
        }

        // *** Netzteilausgang einschalten ***
        if (($Power_gesamt > $NetzteilStartWatt) and (GetValue($ID_Sekunden) <= 0) and ($SoC <= $Soc_max_Netzteil) and ($Netzteilmodus == true) and ($Notstromladen == false)) {   // Bedingungen für Netzteil einschalten             
            if (GetValue($ID_Status_Relais1) == 0){                                                                                                  // wenn Netzteil aus war, Netzteileinschaltzähler hochzählen
                SetValueInteger(54069, (GetValueInteger(54069) + 1));
            }
            ModBus_WriteRegisterShort($ID_Instanz_Relais1, 1);                                          // NT ein (Relais 1) wenn > 2500W und SoC < max.
            SetValueBoolean(37354, true);
        }

        // *** Netzteil ausschalten ***
        if ((($Power_gesamt + $Leistung_Heizstab) < 1500) or ($SoC > $Soc_max_Netzteil) or ($Netzteilmodus == false) or ($Notstromladen == true)) {   // NT aus (Relais 1) wenn < 1500W oder SoC > max. oder Notstromladen
            ModBus_WriteRegisterShort($ID_Instanz_Relais1, 0);
            SetValueBoolean(37354, false);                                                              // Netzteil-Variable schalten
        }

        // *** Leistungen schreiben ***
        $Netzteil_aktuell = GetValue($ID_Status_Relais1) * $Leistung_Netzteil;                          // aktuelle Leistung Netzteil
        SetValue(47589, $Netzteil_aktuell);                                                             // testweise Leistung Netzteil in Variable schreiben
        SetValue(19925, ($Netzteil_aktuell + $Leistungssteller_aktuell));                               // Gesamt ESS-Leistung in Variable schreiben
    }
}

// --------------- Steuerung des ESS Sollwertes (Victron GX) -------------------
if ($_IPS['SENDER'] == "Variable") {
    if ($_IPS['VARIABLE'] == 36301) {
        $Power = $Leistungssteller_aktuell + ($Bezug * -1);                                             // Leistung ESS festlegen
        if (($Power > $Entladen_Offset) and ($Power < $Laden_Offset)) { $Power = 0;}                    // Offset zum Laden/Entladen
        if ($Power > $Laden_Max) {$Power = $Laden_Max;}                                                 // Ladeleistung begrenzen
        if ($Power < $Einspeisen_Max) {$Power = $Einspeisen_Max;}                                       // WR Leistung begrenzen
        if (($Power > 0) and ($SoC >= $SoC_max)) {$Power = 0;}                                          // Laden abschalten wenn SoC über Soc max.        
//      ModBus_WriteRegisterShort($ID_Instanz_ESS_SOLL, $Power);                                        // neuen Wert in Soll Instanz schreiben (ESS_Soll)
        SetValueInteger($ID_ESS_SOLL, $Power);                                                          // neuen Wert in Soll Variable schreiben
//        return;
    }
}            

// ------------------ Status Inverter / Lader / Netzteil in Variable (für MDT GT2) ------------------
if ((GetValue(47589) + $Leistungssteller_aktuell) > 100) {                                              // bei laden > 100W Variable setzen
    SetValue(23656, true);
    } else {
    SetValue(23656, false);
}

if ((GetValue(47589) + $Leistungssteller_aktuell) < -100) {                                             // bei entladen < -100W Variable setzen
    SetValue(16828, true);
    } else {
    SetValue(16828, false);
}

if ($Bezug > 100) {                                                                                     // Bezug > 100W Variable setzen
    SetValue(13025, true);
    } else {
    SetValue(13025, false);        
}

if ($Bezug < -100) {                                                                                    // Bezug < -100W Variable setzen
    SetValue(12883, true);
    } else {
    SetValue(12883, false);        
}
// ---------------------------- Funktionen --------------------------------------------

function getMean ($IDArchivehandler,$varId,$log_interval,$default) {
    $logData = AC_GetLoggedValues ($IDArchivehandler, $varId, time()- $log_interval,time(),-1);
    if (count($logData) <1) return $default;
        foreach ($logData as $key => $data)
    {
    $value[$key] = $data['Value'];
    }
    return array_sum($value)/count($value);
}

function getMedian ($IDArchivehandler,$varId,$log_interval,$default) {
    $logData = AC_GetLoggedValues ($IDArchivehandler, $varId, time()-$log_interval,time(),-1);
    if (count($logData) <1) return $default;
        foreach ($logData as $key => $data)
    {
    $value[$key] = $data['Value'];
    }
    asort($value);
    return $value[count($value)/2];
}

1 „Gefällt mir“

Hi,

danke erstmal für das Script. Das schaue ich mir sehr gerne an. Meine Frage ist, steuerst du auch die Relais von den MP2 etc. an ?

BZW. kennst du dich darin etwas aus wie man die vorhandenen Relais Ausgänge nutzen kann.

Gruß

Ich steuere die Relais vom Venux GX an, um den Ausgang des Netzteils einzuschalten.
Oder meinst du die Relais vom MPII, um das Netz usw. zuzuschalten? Das passiert ja dann autom. wenn man z.B. den Inverter oder Lader schaltet.

Hi,

ich meine die am MP2 und z.B. die am MPPT Laderegler. Dort sind ja auch Relais zum ansteuern. Der Cerbo hat ja auch welche.

Die meine ich

Ach du meinst die, um z.B. einen externen Erzeuger zu zuschalten.
Nein die nutze ich nicht, sollte aber auch möglich sein.

Hi Leute, aus aktuellen Anlass ( beide meiner Stromanbieter / Hausstrom / Wärmepumpe) haben heftig ihre Preise angezogen (ab1.1.23)
suche ich gerade nach Alternativen und einigen von Euch geht es bestimmt genau so.

Wer von den Victron oder Batteriespeicher Betreibern unter Euch, hat sich schon mal Gedanken mit Awattar oder Tibber gemacht.
Ich denke mit einem richtigen Tool könnte man so den Energieverbrauch im Haus endlich smart steuern und den Akku zu den richtigen Zeiten betreiben.

Ein script gibt es ja bereits dazu. Ich würde mich freuen wenn man eine kleine Arbeitsgruppe dazu ins Leben rufen könnte. Vor -Nachteile, welche Anbieter gibt es. Erfahrungen… Ich freue mich auf eure Antworten.

Hatte ich auch schon überlegt.
Aber ob sich das wirklich rechnet, wenn du dir die Preise im Vergleich der letzten 24h hier unten mal ansiehst?
Die werden Anfang des Jahres bestimmt auch noch anziehen …

Dann kann ich dir nur wünschen das es bei dir so gut weitergeht, ich poste mal meine neuen Tarife.
Aktuell bin ich mit dem Hausstrom bei Stadtwerke Landsberg und mit der Wärmepumpe bei Stadtwerke München SWM. Sind bei mir diese Woche im Postkasten gelandet. Mein Grundversorger ist LEW, ist leider noch teurer.

Ich überlege auch die Wärmepumpe (THZ 403) auf den Hausstrom umzubauen. Welche Regelungen vom Netzbetreiber gibt es? oder einfach machen.
Ich würde die Wärmepumpe gerne in den Out2 Bereich an die Victron Multiplus anschließen und die 3x Nachheizstufen 3x3200 Watt Leistung für den äußersten Notfall (Sicherung immer Aus) vor die Victron Anlage. Habe ich im Kopf einen Verdrahtungsfehler ???

Welche Anbieter gibt es den zur Zeit auf dem deutschen Markt ? Da man über aWattar gerade keine Tarife abschließen kann bleibt bei mir gerade nur Tibber.

Welche Technik wird benutzt um das alles bei diesen Anbietern abzurechen ? Muss man diese Technik benutzen oder kann man seinen Verbrauch auch anderes übermitteln ?
Fragen über Fragen …