Script Fehler bei Füllstandserrechnung

Guten Morgen,

ich habe mir ein Script erstellt, das mir den aktuellen Füllstand in Prozent anzeigen soll.
Dazu hab ich eine Integer Variable angelegt mit den dazugehörigen Daten:

Folgendes Script benutze ich zum Ausrechnen, bzw. zum zuordnen der Werte die ich mir aus einer Variable abhole:


$Status = GetValueFloat (16119);

//Zuorden 

if ( $Status < 100) // Kleiner als 100
          SetValue(50332, 0);

elseif ( $Status > 100 )  
          SetValue(50332, 100);

elseif ( $Status >= 150) 
          SetValue(50332, 150);

elseif ( $Status >= 200) 
          SetValue(50332, 200);

elseif ( $Status >= 250) 
          SetValue(50332, 250);

elseif ( $Status >= 300) 
          SetValue(50332, 300);

elseif ( $Status >= 350) 
          SetValue(50332, 350);

elseif ( $Status >= 400) 
          SetValue(50332, 400);

elseif ( $Status >= 450) 
          SetValue(50332, 450);

elseif ( $Status >= 500) 
          SetValue(50332, 500);

elseif ( $Status >= 550) 
          SetValue(50332, 550);

elseif ( $Status >= 600) 
          SetValue(50332, 600);

elseif ( $Status >= 650) 
          SetValue(50332, 650);

elseif ( $Status >= 700) 
          SetValue(50332, 700);

elseif ( $Status >= 750) 
          SetValue(50332, 750);

elseif ( $Status >= 800) 
          SetValue(50332, 800);

elseif ( $Status >= 850) 
          SetValue(50332, 850);

elseif ( $Status >= 900) 
          SetValue(50332, 900);

elseif ( $Status <= 950) 
          SetValue(50332, 1000);

Mein Proplem ist:

Das ich immer 100 Prozent habe, obwohl die Quellvariable


$Status = GetValueFloat (16119);

sich Värandert. Das heisst, wenn die Regenwasserzisterne voll ist, ist der Wert " grösser als 100 " aktuell ist der Wert " grösser als 400 " zeigt aber immer noch 100 Prozent an :cool:
Sollte aber bei 60 Prozent sein ( Bei Wert 400 )

Was ist der Fehler im Script?
Fehlermeldung bekomm ich keine!

Danke

Hallo Michl,

der Pfad trifft immer zu, wenn der Wert größer 100 ist. Damit werden die anderen „elseif“ nicht mehr betrachtet.

elseif ( $Status > 100 )  
          SetValue(50332, 100);

Möglich wäre:

elseif ( $Status > 100 && $Status < 150)  
          SetValue(50332, 100);

elseif ( $Status >= 150 && $Status < 200) 
          SetValue(50332, 150); 

Attain

Hallo,
du musst die Abfragereihenfolge umdrehen oder beide Grenzwerte abfragen (>= und <=)
400 ist größer als 100, also kommt in deinem Code immer die 2. Abfrage zum Zug.


if ( $Status < 100) // Kleiner als 100
          SetValue(50332, 0);

elseif ( $Status >= 1000) 
          SetValue(50332, 1000); 

elseif ( $Status >= 950) 
          SetValue(50332, 950); 

elseif ( $Status >= 900) 
          SetValue(50332, 900);
.....

lg
Wolfgang

Vielen Dank für die rasche Hilfe :slight_smile: