Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

- √ - 0 or 0 ergibt 1 ???

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

    - √ - 0 or 0 ergibt 1 ???

    Schaut Euch mal die Zuweisung in Zeile 2 an - der Rest sorgt nur für die Textdarstellung im weboutput.
    Ich konnte es erst nicht glauben aber:

    (Name <-> "RadPumpe")
    [highlight=epc]
    if change(RadDGbuero_isHeizbedarf) or change(RadDGsued_isHeizbedarf) then {
    Name_isHeizbedarf = RadDGbuero_isHeizbedarf or RadDGsued_isHeizbedarf;
    txt@ = $Büro Heizbedarf: $ + convert(RadDGbuero_isHeizbedarf,$$) + $<br> Sued Heizbedarf: $ + convert(RadDGsued_isHeizbedarf,$$) + $<br>Ergebnis Heizbedarf: $ + convert(Name_isHeizbedarf,$$);
    weboutput(webOutTest,txt@);
    } endif;
    [/highlight]

    ergibt das als Screenshot beigefügte Ergebnis.

    Also AUS or AUS = EIN

    Umgekehrt wird dann "EIN or AUS" mit AUS ausgewertet - ich glaub' ich spinn'....

    Es scheint ein Seiteneffekt nach Änderung des Makros zu sein. Allerdings gibt es "Name_isHeizbedarf" exakt nur einmal links des "=". Es gibt definitiv keine weitere Zuweisung darauf - das war spontan die erste Fehlersuche...
    Angehängte Dateien

    #2
    Zitat von klaus_kraemer Beitrag anzeigen
    Es scheint ein Seiteneffekt nach Änderung des Makros zu sein. Allerdings gibt es "Name_isHeizbedarf" exakt nur einmal links des "=". Es gibt definitiv keine weitere Zuweisung darauf - das war spontan die erste Fehlersuche...
    Nun welcher "Seiteneffekt" des Makros das sein soll, bleibt so erst mal unerklärt.
    Das hier
    [highlight=epc]
    a=AUS
    b=AUS
    c=AUS
    if change(a) or change(b) then {
    c= a or b
    } endif
    [/highlight]
    funktioniert wie es soll.

    Das was Du hast, kann ich sehr einfach mit

    [highlight=epc]
    a=AUS
    b=AUS
    c=AUS
    if change(a) or change(b) then {
    c= a or b
    } endif
    if c then a=AUS endif
    [/highlight]
    nachbilden, wenn ich nun a auf EIN setze
    => change wird aktiv,
    => c wird auf EIN gesetzt
    => Im gleichen Zyklus wird noch a auf AUS gesetzt,
    => change(a) bekommt das aber nicht mit, da ja a "eben erst" geändert wurde
    => Das Ergebnis scheint falsch ist es aber nicht,
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      gelöst??

      Ich hab's jetzt erst einmal wieder im Griff:

      Ich habe
      [highlight=epc]
      Name_Hauptschalter = pGAraumHeizen or (pGAistTemp <= 8.0f16)
      Name_isHeizbedarf = ((pGAistTemp < pGAsollTemp) and Name_Hauptschalter) or (pGAistTemp <= 8.0f16)
      [/highlight]

      in den Heizventilmakros (habe zwei Typen Heizventile, deshalb...) ersetzt durch:

      [highlight=epc]
      Name_Hauptschalter = AUS
      Name_isHeizbedarf = AUS

      if change(pGAraumHeizen) or change(pGAistTemp) then {
      Name_Hauptschalter = pGAraumHeizen or (pGAistTemp <= 8.0f16);
      } endif

      if change(pGAistTemp) or change(Name_Hauptschalter) then {
      Name_isHeizbedarf = ((pGAistTemp < pGAsollTemp) and Name_Hauptschalter) or (pGAistTemp <= 8.0f16);
      } endif
      [/highlight]

      Nur kann ich den logischen Unterschied zwischen der kurzen und langen Programmierform nicht recht erkennen

      Kommentar


        #4
        Zitat von enertegus Beitrag anzeigen
        Nun welcher "Seiteneffekt" des Makros das sein soll, bleibt so erst mal unerklärt.
        Das hier
        [highlight=epc]
        a=AUS
        b=AUS
        c=AUS
        if change(a) or change(b) then {
        c= a or b
        } endif
        [/highlight]
        funktioniert wie es soll.

        Das was Du hast, kann ich sehr einfach mit

        [highlight=epc]
        a=AUS
        b=AUS
        c=AUS
        if change(a) or change(b) then {
        c= a or b
        } endif
        if c then a=AUS endif
        [/highlight]
        nachbilden, wenn ich nun a auf EIN setze
        => change wird aktiv,
        => c wird auf EIN gesetzt
        => Im gleichen Zyklus wird noch a auf AUS gesetzt,
        => change(a) bekommt das aber nicht mit, da ja a "eben erst" geändert wurde
        => Das Ergebnis scheint falsch ist es aber nicht,
        Das scheint auch mein Ergebnis zu sein - Mensch warst Du wieder einmal schnell!

        Danke!

        Kommentar

        Lädt...
        X