Folgende Funktionalitäten bietet das Skript:
- Individuelle Zeit je Bewässerungskreis
- Der Ausschaltbefehl für das Ventil wird zusammen mit dem Einschaltbefehl gesendet. Das Ventil schaltet also immer selbständig ab. Kommunikationsstörungen richten keinen Schaden an.
Code: Alles auswählen
var sv=dom.GetObject(ID_SYSTEM_VARIABLES).Get("Bewässerungszeiten");
sv.State("300,330,360,300,420,300");
Code: Alles auswählen
! Konfiguration
! Sekunden zwischen den Bewässerungskreisen
integer pauseTime=120;
! Schaltkanal mit Ventil
var valveState=(dom.GetObject(ID_CHANNELS).Get("Bewässerungsventil")).DPByHssDP("STATE");
var valveOnTime=(dom.GetObject(ID_CHANNELS).Get("Bewässerungsventil")).DPByHssDP("ON_TIME");
! Zeichenkettensystemvariable mit den Bewässerungszeiten in Sekunden kommasepariert
var wateringDurations=dom.GetObject(ID_SYSTEM_VARIABLES).Get("Bewässerungszeiten").Value();
! Für Tests
! WriteLine(valveState);
! WriteLine(valveOnTime);
! WriteLine(wateringDurations);
! Zeitplan erstellen
integer plannedTime=0;
string wateringDurationStr;
foreach(wateringDurationStr, wateringDurations.Split(",")) {
integer wateringDuration=wateringDurationStr.ToInteger();
! Für Tests
! WriteLine("Planzeit: " # plannedTime);
! WriteLine("Dauer: " # wateringDuration);
valveOnTime.State(wateringDuration, plannedTime*1000, false);
plannedTime=plannedTime+1;
valveState.State(true, plannedTime*1000, false);
plannedTime=plannedTime+wateringDuration+pauseTime;
}
Für ein Abbruch des Bewässerungszyklus ist die Option "Vor dem Ausführen alle laufenden Verzögerungen für diese Aktivitäten beenden (z.B. Retriggern)." zu aktivieren und das Bewässerungsventil auf "Schaltzustand: Aus" zu setzen. An dem Wasserverteiler können auch Ausgänge übersprungen werden (Hebel umlegen). Dann muss die Anzahl der Einträge in der Systemvariable "Bewässerungszeiten" entsprechend reduziert werden.
Das Ergbnis sieht dann so aus:
Quiz: Eine ähnliche Funktionalität ist auch ohne ein einziges Skript in einem einzigen CCU-Programm möglich. Wie sieht dann das CCU-Programm aus?