Re: Wallbox Lademanagement über OH 3
Verfasst: 27. Aug 2022 13:26
Ich habe mich die letzten Wochen auch mal an einem Script versucht.
Leider ist die Scriptsprache für mich absolutes Neuland.
Könnt ihr mal drüber sehen, ob es Sinn ergibt?
Zur Erklärung:
Das Script ist Teil einer Rule für einen Schalten "PV-Laden".
Wenn dieser eingeschaltet wird erhält die Wallbox den Befehl das Laden sofort zu beginnen und dann das Script auszuführen.
PV_Laden_Amp_max ist ein errechneter Wert aus PV Produktion in Watt minus Hausverbrauch in Watt geteilt durch 232 Volt (damit habe ich die vielfach genutzte 90 bzw. 95 % Idee bereits eingepreist).
Leider ist die Scriptsprache für mich absolutes Neuland.
Könnt ihr mal drüber sehen, ob es Sinn ergibt?
Zur Erklärung:
Das Script ist Teil einer Rule für einen Schalten "PV-Laden".
Wenn dieser eingeschaltet wird erhält die Wallbox den Befehl das Laden sofort zu beginnen und dann das Script auszuführen.
PV_Laden_Amp_max ist ein errechneter Wert aus PV Produktion in Watt minus Hausverbrauch in Watt geteilt durch 232 Volt (damit habe ich die vielfach genutzte 90 bzw. 95 % Idee bereits eingepreist).
Code: Alles auswählen
var ampere = (PV_Laden_Amp_max.state as Number).floatValue //Verfügbare Ladeleistung in Ampere wird ermittelt.
var Timer tCharge = Null
rule "PV_Laden"
when
Item PV_Laden_Amp_max received update
then
if(ampere.intValue >= 6) //Bei Überschreiten der 6A Schwelle = Fortlaufendes Anpassen der Stromstärke zum Laden in vollen Ampere zwischen 6 und 16
{
if(ampere.intValue = 6)
{
Wallbox_Max_Amp.sendCommand(6)
}
else if(ampere.intValue > 16)
{
Wallbox_Max_Amp.sendCommand(16) //Bei mehr als 16 Ampere verfügbarer Leistung erfolgt Limit auf 16
}
else
{
Wallbox_Max_Amp.sendCommand(ampere.intValue) // Die jeweils verfügbare Ladeleistung wird eingestellt.
}
}
if(ampere.intValue < 6) //Wenn verfügbare Ampere kleiner 6 - Timer starten
{
if(tCharge === null)
{
tCharge = createTimer(now.plusMinutes(2), [ | // Erzeuge Abschlattimer
Wallbox_Forcestate.sendCommand(OFF)
tCharge = null
])
}
Wallbox_Max_Amp.sendCommand(6)
}
else if(ampere.intValue > 16)
{
Wallbox_Max_Amp.sendCommand(16)
tCharge?.cancel // laufenden Timer abbrechen
tCharge = null
}
else
{
Wallbox_Max_Amp.sendCommand(ampere.intValue)
tCharge?.cancel // laufenden Timer abbrechen
tCharge = null
}
end