Hallo zusammen, hier das JS-Script zur automatischen Regelung der AC-Ladung.
Ich mache es in Verbindung mit einer Tuya-Steckdose. Dafür habe ich den Tuya-Adapter installiert.
Ich habe zuden die Anzahl der States pro Minute auf 3000 erhöhen müssen. Damit ist keine Fehlermeldung bis jetzt aufgetaucht.
Die Steckdose schaltet sich entsprechend bei einem definierten Überschuss ein (bei mir 400 Watt). Der Überschuss wird bei mir von einem Fronius Smartmeter abgebildet.
Das Script startet immer bei einer AC-Ladeleistung von 200 Watt und fängt dann an (alle 60 Sekunden) nachzuregeln.
Sobald nicht genügend Überschuss vorhandne ist, dann schaltet sich die Steckdose aus und die (bei jedem Ausschalten/Einschalten stellt sich die AC-Ladeleistung wieder auf den Ausgangspunt von 200 Watt).
Die maxiale Ladeleisutng habe ich auf 1999 Watt begrenzt und die minimale Ladeleistung habe ich auf 200 Watt begrenzt (Grund: Siehe in meinem Post darüber).
Generell kann die Tuya-Steckdose auch rausgelassen werden und die minimale Ladeleistung auf 0 Watt gesetzt werden. Wollte ich aber nicht, da ich nicht sicher bin, ob Ladeleistungen zwischen 200 Watt und 0 Watt ein Problem für die Elektronik darstellt.
Falls es noch Ideen für Verbesserugnen gibt, dann würde ich mich auf Eure Info freuen.
const vPower = 'fronius.0.meter.0.PowerReal_P_Sum'; // Pfad zur Leistung des Fronius Smartmeters
const Schalter = 'tuya.0.bf86dXXXXX'; // Pfad zur Tuya Steckdose
let timeout = null;
const ecoflowObject = "0_userdata.0.ecoflow.app_169547XXXXX_DCEXXXX_thing_property_set.writeables.slowChgPower"; // Pfad zum Ecoflow-Objekt
let intervalId = null;
// Setzen Sie den Wert im iobroker-Objekt auf 200 bei jedem Neustart des Skripts
setState(ecoflowObject, 200);
// Funktion zum Abrufen und Umrechnen des Werts vom Fronius Smartmeter alle 60 Sekunden
function startInterval() {
intervalId = setInterval(function() {
let froniusValue = getState(vPower).val; // Wert vom Fronius Smartmeter
if (froniusValue < 0) {
powerValue += Math.abs(froniusValue); // Wenn der Wert negativ ist, addiere den absoluten Wert zum aktuellen Wert
} else {
powerValue -= froniusValue; // Wenn der Wert positiv ist, subtrahiere den Wert vom aktuellen Wert
}
if (powerValue < 200) {
powerValue = 200; // Wenn der berechnete Wert negativ ist, setze den minimalen Wert von 200
} else if (powerValue > 2000) {
powerValue = 1999; // Wenn der berechnete Wert größer als 2000 ist, setze den maximalen Wert von 1999
}
setState(ecoflowObject, powerValue); // Wert in das Ecoflow-Objekt schreiben
}, 60000); // alle 60 Sekunden
}
// Funktion zum Setzen des iobroker-Objekts auf 200, wenn die Tuya-Steckdose ein- oder ausgeschaltet wird
function setEcoflowObject() {
setState(ecoflowObject, 200);
}
on(Schalter, function(dp) {
setEcoflowObject();
});
on(vPower, function(dp) {
if (dp.state.val <= -400) { // Überschussleistung in Watt
if (timeout) {
clearTimeout(timeout);
timeout = null;
}
setState(Schalter, true); // Steckdose einschalten
setEcoflowObject(); // Setzen Sie das iobroker-Objekt auf 200, wenn die Tuya-Steckdose eingeschaltet wird
} else if (dp.state.val >= 50) {
if (!timeout) {
timeout = setTimeout(function() {
setState(Schalter, false); // Steckdose ausschalten nach 2 Minuten
setEcoflowObject(); // Setzen Sie das iobroker-Objekt auf 200, wenn die Tuya-Steckdose ausgeschaltet wird
timeout = null;
}, 120000); // Verzögerung von 2 Minuten
}
}
});