Ankündigung

Einklappen
Keine Ankündigung bisher.

item wird nicht evaluiert

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

    item wird nicht evaluiert

    moinsen,
    ich versuche meine fenster etwas bessser auszuwerten.
    Code:
            [[[einige_gekippt]]]
            type = bool
            knx_dpt = 1
            knx_init = 7/0/21
            knx_listen = 7/0/21
            enforce_updates = true
    
            [[[einige_offen]]]
            type = bool
            knx_dpt = 1
            knx_send = 7/0/22
            knx_reply = 7/0/22
            eval = sh.fenster.eg.ew1_o() or sh.fenster.eg.ew2_o() or sh.fenster.eg.ew3_o() or sh.fenster.eg.ew4_o() or sh.fenster.eg.ew5_o() or sh.fenster.eg.ek1_o() or sh.fenster.eg.ek2_o() or sh.fenster.eg.et1_o() or sh.fenster.eg.ea1_o() or sh.fenster.eg.ea2_o()
            eval_trigger = fenster.eg.ew1_o | fenster.eg.ew2_o | fenster.eg.ew3_o | fenster.eg.ew4_o | fenster.eg.ew5_o | fenster.eg.ek1_o | fenster.eg.ek2_o | fenster.eg.et1_o | fenster.eg.ea1_o | fenster.eg.ea2_o
            enforce_updates = true
    
            [[[keine_offen_einige_gekippt]]]
            type = bool
            knx_dpt = 1
            knx_send = 7/0/23
            knx_reply = 7/0/23
    ***    eval = not sh.fenster.eg.einige_offen() and sh.fenster.eg.einige_gekippt()
    ***    eval_trigger = fenster.eg.einige_offen | fenster.eg.einige_gekippt
    mein problem ist das letzte und wichtigste item 'keine_offen_einige_gekippt'.
    Es wird überhaupt nicht evaluiert (lt. Log) wegen des 'and sh.fenster.eg.einige_gekippt()'
    Wenn ich das raus nehme, ist die Formel natürlich falsch aber es wird 1A evaluiert und berechnet.

    Hat jemand einen Hinweis?

    Und weiss jemand wie *genau* das enforce_updates zu verwenden ist? wenn ich raten sollte, dann ist das normale verhalten ohne enforce_updates, dass items ohne werte/nicht-initialisiert auch nichts antriggern. ist das alles oder steckt da mehr hinter?

    #2
    jemand irgendne Idee?

    Kommentar


      #3
      Also, enforce_updates=yes verwendest Du immer dann, wenn Du einen Trigger (bspw. für eine Logik) haben möchtest, obwohl der Wert des Items gleich beblieben ist.
      Bsp.: Item ist 1 und nun verändert isch von außen etwas was aber wieder zur 1 führen würde. Ohne enforce passiert nix, mit Enforce wird das Item gertriggert, es würde also bspw. eine Logik reagieren. Die Enforce_Updates oben bei Dir sind m.E. unnötig und bringen nix.
      Bei dem Item unten verstehe ich ehrlich gesagt nicht was Du da auswerten möchtest, aber M.E. macht das NOT die Schwierigkeiten bzw. geht nicht. Lässt sich aber m.E. einfach umgehen indem Du gegen 0/1 prüfst.

      Kommentar


        #4
        Ich denke man kann das nur bewerten, wenn Du erläuterst, welche Zustände Du über den Bus bekommst. Ich verstehe nicht ganz, warum Du bei "einige_gekippt" nur auf dem Bus hörst, während Du bei "einige_offen" logische Verknüpfungen über alle Fenster berechnest.
        Wenn Du für "einige_gekippt" keine Werte über den Bus bekommst, bleibt das Item immer 0. Dann ist auch Dein eval immer 0.

        Gruß Wolfram

        Kommentar


          #5
          Ich habe per binareingang logiken die Bedingung AlleVerschlossen per AND und EinigeGekippt per OR schön abbilden können. Diese funktionieren und haben die entsprechenden boolschen Werte auf dem Bus.
          allerdings haben die BEs nur 4 logiken, also kann ich nicht mehr abbilden.

          für die mdt led Anzeige will ich noch zwischen AlleVerschlossen=grün (bzw rot bei falsch) noch eine zwischenstufe :
          Falls kein einziges Fenster/Tür richtig auf ist (= weder verschlossen, noch gekippt) aber einige wenige gekippt, dann will ich das per Prioritätsobjekt als blau (in Ermangelung der Farbe gelb) angezeigt bekommen.

          macht das soweit Sinn?

          wieso jetzt mein NOT im eval irgendwie die Evaluierung verhindern kann, erschließt sich mir überhaupt gar nicht.....

          Kommentar


            #6
            habs gefunden, der eval_trigger war in manchen fällen ungültig, weil ich die 'sh.' variable verwendet habe.
            wurde leider auch nicht bemängelt, sondern manche items wurden einfach nicht evaluiert - jetzt ist alles chico

            Kommentar


              #7
              Hallo hotzen,

              du brauchst dein "eval" nicht so kompliziert zu machen. Wenn du für den Wert deines Items alle unter "eval_trigger" mit "oder" verknüpfen willst kannst du statt
              Code:
              eval = sh.fenster.eg.ew1_o() or sh.fenster.eg.ew2_o() or sh.fenster.eg.ew3_o() or sh.fenster.eg.ew4_o() or sh.fenster.eg.ew5_o() or sh.fenster.eg.ek1_o() or sh.fenster.eg.ek2_o() or sh.fenster.eg.et1_o() or sh.fenster.eg.ea1_o() or sh.fenster.eg.ea2_o()
              eval_trigger = fenster.eg.ew1_o | fenster.eg.ew2_o | fenster.eg.ew3_o | fenster.eg.ew4_o | fenster.eg.ew5_o | fenster.eg.ek1_o | fenster.eg.ek2_o | fenster.eg.et1_o | fenster.eg.ea1_o | fenster.eg.ea2_o
              auch einfach
              Code:
              eval = or
              eval_trigger = fenster.eg.ew1_o | fenster.eg.ew2_o | fenster.eg.ew3_o | fenster.eg.ew4_o | fenster.eg.ew5_o | fenster.eg.ek1_o | fenster.eg.ek2_o | fenster.eg.et1_o | fenster.eg.ea1_o | fenster.eg.ea2_o
              schreiben.

              Das ganze Funktioniert nicht nur mit "or", sondern auch mit "and" (Items mit "und" verknüpfen), "sum" (Summe der Werte), "avg" (Mittelwert der Werte) "min" (Kleinster Wert) und "max" (Größter Wert)

              Grüße
              offline

              Kommentar


                #8
                bedankt!

                Kommentar

                Lädt...
                X