ich habe einen Aktor der im Grenzbereich hängt und nicht immer Befehle annimmt. Meine Gartenbewässerung sollte aber schon immer angehen. Kann man mit einer while Schleife nicht den Status des Aktors abfragen und solange der 0 ist soll er es immer wieder versuchen?!?
Mein aktuelles Skript sieht so aus:
Code: Alles auswählen
!Skript zur Steuerung der Gartenbewässerung.
var W_Regenmenge = dom.GetObject("W_Regenmenge").State();
var W_Tage_ohne_Regen = dom.GetObject("W_Tage_ohne_Regen").State();
integer W_TempDayHigh = dom.GetObject("W_TempDayHigh").State();
!Setzen des Variablen für die letzte Bewässerung
var obj = dom.GetObject("Letzte_Bewaesserung");
string datzeit = system.Date("%d.%m.%Y %T");
if (W_TempDayHigh < 20)
{
WriteLine("Die Bewässerung soll 30 Minuten dauern");
dom.GetObject("Zeit_Bewaesserung").State(1800);
obj.State(datzeit);
}
if ((W_TempDayHigh > 20) && (W_TempDayHigh < 25))
{
WriteLine("Die Bewässerung soll 40 Minuten dauern");
dom.GetObject("Zeit_Bewaesserung").State(2400);
obj.State(datzeit);
}
if ((W_Tage_ohne_Regen <= 2) && (W_TempDayHigh >= 25))
{
WriteLine("Die Bewässerung soll 50 Minuten dauern");
dom.GetObject("Zeit_Bewaesserung").State(3000);
obj.State(datzeit);
}
if ((W_Tage_ohne_Regen > 2) && (W_TempDayHigh >= 25))
{
WriteLine("Die Bewässerung soll 60 Minuten dauern");
dom.GetObject("Zeit_Bewaesserung").State(3600);
obj.State(datzeit);
}
if (dom.GetObject("Zeit_Bewaesserung").State() > 0)
{
!Einschalten der Bewässerung wenn erforderlich
!Setzen der Einschaltdauer für den Aktor
dom.GetObject("BidCos-RF.MEQ1711606:1.ON_TIME").State(dom.GetObject("Zeit_Bewaesserung").State());
!Einschalten der Bewässerung:
dom.GetObject("BidCos-RF.MEQ1711606:1.STATE").State(1);
}
Kann man das irgendwie so lösen? Nur leider funktioniert das nciht.
Code: Alles auswählen
if (dom.GetObject("Zeit_Bewaesserung").State() > 0)
{
while (dom.GetObject("BidCos-RF.MEQ1711606:1.STATE").State() = 0)
{
!Einschalten der Bewässerung wenn erforderlich
!Setzen der Einschaltdauer für den Aktor
dom.GetObject("BidCos-RF.MEQ1711606:1.ON_TIME").State(dom.GetObject("Zeit_Bewaesserung").State());
!Einschalten der Bewässerung:
dom.GetObject("BidCos-RF.MEQ1711606:1.STATE").State(1);
}
}
Vielen Dank für die Hilfe!