FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Fuchsbau am 16 November 2019, 13:13:17

Titel: Perlanfängerproblem mit If elsif else
Beitrag von: Fuchsbau am 16 November 2019, 13:13:17
Hallo

versuche für meinen Windsensor die Windgeschwindigkeit(in m/s) als Windstärke (Beaufort) auszugeben.
Dafür habe ich die Funktion sub GetBeaufort($) in die 99_myUtils.pm eingefügt.

sub GetBeaufort($) {
  my ($Speed) = @_;
  my $ret=99;
     if ($Speed < 0.5) {
  $ret=0;
  } elsif ($Speed >= 0.51 or $Speed < 2.06){
  $ret=1;
  } elsif ($Speed >= 2.06 or $Speed < 3.6){
  $ret=2;
  } elsif ($Speed >= 3.6 or $Speed < 5.66){
  $ret=3;
  } elsif ($Speed >= 5.66 or $Speed < 8.23){
  $ret=4;
  } elsif ($Speed >= 8.23 or $Speed < 11.23){
  $ret=5;
  } elsif ($Speed >= 11.23 or $Speed < 14.4){
  $ret=6;
  } elsif ($Speed >= 14.4 or $Speed < 17.49){
  $ret=7;
  } elsif ($Speed >= 17.49 or $Speed < 21.09){
  $ret=8;
  } elsif ($Speed >= 21.09 or $Speed < 24.69){
  $ret=9;
  } elsif ($Speed >= 24.69 or $Speed < 28.81){
  $ret=10;
  } elsif ($Speed >= 28.81 or $Speed < 32.92){
  $ret=11;
  } else {
  $ret=12;
  }
return $ret;
}


Leider funktioniert es nicht so wie ich es erwarte. Es soll, je nach Windgeschwindigkeit, die Windstärke zurückgegeben werden. Unter 0.5 Windgeschwindigkeit  wird "0" richtig zurückgegeben. Über 0.5 wird "1" zurückgegeben. Egal wie hoch der Wert über 0.5 m/s Windgeschwindigkeit ist es wird immer "1" zurückgegeben.

Was mache ich falsch?
Titel: Antw:Perlanfängerproblem mit If elsif else
Beitrag von: CoolTux am 16 November 2019, 13:18:45
Auf die schnelle geschaut.

Mach mal aus Deinen or ein and
Titel: Antw:Perlanfängerproblem mit If elsif else
Beitrag von: Fuchsbau am 16 November 2019, 21:25:08
Jo, das wars. Danke :)