Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Logik-Fehler in Plugin für Rolladensteuerung

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] - √ - Logik-Fehler in Plugin für Rolladensteuerung

    Hallo zusammen,

    ich habe einen ganz komischen Fall, den ich mit nach Stunden rumprobieren immer noch nicht erklären kann.

    Es geht um folgenden Code:
    Code:
    if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $GA_Gesamt_SperreAuto) {
     #Sperrkennzeichen setzen, wenn Telegramm eintrifft
     $plugin_info{$plugname.'_sperre'} = knx_read($GA_Gesamt_SperreAuto,0,1);
     # Teste ob während der Sperre Abend- oder Morgendämmerung gewesen ist
     my $testAbendDaemmerung = ($elevation < $AbendDaemmerung && $lastElevation > $AbendDaemmerung) || 0;
     my $testMorgenDaemmerung = ($elevation > $MorgenDaemmerung && $lastElevation < $MorgenDaemmerung) || 0; 
     plugin_log($plugname,"Morgendämmerung neu - " . $testMorgenDaemmerung);
    }
    plugin_log($plugname,"Morgendämmerung 1 - " . $testMorgenDaemmerung);

    Das Log gibt folgendes aus:
    2011-11-26 09:22:57.980,Rolladenautomatik.pl,Morgendämmerung neu - 1
    2011-11-26 09:22:57.981,Rolladenautomatik.pl,Morgendämmerung 1 - 0

    Es kann doch nicht sein, daß die Variable $testMorgenDaemmerung ohne ein Stück Code von 1 auf 0 springt?

    Habt ihr einen Tipp für mich?

    Danke
    Sascha

    #2
    Schreib mal das
    my $testMorgenDaemmerung;
    vor die if-Clause und lass das my innen drinnen weg, Du wirst nämlich vermutlich über den Scope der Variablen stolpern...
    TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

    Kommentar


      #3
      Danke Chris!

      Du bis mein Held des Tages! Das war der Fehler...

      Kommentar


        #4
        Hi,

        doch, kann sein - ist sogar so! Du definierst
        Code:
         
        my $testMorgenDaemmerung = ($elevation > $MorgenDaemmerung && $lastElevation < $MorgenDaemmerung) || 0;
        in dem if-Block darüber, damit ist meiner Meinung nach die Variable nach der geschweiften Klammer zu nicht mehr definiert. Warum sie 0 ist, weiss ich allerdings nicht.

        Also einfach
        Code:
        my $testMorgenDaemmerung = 0;
        vor dem if.

        Gruß, Waldemar
        OpenKNX www.openknx.de

        Kommentar


          #5
          Mensch, ich war zu langsam...
          OpenKNX www.openknx.de

          Kommentar

          Lädt...
          X