Aktualisiert – Dezember 29, 2022
Eine lastabhängige Schaltschwelle soll eine Überlastung der den Landstrom zuführenden Leitung vermeiden. Ausgehend von der maximal erlaubten Leistung, hier angenommene 3.100 W, sowie der maximalen ALDE Elektro-Heizleistung von 1.500 W (Stufe I -> 1.000 W, Stufe II -Y 500 W) ergeben sich rund 1.600 W Spielraum.
Das Programm:
Der Code:
real pwr = dom.GetObject("HG_LM_POWER").Value(); WriteLine("Pwr.");WriteLine(pwr);
var nicht_heizen = dom.GetObject("SV_IT").Value(); WriteLine("nicht_heizen");WriteLine(nicht_heizen);
if ((pwr > 1) && (pwr < 2201) && (nicht_heizen == false))
{
dom.GetObject("BidCos-RF.IEQ0101895:1.STATE").State(1);
dom.GetObject("BidCos-RF.IEQ0101895:2.STATE").State(1);
dom.GetObject("BidCos-RF.IEQ0101895:3.STATE").State(1);
dom.GetObject("BidCos-RF.SEQ3114635:1.STATE").State(1);
var P = "P > 1 < 2201"; dom.GetObject("Aktuelle_Last").State(P);WriteLine(P);
}
elseif ((pwr > 2200) && (pwr < 2601) && (nicht_heizen == false))
{
dom.GetObject("BidCos-RF.IEQ0101895:1.STATE").State(1);
dom.GetObject("BidCos-RF.IEQ0101895:2.STATE").State(1);
dom.GetObject("BidCos-RF.IEQ0101895:3.STATE").State(0);
dom.GetObject("BidCos-RF.SEQ3114635:1.STATE").State(1);
var P = "P > 2200 < 2601"; dom.GetObject("Aktuelle_Last").State(P);WriteLine(P);
}
elseif ((pwr > 2600) && (pwr < 2801) && (nicht_heizen == false))
{
dom.GetObject("BidCos-RF.IEQ0101895:1.STATE").State(1);
dom.GetObject("BidCos-RF.IEQ0101895:2.STATE").State(0);
dom.GetObject("BidCos-RF.IEQ0101895:3.STATE").State(1);
dom.GetObject("BidCos-RF.SEQ3114635:1.STATE").State(1);
var P = "P > 2600 < 2801"; dom.GetObject("Aktuelle_Last").State(P);WriteLine(P);
}
elseif ((pwr > 2800) && (pwr < 3101) && (nicht_heizen == false))
{
dom.GetObject("BidCos-RF.IEQ0101895:1.STATE").State(1);
dom.GetObject("BidCos-RF.IEQ0101895:2.STATE").State(0);
dom.GetObject("BidCos-RF.IEQ0101895:3.STATE").State(1);
dom.GetObject("BidCos-RF.SEQ3114635:1.STATE").State(0);
! var P = "P > 2800 < 3101"; dom.GetObject("Aktuelle_Last").State(P);WriteLine(P);
}
elseif (pwr > 3100)
{dom.GetObject("BidCos-RF.IEQ0101895:1.STATE").State(1);
dom.GetObject("BidCos-RF.IEQ0101895:2.STATE").State(0);
dom.GetObject("BidCos-RF.IEQ0101895:3.STATE").State(0);
dom.GetObject("BidCos-RF.SEQ3114635:1.STATE").State(0);
var P = "P > 3100"; dom.GetObject("Aktuelle_Last").State(P);WriteLine(P);
}
elseif (nicht_heizen == true)
{
dom.GetObject("BidCos-RF.IEQ0101895:1.STATE").State(0);
dom.GetObject("BidCos-RF.IEQ0101895:2.STATE").State(0);
dom.GetObject("BidCos-RF.IEQ0101895:3.STATE").State(0);
dom.GetObject("BidCos-RF.SEQ3114635:1.STATE").State(1);
}
Die Ausgabe des Skriptes (wenn die Zeilen WriteLine(" ... ")
nicht auskommentiert sind):
Pwr.
1882.919998
nicht_heizen
false
P > 1 < 2201
Das Skript wertet die Systemvariable HG_LM_POWER
aus dem vorhergehendem Skript, sowie den Status des die Heizungspumpe schaltenden Kanals 1 des Homematic 4-fach Relais-Moduls aus.
Ist ausreichend Leistungsreserve gegeben, z.B. kleiner 2.301 W, der Status der Pumpe 1
, mithin die Systemvariable nicht_heizen
= false
, dann werden lt. if
-Zweig Stufe I und II eingeschaltet.
Wird nun z.B. die Kaffeemaschine aktiviert, werden zusätzliche 800 W abgefordert. Aus der bisherigen Leistung von 2.131,7 W werden so 2.931,7 W.
Es greift in Folge der zweite elseif
-Zweig und Stufe I wird ausgeschaltet.
Ist die Kaffeemaschine wieder aus, reduziert sich der Leistungsbedarf auf das vorherige Niveau und Stufe I wird wieder eingeschaltet.
Analog arbeiten die übrigen Szenarien.