Ankündigung

Einklappen
Keine Ankündigung bisher.

Commandline-Tool für "KNX mit ETS"-Projekt

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

    #76
    Ja,

    11 ist ETS 4,
    12 ist ETS 5,
    13 ist ETS 5.5,
    14 ist ETS 5.6,
    20 ist ETS 5.7

    so ganz Grob... Je nach Schema-Version versucht mein Tool, die passende ETS-Version mit der entsprechenden Konvertierungsfunktion zu finden. Wobei die neueren immer die älteren enthalten. Und 20 kann ich noch nicht, da hat sich was geändert, was ich noch nicht verstehe. Da muss ich bei Thomas tool "abkupfern".

    Zitat von SirSydom Beitrag anzeigen
    Auch optisch unerscheidet sich ein PB mit "unter"-PBs nicht von einem Channel mit PBs.
    Ja, aber Du bekommst nur einen Channel auf die gleiche Ebene wie den ChannelIndependentBlock. PB sind immer min. eine Ebene tiefer.

    Und man kann in der ETS sehr einfach alle KO eines Channel gelistet bekommen.

    Gruß, Waldemar

    OpenKNX www.openknx.de

    Kommentar


      #77
      Zitat von mumpf Beitrag anzeigen
      Ja, aber Du bekommst nur einen Channel auf die gleiche Ebene wie den ChannelIndependentBlock. PB sind immer min. eine Ebene tiefer.
      optisch - und nur darauf kommt es ja eigentlich an macht es keinen Unterschied ob man:


      Code:
      <ChannelIndependentBlock>
      <ParameterBlock Name="Allgemeine Einstellungen">
      <ParameterRefRef>
      <ParameterRefRef>
      </ParameterBlock>
      <ChannelIndependentBlock>
      <Channel Name="Sensor A">
      <ParameterBlock Name="KanalEinstellungen">
      <ParameterRefRef>
      <ParameterRefRef>
      </ParameterBlock>
      </Channel>
      oder so:
      Code:
      <ChannelIndependentBlock>
      <ParameterBlock Name="Allgemeine Einstellungen">
      <ParameterRefRef>
      <ParameterRefRef>
      </ParameterBlock>
      <ParameterBlock Name="Sensor A">
      <ParameterBlock Name="KanalEinstellungen">
      <ParameterRefRef>
      <ParameterRefRef>
      </ParameterBlock>
      </ParameterBlock>
      <ChannelIndependentBlock>

      Zitat von mumpf Beitrag anzeigen
      Und man kann in der ETS sehr einfach alle KO eines Channel gelistet bekommen.
      stimmt! Würde man also tatsächlich die KO-Objekte eines physichen Kanals angezeigt haben will bei der Auswahl, dann dürfte man nicht mit einem Channel für ALLE Sensorkanäle arbeiten.
      Allerdings nutze ich das Feature jetzt eher weniger...

      Auch interessant: Im Topologie-Baum unterhalb des Gerätes nutzt de ETS die "Name" Eigenschaft des Kanals, bei den Parametern die "Text" Eigenschaft.
      Welche Restriktionen für Number gelten, wäre noch herauszufinden. (max. anzahl, lücken erlaubt etc..)
      OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

      Kommentar


        #78
        Sowohl Lücken als auch Duplikate bei der "Number" Eigenschaft von <Channel> gibt es zumindest bis zum import und platzieren des Gerätes keine Probleme.

        Welche Möglichkeiten bietet knxprod eigentlich für die ganze choose when test Geschichte?
        sowas wie test="1..15" oder test="1||9||67"
        OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

        Kommentar


          #79
          Zitat von SirSydom Beitrag anzeigen
          Welche Möglichkeiten bietet knxprod eigentlich für die ganze choose when test Geschichte?
          sowas wie test="1..15" oder test="1||9||67"
          Ich guck da immer in existierende knxprod, aber was ich noch aus dem Kopf weiß:
          choose
          ..test="1 9 67" ist wahr, wenn Wert 1 or 9 or 67 ist.

          choose
          ..test=">0" wahr wenn größer 0, also ab 1
          ....choose
          ......test="&lt;16" wahr wenn kleiner 16, also bis 15

          Dadurch dass das 2. geschachtelt ist, hast Du ein implizites UND, das <-Zeichen muss escaped werden, deswegen &lt; ob >= bzw. <= gehen weiß ich nicht.

          Wichtig: Es werden alle wahren Fälle verarbeitet, also

          choose
          ..test=">1"
          ....X
          ..test=">2"
          ....Y
          ..test=">3"
          ....Z

          ergibt für 1->nichts, für 2-> X, für 3->X Y und für 4->X Y Z.

          Dann gibt es noch ein Test auf initial, da weiß ich die Syntax nicht mehr und auch nicht die genaue Auswirkung, da ich das erst spät gesehen habe und nicht nutze. Ich vermute, es testet auf den Value, der beim Parameter als Initialwert angegeben wurde und macht somit keine Änderung im dynamic block nötig, fall man man den default Wert verändert. Aber vielleicht weiß hier Mike thewhobox mehr.

          Gruß, Waldemar
          Zuletzt geändert von mumpf; 10.09.2021, 16:52.
          OpenKNX www.openknx.de

          Kommentar


            #80
            Zitat von SirSydom Beitrag anzeigen
            Sowohl Lücken als auch Duplikate bei der "Number" Eigenschaft von <Channel> gibt es zumindest bis zum import und platzieren des Gerätes keine Probleme.
            Ich weiß nicht, ob Du Dich darauf verlassen kannst, die 5.7 prüft viel mehr als die 5.5.

            Gruß, Waldemar
            OpenKNX www.openknx.de

            Kommentar


              #81
              Zitat von mumpf Beitrag anzeigen
              die 5.7 prüft viel mehr als die 5.5.
              guter Hinweis, dann teste ich jetzt mit der 5.7 (hab ich bisher nur in der VM)
              OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

              Kommentar


                #82
                Zitat von mumpf Beitrag anzeigen
                ; ob >= bzw. <= gehen weiß ich nicht.
                Das kleiner/größer gleich funktioniert auch.
                Den Rest den du geschrieben hast, kann ich auch bestätigen.
                Das > muss aber auch escape werden in & gt;
                Das = kann so bleiben.

                Den Test auf Initial kenne ich nicht.
                OpenKNX www.openknx.de | Kaenx-Creator | Dali-GW

                Kommentar


                  #83
                  Nachtrag:

                  test="!=5" ist "ungleich 5"

                  OpenKNX www.openknx.de

                  Kommentar


                    #84
                    Nachtrag 2:
                    Es gibt auch noch das Attribute default.
                    Der Zweig wird dann angezeigt, wenn kein anderer erfüllt und sichtbar ist.

                    Code:
                    <when default="true">
                    <when test="=4">
                    <when test="=2">
                    Bei dem Beispiel wird der erste Zweig angezeigt, wenn der Parameter nicht 2 UND nicht 4 ist.
                    OpenKNX www.openknx.de | Kaenx-Creator | Dali-GW

                    Kommentar


                      #85
                      Hi Mike, das meinte ich mit initial... default passt natürlich besser.

                      Zitat von proggerKA Beitrag anzeigen
                      Der Zweig wird dann angezeigt, wenn kein anderer erfüllt und sichtbar ist.
                      Was ich bei default (und bei Deiner Erklärung) nicht verstehe:
                      • Jeder Parameter muss ein default-Value tragen
                      • Wenn der default=0 ist, würde Deine Erklärung stimmen
                      • Wenn der default=2 ist: Würde dann das 1. und das 3. when betreten?
                      • Gibt es einen unterschied zwischen "nicht sichtbar" und "sichtbar, aber auf defaultwert"?
                      Ich kann mir 4 Konstellationen für Dein Beispiel oben vorstellen, aber welche gelten? Annahme: Der Parameter, der getestet wird, trägt den default Wert 2.
                      1. Parameter ist sichtbar, es wurde eine 4 eingegeben
                        Hier ist es wohl unstrittig, dass das 2. when zieht.
                      2. Parameter ist sichtbar, es wurde eine 2 eingegeben (z.B. von 4 auf 2 geändert)
                        Hier wird auf jeden Fall das 3. when ziehen, aber auch das 1.?
                      3. Parameter ist sichtbar, es wird die unveränderte (default) 2 genutzt
                        Hier dachte ich immer, dass das 1. und das 3. when zieht?
                      4. Parameter ist nicht sichtbar (und enthält somit die 2)
                        Hier wird auf jeden Fall das 1. when ziehen (denke ich), das 3. auf jeden Fall nicht (zumindest war das bei meinen Versuchen früher so).
                      Weißt Du es genauer, Maik?

                      Gruß, Waldemar


                      OpenKNX www.openknx.de

                      Kommentar


                        #86
                        Zitat von mumpf Beitrag anzeigen
                        das meinte ich mit initial
                        Ah okay, das war mir nicht klar^^

                        Die Angabe "default=true" hat rein gar nichts mit dem Defaultwert vom Parameter zu tun.
                        Dieser Zweig wird als default angezeigt, wenn alle anderen Zweige tests nicht bestanden wurden.

                        Ich hab das mal in einer KNXProd ausprobiert:
                        Code:
                        <choose RefId="xxx_R-1">
                        <when default="true">
                        <when test="1 4 6 12">
                        <when test="&gt;10">
                        Nehmen wir an der Parameter "xxx_R-1" hat als Defaultwert 0.
                        Zweig 2 und 3 sind nicht erfüllt. Somit wird der default-Zweig angezeigt.

                        Nun stelle ich den Parameter auf 5.
                        Zweig 2 und 3 sind immer noch nicht erfüllt und der default-Zweig bleibt angezeigt.

                        Nun stelle ich den Parameter auf 16.
                        Zweig 2 ist nicht erfüllt und wird nicht angezeigt.
                        Zweig 3 ist erfüllt und wird folglich auch angezeigt.
                        Da mindestens ein zweig schon angezeigt wird, wird der default-Zweig nicht angezeigt.

                        Nun stelle ich den Parameter auf 12.
                        Zweig 2 und 3 sind erfüllt und werden angezeigt. Zweig 1 nicht.

                        Zu deinem Beispiel:
                        Es sollte keine Rolle ob der Parameter an sich sichtbar ist oder nicht.
                        Spätestens mit Assign kann man auch nicht sichtbaren Parametern andere Werte zuweisen. Oder?

                        1. Korrekt
                        2. Nur das 3. when wird angezeigt
                        3. Nein, siehe Erklärung oben
                        4. Hier wäre ich der Meinung, dass das 3. when angezeigt wird. Hab es aber nicht ausprobiert, wenn der Parameter selbst nicht sichtbar ist. Wenn dein Test stimmt wird gar nichts angezeigt.
                        OpenKNX www.openknx.de | Kaenx-Creator | Dali-GW

                        Kommentar


                          #87
                          Hi Mike,

                          danke fürs Testen und für die Infos. Dann ist ein
                          Code:
                          <when default="true"/>
                          wie ein else zu betrachten, passt.

                          Zitat von proggerKA Beitrag anzeigen
                          Zu deinem Beispiel:
                          Es sollte keine Rolle ob der Parameter an sich sichtbar ist oder nicht.
                          Spätestens mit Assign kann man auch nicht sichtbaren Parametern andere Werte zuweisen. Oder?
                          Bevor es hier Missverständnisse gibt: Ich war etwas "unscharf" in meiner Aussage! Mit "nicht sichtbar" meinte ich eher "nicht aktiv". Nochmal genauer:

                          Nicht sichtbar: <Parameter ... Access="None"/>
                          Nicht aktiv: für einen Parameter _P-nnn (und den zugehörigen ParamterRef _P-nnn_R-nnn1) ist im dynamic-Teil noch kein Bereich aufgerufen worden, der ein ParameterRefRef _P-nnn_R-nnn1 enthält.

                          Nicht aktive (oder inaktive) Parameter kann man auf jeden Fall mit choose nicht abfragen. Da weiß ich eben nicht, ob vielleicht "default" nicht doch geht, das hatte ich noch nicht ausprobiert. Auch Assign funktioniert nicht mit inaktiven Parametern. Eigentlich suche ich eine Möglichkeit, in dynamic Teil abzufragen, ob ein Parameter aktiv ist oder nicht. Wobei, wenn ich das so richtig überlege, braucht man das nicht, da ja alles statisch ist und man durch die Struktur feststellen kann, welche Parameter an welcher Stelle aktiv sind...

                          Ok, vergiss es, ich lass das hier noch stehen, damit man die Gedanken nachvollziehen kann, ich hab es mir jetzt selber erklärt .

                          Gruß, Waldemar

                          OpenKNX www.openknx.de

                          Kommentar


                            #88
                            Zitat von mumpf Beitrag anzeigen
                            wie ein else zu betrachten, passt.
                            Wenn du ein else nach mehreren If-Else meinst, dann ja.
                            Ich sehe es eher wie das default bei einem switch.^^

                            Ah okay. Ich glaube es macht aber auch keinen Sinn ein choose auf einen inaktiven Parameter zu machen. Der wird sich ja eig eh nie ändern.
                            Und da auch nur sichtbare Parameter übertragen werden, wird er einfach ignoriert.
                            Aber ich habs schon vergessen

                            Gruß Mike
                            OpenKNX www.openknx.de | Kaenx-Creator | Dali-GW

                            Kommentar


                              #89
                              Zitat von proggerKA Beitrag anzeigen
                              Und da auch nur sichtbare Parameter übertragen werden,
                              Das sehe ich anders - sprich: Meine Tests sprechen dagegen.

                              Meiner Meinung nach wird:
                              • bei partieller Programmierung der Speicher im Device mit dem vorgegebenen Wert (Fill) initialisiert
                                Code:
                                	                <LdCtrlRelSegment LsmIdx="4" Size="0" Mode="0" Fill="0" AppliesTo="par" />
                                (bei mir normalerweise mit 0) und dann alle Parameter übertragen, deren Werte von 0 abweichen.
                              • beim Programmieren der gesamten Applikation werden alle Parameter übertragen (hier bin ich mir aber nicht mehr sicher, müsste ich nochmal testen)
                              Gruß, Waldemar
                              OpenKNX www.openknx.de

                              Kommentar


                                #90
                                Zitat von mumpf Beitrag anzeigen
                                Meine Tests sprechen dagegen.
                                Du hast vermutlich nur mit relativen Speichern getestet oder?
                                Ich hab das mit absoluten Speichern mal gehabt.

                                Ich hatte bei einem Jung Taster BA immer wieder das Problem, dass er nicht das machte was ich parametriert hatte.
                                Bis ich herausgefunden habe, dass nur Parameter die in der Dynamic sichtbar sind auch übertragen werden.
                                Sonst könnte man auch nicht Parameter mit "Union" zusammenfassen.

                                Ob das generell von Relativem Speicher abweicht weiß ich nicht.
                                Hab leider keine zum Testen.

                                EDIT:
                                in deinem Auszug wird aber gar nichts überschieben?
                                Mode=0 "keep the existing memory contents of the allocated memory unchanged"
                                Ist es nicht eher, dass beim gesamten Parametrieren alles überschieben wird?
                                Bei partiell wird ja dann der MBC (oder MCB, ka mehr) abgefragt, wenn der gleich ist, werden nur geänderte parameter übertragen.
                                Zuletzt geändert von thewhobox; 14.09.2021, 13:04.
                                OpenKNX www.openknx.de | Kaenx-Creator | Dali-GW

                                Kommentar

                                Lädt...
                                X