Ankündigung

Einklappen
Keine Ankündigung bisher.

Zaehlen wieviele Fenster geoeffnet sind

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

    Zaehlen wieviele Fenster geoeffnet sind

    Hallo EIBPC Gemeinde,

    ich habe ein Problem beim Feststellen wieviele Fenster in enem Raum, bzw im ganzen Haus geoeffnet sind.

    Die Gruppenaddressen werden noch richtig ausgewertet, aber die Variable

    openwindowbedroom1 (2 Fenster nach Norden) kommen immer auf andere Ergebnisse. Es sieht so aus, als wenn If Anweisung nicht richtig durchlaufen wird. Ich moechte die Anzahl der geoeffneten Fenster dann gerne auf eine Visu anzeigen.

    Hat jemand eine Idee was falsch laufen koennte?

    // Calculate Window openings
    // Masterbedroom Windows

    openwindowbedroom1 = 0
    openwindowbedroom1North = 0
    openwindowbedroom1West = 0


    if change("Window Reeder Master Bedroom North Right-10/1/0") or change("Window Reeder Master Bedroom North Left-10/1/1") then {
    openwindowbedroom1North = 0;
    if ("Window Reeder Master Bedroom North Right-10/1/0" == AUS) then {openwindowbedroom1North = openwindowbedroom1North + 1} endif;
    if ("Window Reeder Master Bedroom North Left-10/1/1" == AUS) then {openwindowbedroom1North = openwindowbedroom1North + 1} endif
    } endif

    if change("Window Reeder Master Bedroom West Right-10/1/2") or change("Window Reeder Master Bedroom West Left-10/1/3") then {
    openwindowbedroom1West = 0;
    if ("Window Reeder Master Bedroom West Right-10/1/2" == AUS) then {openwindowbedroom1West = openwindowbedroom1West + 1} endif;
    if ("Window Reeder Master Bedroom West Left-10/1/3" == AUS) then {openwindowbedroom1West = openwindowbedroom1West + 1} endif
    } endif

    if (openwindowbedroom1North > 0) or (openwindowbedroom1West > 0) or change("Windows Reeder Ensuite-10/1/5") or change("Window Reeder WC 1-10/1/4") then {
    openwindowbedroom1 = 0;
    if ("Windows Reeder Ensuite-10/1/5" == AUS) then {openwindowbedroom1 = openwindowbedroom1 + 1} endif;
    if ("Window Reeder WC 1-10/1/4" == AUS) then {openwindowbedroom1 = openwindowbedroom1 + 1} endif;
    openwindowbedroom1 = openwindowbedroom1 + openwindowbedroom1North + openwindowbedroom1West;
    write ("Window Reeder Master Bedroom All-10/0/1", openwindowbedroom1)
    } endif

    #2
    Zitat von holgerschuetz Beitrag anzeigen

    // Calculate Window openings
    // Masterbedroom Windows

    openwindowbedroom1 = 0
    openwindowbedroom1North = 0
    openwindowbedroom1West = 0


    if change("Window Reeder Master Bedroom North Right-10/1/0") or change("Window Reeder Master Bedroom North Left-10/1/1") then {
    openwindowbedroom1North = 0;
    if ("Window Reeder Master Bedroom North Right-10/1/0" == AUS) then {openwindowbedroom1North = openwindowbedroom1North + 1} endif;
    if ("Window Reeder Master Bedroom North Left-10/1/1" == AUS) then {openwindowbedroom1North = openwindowbedroom1North + 1} endif
    } endif
    Hi,

    Schau dir mal deine erste if change Anweisung an..
    Du setzt bei jeder Statusänderung auf 0 zurück !!
    Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

    Kommentar


      #3
      Zitat von Brick Beitrag anzeigen
      Hi,

      Schau dir mal deine erste if change Anweisung an..
      Du setzt bei jeder Statusänderung auf 0 zurück !!
      Hallo Brick,
      das ist richtig. Ich setzte jedesmal auf 0 zurueck um dann ueber die IF Anweisung die offenen Fenster zu berechnen. Es sieht aber so aus als wenn das Validierungsschema nicht immer durch die IF Anweisung laeuft und korrekt zaehlt.

      Hast Du einen Tipp wie ich so einen Zaehler realisieren koennte?

      Danke und Gruss
      Holger

      Kommentar


        #4
        So auf den ersten Blick finde ich da jetzt keinen Fehler, aber das Validierungsschema ist immer wieder mal für Überraschungen gut...
        Aber man kann die Sache durchaus einfacher ausdrücken:

        if (BNR-10/1/0 == AUS) then { owbnr = 1 } else { owbnr = 0 } endif
        if (BNL-10/1/1 == AUS) then { owbnl = 1 } else { owbnl = 0 } endif
        owbn = owbnr + owbnl
        if (BWR-10/1/2 == AUS) then { owbwr = 1 } else { owbwr = 0 } endif
        if (BWL-10/1/3 == AUS) then { owbwl = 1 } else { owbwl = 0 } endif
        owbw = owbwr + owbwl
        ...
        owb = owbn + owbr
        ...

        Kurz, nur ein if-then-else und eine Hilfs-Variable pro Fenster (die dann nur 0 oder 1 sein wird), und die beliebigen Summen (entsprechend der gewünschten Gruppen) werden einfach außerhalb jeglicher if-Konstrukte und von diesen unabhängig mit ganz normalen mathematischen Ausdrücken ermittelt. Denn auch diese werden vom Validierungsschema immer dann erneut ausgewertet, sobald sich wenigstens ein Argument geändert hat. Ich halte das für übersichtlicher, da zunächst jedes Fenster unabhängig "erfasst" wird, die Gruppierung dann über einfach verständliche Rechnungen erfolgen.

        Es ginge sogar ganz ohne if, denn letzlich ist AUS=0 und EIN=1, und man könnte die Werte der GAs in den Wertebereich der Summenvariablen konvertieren, aber mit if ist es wohl verständlicher.
        Tessi

        Kommentar


          #5
          Funktioniert super

          Hallo Tessi,
          das funktioniert super so. Vielen Dank fuer den Tip. Ich glaube ich habe das mit dem Validierungsschema wohl noch nicht ganz verstanden.

          Danke.
          Gruss
          Holger

          Zitat von Tessi Beitrag anzeigen
          So auf den ersten Blick finde ich da jetzt keinen Fehler, aber das Validierungsschema ist immer wieder mal für Überraschungen gut...
          Aber man kann die Sache durchaus einfacher ausdrücken:

          if (BNR-10/1/0 == AUS) then { owbnr = 1 } else { owbnr = 0 } endif
          if (BNL-10/1/1 == AUS) then { owbnl = 1 } else { owbnl = 0 } endif
          owbn = owbnr + owbnl
          if (BWR-10/1/2 == AUS) then { owbwr = 1 } else { owbwr = 0 } endif
          if (BWL-10/1/3 == AUS) then { owbwl = 1 } else { owbwl = 0 } endif
          owbw = owbwr + owbwl
          ...
          owb = owbn + owbr
          ...

          Kurz, nur ein if-then-else und eine Hilfs-Variable pro Fenster (die dann nur 0 oder 1 sein wird), und die beliebigen Summen (entsprechend der gewünschten Gruppen) werden einfach außerhalb jeglicher if-Konstrukte und von diesen unabhängig mit ganz normalen mathematischen Ausdrücken ermittelt. Denn auch diese werden vom Validierungsschema immer dann erneut ausgewertet, sobald sich wenigstens ein Argument geändert hat. Ich halte das für übersichtlicher, da zunächst jedes Fenster unabhängig "erfasst" wird, die Gruppierung dann über einfach verständliche Rechnungen erfolgen.

          Es ginge sogar ganz ohne if, denn letzlich ist AUS=0 und EIN=1, und man könnte die Werte der GAs in den Wertebereich der Summenvariablen konvertieren, aber mit if ist es wohl verständlicher.

          Kommentar


            #6
            Zitat von holgerschuetz Beitrag anzeigen
            das funktioniert super so
            Danke für die Rückmeldung.

            Zitat von holgerschuetz Beitrag anzeigen
            Ich glaube ich habe das mit dem Validierungsschema wohl noch nicht ganz verstanden.
            Das Gefühl haben wohl viele Anwender, vor allem am Anfang. Man muss halt gegenüber anderen Programmiersprachen etwas umdenken. Das lernt man aber mit der Zeit.
            Tessi

            Kommentar

            Lädt...
            X