Ankündigung

Einklappen
Keine Ankündigung bisher.

Warum wird das THEN nicht ausgeführt?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [Codebeispiel] Warum wird das THEN nicht ausgeführt?

    Irgendwie steh ich grad auf dem Schlauch....

    Die Zeile
    Code:
    if change(azimuth()) then pdisplay(3, round(azimuth(),0, AUS) + $° = $ + Himmelsrichtung, WIND, INACTIVE, GREEN, 10) endif
    schreibt wie erwartet den Sonnenwinkel in den Webserver. Soweit nicht spannend.

    Die Zeile
    Code:
    if change(azimuth()) [COLOR=#FF0000][U][B]or LOS[/B][/U][/COLOR] then pdisplay(3, round(azimuth(),0, AUS) + $° = $ + Himmelsrichtung, WIND, INACTIVE, GREEN, 10) endif
    schreibt den Wert aber nur genau EINMAL in den Webserver beim Start, danach werden keinerlei Änderungen übertragen.

    "LOS" ist eine Variable, die nach Systemstart auf EIN geht. Bei einer ODER Verknüpfung sollte aber egal sein, was in LOS steht. Wenn sich azimuth() ändert, müsst was passieren. Und es liegt nicht an azimuth(). Das Beispiel funktioniert, oder eben nicht, auch mit elevation(), settime(), setdate() etc.

    Sobald das "or LOS" drin ist geht es nicht mehr.

    Vermutlich steh ich wie geasagt nur auf dem Schlauch, aber ich komm nicht drauf.

    Danke!
    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

    #2
    Hi Uwe,
    ich kenne zwar den eibpc nicht, aber dein Problem hast du auch bei KNX, konzeptionell bei Systemen, die Nachrichten versenden.
    Für mich sieht deine Beschreibung so aus, als wenn das if nur dann ausgewertet wird, wenn die Bedingung ihren Zustand ändert.
    Und in dem Fall mit OR ändert die Bedingung den Zustand nicht, sie bleibt wahr.
    Bei KNX OR kannst du normalerweise sagen, ob das Protokoll gesendet werden soll, wenn sich der Ausgang ändert oder einer der Eingänge.
    Gibt es vielleicht eine Alternative OR-Funktion, die bei der Änderung von einem Parameter schon das if "triggert"?
    Wie gesagt, ich kenne den eibpc nicht, aber ich würde ihn diese Richtung suchen.

    Gruß Waldemar
    ​​​
    OpenKNX www.openknx.de

    Kommentar


      #3
      Danke, das war der Schlauch!

      Klar, EibPC hat sog. Validierungsschema. Nur "ungültige Ausdrücke" werden neu ausgewertet. Mein LOS bleibt immer auf EIN und damit der Ausdruck immer wahr und ändert sich nie. Ich muss das LOS natürlich wieder zurücksetzen. OMG, peinlich!

      Manchmal hat man echt ein Brett vorm Kopf....

      PS:
      ich hab die Teile immer nur einzeln betrachtet und nicht als Gesamtausdruck
      ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

      Kommentar


        #4
        Freut mich, dass ich trotz "Unwissen" helfen konnte... hatte schon befürchtet, dass es hier Antworten eher in die Richtung "Der weiß ja nicht, wovon er redet, wollte nur seinen Beitragscounter erhöhen" geben würde. Für mich sah das eben wie ein konzeptionelles Problem aus (da ich davon ausging, dass ein if ... then beim eibpc schon an sich funktionieren würde).

        Einen schönen Sonntag noch,
        Gruß, Waldemar
        OpenKNX www.openknx.de

        Kommentar


          #5
          Danke Uwe ich hatte das gleiche Brett vor dem Kopf und ist somit auch gelöst.
          Über einen Taster pbutton soll beim drücken abwechselnd entweder ein Timer bei 0 sec starten und eine Variable (in meinem Code noch pdisplay) im 3 min ein- und 6

          Kommentar

          Lädt...
          X