Ankündigung

Einklappen
Keine Ankündigung bisher.

eval und eval_trigger mit 'or'

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

    [callidomus] eval und eval_trigger mit 'or'

    Hallo Kollegen,

    ich versuche gerade nach und nach meine Items zu übersetzen. Ich mache das deshalb händisch, weil ich eine bessere Kontrolle darüber haben möchte, was ich bereits mit callidomus mache und was noch mit smarthome.py.

    Bei folgendem Item aus smarthome.py klappt das leider nicht:
    Code:
                    [[[[[sperre]]]]]
                        type=bool
                        knx_dpt=1
                        knx_send=7/2/152
                        knx_cache=7/2/152
                        eval = or
                        eval_trigger = eg.essen.terrassentuer.handle.status
    Bisher war es so, dass dieses Item 'wahr' war, wenn entweder 'true' über KNX empfangen wurde oder das unter eval_trigger angegebene Item 'eg.essen.terrassentuer.handle.status' gesetzt war. Ich habe in callidomus das nun so verstanden, dass ich das eval_trigger Item unter 'Abhängigkeiten' eintrage und 'eval' unter 'Codeblock' (siehe Anhang). Das klappt aber nicht und gibt folgenden Fehler im Log (siehe ebenfalls Anhang, da man in der Visu nicht markieren kann ).

    Ist das ein Fehler oder mach ich was falsch?
    You do not have permission to view this gallery.
    This gallery has 2 photos.
    Mit freundlichen Grüßen
    Niko Will

    Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
    - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

    #2
    Hi Niko,

    da hab ich gleich mehrere Anmerkungen...
    1. Bist Du auf stable? Versuch mal testing, ich meine mich zu erinnern, dass es da einen Bug gab, den Marcus in testing gefixt hat (ist wohl dann noch nicht in stable). Ich habe auf jeden Fall schon OR bei mir verwendet, ohne diesen Fehler zu haben.
    2. Bist Du sicher, dass das in sh.py so funktioniert hat, wie Du es beschreibst? Ich meine, das or wurde auch da schon auf Listen von eval_trigger angewendet, aber nicht auf Trigger von anderen Quellen (wie KNX, 1Wire, network etc.) Was ich sagen will: Wenn es so funtkioniert, wie Du es sagst, dann würde OR meinen, wenn 7/2/152 false wird und eg.essen.terrassentür.handle.status = true, dann bleibt das Item auf true? Hab ich so nicht ausprobiert, glaub ich aber nicht...
    3. Im obigen Falle würde eval = value (bzw. code = value in callidomus) besser passen. Sagt nichts anderes als "übernimm den letzten Trigger-Wert, egal woher er kommt).
    4. Or funktioniert in callidomus (und in sh.py) meiner Meinung nach folgendermaßen: Wenn ich eine trigger-Liste habe (trigger = ItemA | ItemB | ItemC), dann bleibt das Item so lange true, wie eines der ItemA, ItemB, ItemC true ist.
    Falls Du aber mit Deiner Interpretation von OR recht hast, würde das durchaus neue Möglichkeiten eröffnen... Insofern muss letztendlich Marcus sagen, wie das zu interpretieren ist...

    Gruß, Waldemar
    OpenKNX www.openknx.de

    Kommentar


      #3
      Hi Waldemar,

      Okay, ich muss mich glaub korrigieren. Wenn das Item per KNX auf false gesetzt wird, dann ist es auch false, selbst wenn handle.status true wäre. Wird handle.status danach auf false und zurück auf true geändert, nimmt auch sperre wieder true an. Das handle.status Item ist ein enOcean Item das den Türgriff Status anzeigt. Sperre ist dann das eigentliche KNX Item, das den Jalousiekanal sperrt. Das funktioniert soweit in smarthome.py. Eine Logik gibt es nicht, die Sperre schalten würde.
      Mit freundlichen Grüßen
      Niko Will

      Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
      - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

      Kommentar


        #4
        Hi Niko,

        dann passt es ja. Ich bilde mir ein, sh.py recht gut verstanden zu haben und war nur überrascht, das da mehr gehen sollte. Aber dem ist nicht so, was auch ok ist.

        Mögliche Lösungen zu Deinem Problem:
        • Du versuchst es mit code = value statt code = or
        • Du gehst auf den testing branch
        • Du lässt es so, da es nur eine Warnung ist (falls es trotzdem funktioniert)
        Wie gesagt, ich glaube, Marcus war da schon dran.

        Gruß, Waldemar

        OpenKNX www.openknx.de

        Kommentar


          #5
          verdammt, Kommando zurück. Ich hatte einen Schreibfehler in der Abhängigkeit bzw. eine Ebene vergessen die ich in callidomus eingebaut habe aber vorher in smarthome.py nicht hatte. Nun funktioniert es mit 'or'. An der Stelle fehlen wohl noch die Autovervollständigungen beim Eingeben der Abhängigkeiten
          Alternativ wäre es schön, wenn bei einem Item der komplette Item Pfad noch irgendwo angezeigt werden würde, so könnte man ihn sich wenigstens von da kopieren (aber wenn dann bitte in einem Textfeld, das man auch kopieren kann).

          EDIT: gibt es die Möglichkeit nicht mehr, Threads als gelöst zu markieren oder finde ich diese nur nicht mehr?
          Mit freundlichen Grüßen
          Niko Will

          Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
          - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

          Kommentar


            #6
            Hi,
            was ich noch nicht verstanden habe was ein or mit nur einer Abhängigkeit machen kann. Für mich ist OR ein opperator mit zwei opperanden.
            VG
            Jürgen

            Kommentar


              #7
              Das war mir auch nicht mehr klar, als ich das wieder in meiner Item Konfiguration entdeckt habe. Aber ohne das 'or' wird der Wert der Abhängigkeit nicht übernommen. Eventuell würde hier auch 'value' reichen.
              Mit freundlichen Grüßen
              Niko Will

              Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
              - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

              Kommentar


                #8
                Hi,
                or mit einem operanden ist die Identität. Und das ist gleich value.
                Gruß Waldemar
                OpenKNX www.openknx.de

                Kommentar


                  #9
                  Hallo,

                  Zitat von mumpf Beitrag anzeigen
                  or mit einem operanden ist die Identität. Und das ist gleich value.
                  nicht ganz, or ist eine logische (boolsche) Verknüpfung der Abhängigkeiten. Ein einfaches value verhält sich anders.

                  Das würde in dem Fall bedeuten, Sperre wird nur True wenn der Status True ist, ansonsten False. Der KNX teil wird ignoriert.
                  Bei value wird Sperre True wenn der Status True ist oder per KNX ein True reinkommt.

                  Bis bald

                  Marcus

                  Kommentar


                    #10
                    Zitat von callidomus Beitrag anzeigen
                    Das würde in dem Fall bedeuten, Sperre wird nur True wenn der Status True ist, ansonsten False. Der KNX teil wird ignoriert.
                    Dann ist es ein Bug. Ich habe derzeit 'or' drin stehen und der KNX Teil wird nicht ignoriert. Also derzeit funktioniert es, wie ich es haben will, aber wohl nicht wie es soll laut deiner Beschreibung

                    Mit freundlichen Grüßen
                    Niko Will

                    Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                    - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                    Kommentar


                      #11
                      Hi Niko,

                      kannst Du bitte dazu einen Logabschnitt posten?

                      Danke und bis bald

                      Marcus

                      Kommentar


                        #12
                        Hi Marcus,

                        du hast recht, mea culpa.
                        Ich hab zwischendrin wohl mal mit 'value' getestet, als ich noch die falsche Abhängigkeit drin hatte, da hat dann wahrscheinlich der KNX Teil funktioniert.

                        Jetzt mit 'or' tut er das nicht mehr, wie du gesagt hast. Ist mir aber auch erst aufgefallen, als ich das für den Log Output nachstellen wollte. Sollte ich in Zukunft vielleicht immer vorher so machen.
                        Mit freundlichen Grüßen
                        Niko Will

                        Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                        - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                        Kommentar


                          #13
                          Zitat von callidomus Beitrag anzeigen
                          nicht ganz, or ist eine logische (boolsche) Verknüpfung der Abhängigkeiten. Ein einfaches value verhält sich anders.
                          Und wieder was gelernt, Danke Marcus!

                          Gruß, Waldemar
                          OpenKNX www.openknx.de

                          Kommentar

                          Lädt...
                          X