Ankündigung

Einklappen
Keine Ankündigung bisher.

Codeblock Beispiel

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

    [callidomus] Codeblock Beispiel

    Hallo,

    mit dem Abhängigkeiten + Codeblock hab ich noch so meine Verständnisschwierigkeiten.

    Ich möchte Folgendes erreichen:

    Ich habe einen Funk-Fenstergriff mit 2 KNX DPT1 Objekten in callidomus konfiguriert:

    Code:
    first_floor.living.door_terrasse_garden_handle.handle1 = True/False
    first_floor.living.door_terrasse_garden_handle.handle2 = True/False
    Da drüber habe ich ein Komplex-Item

    Abhängigkeiten: handle1 | handle2
    Codeblock: sum (int(handle1) + int(handle2))

    Per CLI habe ich bereits getestet, dass die beiden Child-Items die korrekten Werte anzeigen wenn sich der Status ändert.

    Das Komplex-Item hat aber immer folgenden Wert der sich nicht ändert:
    Code:
    first_floor.living.door_terrasse_garden_handle = 0.0;0.0
    Meine Erwartung wäre das dieses Item abhängig von den beiden Childs die Werte 0, 1 oder 2 hat.

    Was mache ich falsch ?

    Danke vorab.
    sigpic
    Christian Huck
    Tel.: 089 / 122 80 995
    Email: mail@homeintelligence.de
    Web: www.homeintelligence.de

    #2
    Hi Christian,

    Komplex-Items sind speziell! Soweit ich mich an die Definition erinnere, steht da, dass das Item IMMER eine Liste der Werte der Items enthält, die als Abhängigkeiten definiert sind. Eigentlich sind Komplex-Items hauptsächlich für das UI gedacht, um einfache Widget-Definition zu ermöglichen. Dass heißt anders rum, dass eval hier nicht funktioniert.

    Du willst aber auch was anderes, Du sagst es selbst: Du erwartest die Werte 0, 1 oder 2. Also muss der Typ des Items num sein. Dann wird der eval auch aufgerufen. In den Abhängigkeiten musst Du dann aber eine andere Notation verwenden. Du musst den vollen Pfad schreiben:
    Code:
     
     first_floor.living.door_terrasse_garden_handle.handle1 | first_floor.living.door_terrasse_garden_handle.handle2
    Gruß, Waldemar

    OpenKNX www.openknx.de

    Kommentar


      #3
      Hi,
      so wie ich das sehe sollte dein root item
      first_floor.living.door_terrasse_garden_handle vom Type num sein sonnst kanst du nicht dem diese Berechnungsergebniss sinnvoll zuweisen. Dann must du aber auch bei abhängigkeiten den vollen Item namen eintragen
      Code:
      first_floor.living.door_terrasse_garden_handle.handle1 | first_floor.living.door_terrasse_garden_handle.handle2
      im Codeblock brauchst du auch lange Item namen.

      Viele Grüsse
      Jürgen

      Kommentar


        #4
        Hi,

        sorry, Jürgen hat recht, der Codeblock muss folgendermaßen aussehen:
        Code:
         
         int(first_floor.living.door_terrasse_garden_handle.handle1) + int(first_floor.living.door_terrasse_garden_handle.handle2)
        oder einfach nur
        Code:
        sum
        Gruß, Waldemar
        OpenKNX www.openknx.de

        Kommentar


          #5
          Hallo,

          ich bin auch für

          Code:
          sum
          Alternativ (mit cd) am Anfang:
          Code:
          int(cd.first_floor.living.door_terrasse_garden_handle.handle1()) + int(cd.first_floor.living.door_terrasse_garden_handle.handle2())

          Bis bald

          Marcus

          Kommentar


            #6
            Hi,

            ich würde mir da eine verkürtzte schreibweise für Kinderitems Wünschen Markus.....

            Das sum einfach nur so funktioniert ist mir rätzelhaft...geht das auf alle kinder und kindeskinder und kindeskinterkinder usw. items?

            VG
            Jürgen

            Kommentar


              #7
              Hi Jürgen,

              nein, es summiert alle Abhängigen Items.

              Gruß, Waldemar

              callidomus: Danke für die Korrektur, das "cd." vergesse ich irgendwie immer...
              OpenKNX www.openknx.de

              Kommentar


                #8
                Hi,

                und was mach sum wenn in den abhängigkeiten ein String oder Bool dabei ist?
                Was passiert wenn ich

                sum( cd.anderesnichtabhaengigesitesm() )

                werden dann automatisch die abhängigen Itesm mit auf addiert?

                Finde ich undurchsichtig das so zu machen.

                VG
                Jürgen

                Kommentar


                  #9
                  Hi Jürgen,

                  die Syntax ist sum und nicht sum(irgendwas). Das heißt, Du schreibst sum hin und gibst in der Liste der Abhängigen Items an, welche summiert werden sollen. Wenn Du nicht summierbare Items angibst, wird es - denke ich - Fehler im Log geben. Hab ich nicht ausprobiert - würde aber auch nicht auf die Idee kommen. Wenn ich summieren will, gebe ich nur summierbare Items an. Das mit abhängigen Items zu machen, macht Sinn, da diese ja auch den codeblock trigern und somit jede Änderung dieser Items eine Neuberechnung veranlasst.

                  Wenn man die Items beim sum direkt aufzählen müsste (also sum(liste von Items)), dann wärst Du doch der erste, der sich beklagen würde, weil man die Items beim sum und bei den Abhängigkeiten eintragen müsste. Insofern hat Marcus nur Deinem zukünftigen Einwand vorweg genommen und es gleich so einfach gemacht wie möglich gemacht.

                  Gruß, Waldemar
                  OpenKNX www.openknx.de

                  Kommentar


                    #10
                    Hi,
                    das ich das Feature noch nicht gekannt habe und auch nicht benutzt habe und es auch nicht in der Onlinehilfe steht das es so ist kommt es mir halt auf den ersten blick eines unbedarften Benutzers undurchsichtig vor.

                    Woher hast du den gewusst das sum alle abhängigkeiten aufsummiert? In der Onlinhilfe habe ich es entweder nicht gefunden oder nicht verstanden.

                    Viele Grüsse
                    Jürgen

                    Kommentar


                      #11
                      Hi Jürgen,

                      das hat Marcus schon in der Online-Hilfe beschrieben - beim Codeblock, wie immer kurz und Prägnant.

                      codeblock-hilfe.PNG

                      Gruß, Waldemar

                      OpenKNX www.openknx.de

                      Kommentar


                        #12
                        Hi Waldemar,

                        genau die habe ich gelesen und wäre im Leben nicht darauf gekommen das die summe über alle abhängigen Items gebildet werden. Und ich mach eine Wette das viele genau das gleich Problem damit haben. Da fehlen halt einfach Beispiele um das wirklich verstehen zu können was da addiert wird.

                        Es ist halt in nicht klar wie Items zusammenhängen. Um das zu Verbesseren würde ich das Feld nennen wo das definiert (auch wenn es eine Zeile drüber steht) wird und würde noch ein einfaches nachvollziehbares Beispiel anhängen. Das Beispiel von Christian eignet sich ja da recht gut.

                        Viele Grüsse
                        Jürgen



                        Kommentar


                          #13
                          Hi Jürgen,

                          es wird häufig auf fehlender Doku rumgeritten, deswegen wollte ich darauf hinweisen, dass es beschrieben ist. Hier sogar explizit (wenn auch kurz und knapp):

                          Anstelle von Pythoncode können auch die folgenden Schlüsselwörter verwendet werde.
                          Da steht eben nichts von Funktionen (sum(irgendwas)), da steht: Entweder Schlüsselwörter oder Python. Und die Schlüsselwörter sind aufgezählt.

                          Sie verbinden die abhängigen Items entweder logisch oder arithmetisch.
                          Und für die logischen bzw. arithmetischen Verknüpfungen hat Marcus darunter alle Schlüsselwörter aufgezählt und erklärt.

                          Ich finde schon, dass da alle notwendigen Informationen drin stehen... Man muss bei Markus eben jedes Wort genau beachten, dann kann man das schon verstehen.


                          Unabhängig davon sind wir uns wohl einig, dass die Online-Doku als Nachschlagwerk gut geeignet ist, aber nicht ausreicht, um die Gesamtfunktionalität von callidomus zu beschreiben.

                          Gruß, Waldemar
                          OpenKNX www.openknx.de

                          Kommentar


                            #14
                            Danke für die vielen Antworten. Hilft mir weiter.

                            Genau dieser Punkt mit den Abhängigkeiten und dem Codeblock ist nicht einfach verständlich.

                            Die verkürzte Schreibweise bei den Kinderitems fände ich auch sehr angenehm.
                            sigpic
                            Christian Huck
                            Tel.: 089 / 122 80 995
                            Email: mail@homeintelligence.de
                            Web: www.homeintelligence.de

                            Kommentar


                              #15
                              Also das:

                              Code:
                               
                               first_floor.living.door_terrasse_garden_handle.handle1 | first_floor.living.door_terrasse_garden_handle.handle2
                              krieg ich bei den "Abhängigkeiten" nicht rein. Ist rot unterlegt.
                              sigpic
                              Christian Huck
                              Tel.: 089 / 122 80 995
                              Email: mail@homeintelligence.de
                              Web: www.homeintelligence.de

                              Kommentar

                              Lädt...
                              X