Ankündigung

Einklappen
Keine Ankündigung bisher.

Zaehlen wieviele Fenster geoeffnet sind

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

  • Tessi
    antwortet
    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.

    Einen Kommentar schreiben:


  • holgerschuetz
    antwortet
    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.

    Einen Kommentar schreiben:


  • Tessi
    antwortet
    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.

    Einen Kommentar schreiben:


  • holgerschuetz
    antwortet
    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

    Einen Kommentar schreiben:


  • Brick
    antwortet
    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 !!

    Einen Kommentar schreiben:


  • holgerschuetz
    hat ein Thema erstellt Zaehlen wieviele Fenster geoeffnet sind.

    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
Lädt...
X