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

    #91
    Hi Maik,

    Zitat von proggerKA Beitrag anzeigen
    in deinem Auszug wird aber gar nichts überschieben?
    ja, war falsch. Beim partiellen Programmieren darf ja der Speicher nicht gelöscht werden.
    Ich meinte das hier:
    Code:
                    <LdCtrlRelSegment LsmIdx="4" Size="0" Mode="1" Fill="0" AppliesTo="full" />
    Und meine Aussage ist somit auch falsch gewesen (sorry, falls ich jemanden verwirrt habe):
    • Beim partiellen Programmieren werden natürlich nur die geänderten Werte übertragen, und das können natürlich keine inaktiven Parameter sein, da diese nicht geändert werden können.
    • Beim Programmieren der Applikation wird der Speicher mit 0 gefüllt und nur die Parameter übertragen, die ungleich 0 sind. Das sind aber auch inaktive Parameter, falls deren Value-Attribut ungleich 0 ist.
    Und ja, ich habe nur RelMem, da das so vom knx-Stack von thesing unterstützt wird.

    Gruß, Waldemar
    OpenKNX www.openknx.de

    Kommentar


      #92
      Zitat von mumpf Beitrag anzeigen
      Das sind aber auch inaktive Parameter, falls deren Value-Attribut ungleich 0 ist.
      Okay, nur um nochmal ganz sicher zu gehen:
      Werden also nur aktive/sichtbare Parameter und inaktive(Access=None) übertragen?
      Oder werden auch nicht sichtbare (die in einem when zweig sind, der nicht angezeigt wird) übertragen?

      Wenn ich iwann mal genug Zeit habe und nicht dauernd meinen SAMD kaputt mache, teste ich das mal selbst mit dem knx-stack^^

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

      Kommentar


        #93
        Hi,

        Zitat von proggerKA Beitrag anzeigen
        Werden also nur aktive/sichtbare Parameter und inaktive(Access=None) übertragen?
        Kann man so glaube ich nicht trennen (wenn ich Dich richtig verstehe). Es werden alle Parameter übertragen, die ungleich 0 sind. Ganz egal, wie sie in der ETS auftauchen. Die ETS will ja beim Programmieren der Applikation einen gültigen initialen Zustand im Device herstellen.

        Ich stelle mir das so vor:
        • Durch die ganzen Parameter-Adressen (Offset) weiß die ETS ja, an welcher Speicherstelle was stehen muss.
        • Durch die Value-Angaben am Parameter weiß sie auch den Wert für einen Parameter, selbst wenn dieser nirgendwo im verändert wurde
        • Eine Teilmenge der Parameter wird dann im UI verändert
        Es ist aber immer gegeben, dass die ETS den Parameterblock, der an das Device zu schicken ist, komplett im Speicher aufbauen kann, z.B.
        Code:
        00 01 00 00 00 00 00 00 00 00 0a ab 00 00 00 00 45 00 10 00
        Das wäre ein 20 Byte Parameterblock. Jetzt kann die ETS das komplett als Block, beginnend an der Adresse 03e2, an das Device schicken:
        Code:
        03e2: 00 01 00 00 00 00 00 00 00 00 0a ab 00 00 00 00 45 00 10 00
        [
        Oder sie sagt dem Device:
        Schreibe ab 03e2 20 mal die 00 in den Speicher und empfange dann
        Code:
        03e3: 01
        03ec: 0a ab
        03f2: 45
        03f4: 10
        Im Device kommt die selbe Information an. Und die Firmware wertet die Byteinformation aus und kann sich darauf verlassen, dass jedes Byte den korrekten Wert hat, ganz egal, ob der Parameter jemals im UI aufgetaucht ist oder nicht.

        Gruß, Waldemar

        P.S.: Die ETS macht es übrigens noch schlauer... Die Übertragung der Adressen erfordert ja auch Bandbreite und jedes Telegramm hat auch ein Overhead. Wenn das neue Telegramm, dass die Übertragung von 00 sparen soll, mehr Bytes kosten würde als die eigentlichen übertragenen 00, dann überträgt sie trotzdem die 00 im vorherigen Telegramm. Wahrscheinlich würde es dann eher so aussehen:
        Code:
        03e3: 01
        03ec: 0a ab 
        03f2: 45 00 10
        (in der Praxis sieht das noch anders aus, das hier ist stark vereinfacht)
        OpenKNX www.openknx.de

        Kommentar


          #94
          mumpf Danke für die Ausführliche Erklärung. Dann muss ich meine Funktion da mal etwas überarbeiten.
          Bisher habe ich mit der Methode allerdings keine Probleme erkennen können. Mir ist nur ab und an in der KNXProd aufgefallen, dass es das Attribut "DownloadOnlyVisibleOnPartiell" (oder ähnlich geschrieben gibt).

          Ich denke ich muss mir auch einfach mal ein Gerät zulegen mit dem knx-stack, um das zu Testen.
          OpenKNX www.openknx.de | Kaenx-Creator | Dali-GW

          Kommentar


            #95
            Ich bin mir ziemlich sicher, dass die MDT email application für die IP-Schnittstelle funktioniert genau so, zumindest hab ich da viel abgeguckt. Nur falls Du die schon hast, könntest Du damit testen.

            Gruß, Waldemar
            OpenKNX www.openknx.de

            Kommentar


              #96
              Super Tipp! Hab ich tatsächlich.
              Hatte mir bisher immer nur die normale Applikation vom Interface angeschaut.
              OpenKNX www.openknx.de | Kaenx-Creator | Dali-GW

              Kommentar


                #97
                "Der Index war außerhalb des Arraybereiches" wenn ich diesen PT in meiner XML drin habe (ETS 5.7).

                Code:
                <ParameterType Id="M-00FA_A-0000-00-0000_PT-SendCycleSelection" Name="SendCycleSelection">
                <TypeRestriction Base="Value" SizeInBit="8">
                <Enumeration Text="nicht senden" Value="0" Id="M-00FA_A-0000-00-0000_PT-SendCycleSelection_EN-0" />
                <Enumeration Text="1 Minute" Value="1" Id="M-00FA_A-0000-00-0000_PT-SendCycleSelection-EN-1" />
                <Enumeration Text="2 Minuten" Value="2" Id="M-00FA_A-0000-00-0000_PT-SendCycleSelection_EN-2" />
                <Enumeration Text="3 Minuten" Value="3" Id="M-00FA_A-0000-00-0000_PT-SendCycleSelection_EN-3" />
                <Enumeration Text="4 Minuten" Value="4" Id="M-00FA_A-0000-00-0000_PT-SendCycleSelection_EN-4" />
                <Enumeration Text="5 Minuten" Value="5" Id="M-00FA_A-0000-00-0000_PT-SendCycleSelection_EN-5" />
                <Enumeration Text="10 Minuten" Value="10" Id="M-00FA_A-0000-00-0000_PT-SendCycleSelection_EN-6" />
                <Enumeration Text="15 Minuten" Value="15" Id="M-00FA_A-0000-00-0000_PT-SendCycleSelection_EN-7" />
                <Enumeration Text="20 Minuten" Value="20" Id="M-00FA_A-0000-00-0000_PT-SendCycleSelection_EN-8" />
                <Enumeration Text="30 Minuten" Value="30" Id="M-00FA_A-0000-00-0000_PT-SendCycleSelection_EN-9" />
                <Enumeration Text="40 Minuten" Value="40" Id="M-00FA_A-0000-00-0000_PT-SendCycleSelection_EN-10" />
                <Enumeration Text="50 Minuten" Value="50" Id="M-00FA_A-0000-00-0000_PT-SendCycleSelection_EN-11" />
                <Enumeration Text="60 Minuten" Value="60" Id="M-00FA_A-0000-00-0000_PT-SendCycleSelection_EN-12" />
                </TypeRestriction>
                </ParameterType>
                MultiplyChannels meckert nicht.
                OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                Kommentar


                  #98
                  jemand eine Idee warum die Anzeige der rauf-runter Pfeile "Increment" hier nicht funktoniert (ETS zeigt keine an):
                  Code:
                   <ParameterType Id="M-00FA_A-0000-00-0000_PT-TempCalibration" Name="TempCalibration">
                  <TypeFloat Encoding="IEEE-754 Single" minInclusive="-5" maxInclusive="5" Increment="0.1" />
                  </ParameterType>
                  Und... der UIHint "Headline" tut auch nicht so wie ich das mir dachte.. in der knxprod von mdt wird das groß und fett dargestellt. Bei mir nicht.
                  Aber die knxprod ist auch auf schema 20 ich nutze 13.

                  Code:
                  <ParameterSeparator Id="M-00FA_A-0000-00-0000_PS-" Text="Luftfeuchtigkeit" UIHint="Headline" />
                  OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                  Kommentar


                    #99
                    Hi,

                    beides dürfte an der 13 liegen. Ab 14 geht zumindest Headline.
                    Float mit increment hab ich bisher nicht bewusst verwendet, deswegen weiß ich nicht, ab wann es geht.

                    Was ist denn an den PT oben nicht korrekt?

                    Anmerkung: Ich versuchte schon, einige Fehler abzufangen, aber ich werde nicht alle möglichen Fehler der ETS abfangen können (und wollen).

                    Natürlich ist Feedback willkommen, allerdings ist multiply-channels nicht unbedingt das Projekt, das im Zentrum meines Interesses liegt. Es ist ein Tool, das nebenbei entstanden ist. Insofern werden Korrekturen hier eher langsam einfließen.

                    Gruß, Waldemar
                    OpenKNX www.openknx.de

                    Kommentar


                      Zitat von mumpf Beitrag anzeigen
                      deswegen weiß ich nicht, ab wann es geht.
                      müsste es mal mit 14 probieren. Dazu muss dann auch eine ETS >= 5.6 auf der Maschine sein oder?

                      Zitat von mumpf Beitrag anzeigen
                      Was ist denn an den PT oben nicht korrekt?
                      hab ich mittlerweile gefunden. Hat gedauert. Beim EN-1 hab ich einen Dash - vor dem EN statt einem Underscore _

                      Zitat von mumpf Beitrag anzeigen
                      Natürlich ist Feedback willkommen, allerdings ist multiply-channels nicht unbedingt das Projekt, das im Zentrum meines Interesses liegt. Es ist ein Tool, das nebenbei entstanden ist. Insofern werden Korrekturen hier eher langsam einfließen.
                      würdest du Push-Requests zu solchen Abprüfungen annehmen?
                      OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                      Kommentar


                        Zitat von SirSydom Beitrag anzeigen
                        müsste es mal mit 14 probieren. Dazu muss dann auch eine ETS >= 5.6 auf der Maschine sein oder?
                        Ja. Und wie gesagt, 20 unterstütze ich noch nicht, da sich da was mit der Konvertierung in knxprod geändert hat. Derzeit ist 14 das höchste.

                        Zitat von SirSydom Beitrag anzeigen
                        Hat gedauert. Beim EN-1 hab ich einen Dash - vor dem EN statt einem Underscore _
                        Ja, jetzt sehe ich es auch. Ich mach einige Prüfungen bei IDs, bei den Sprachschlüsseln mach ich aber nichts, da mich die Sprachen bisher nicht interessiert haben. Und ich habe wohl selber so einen Fehler nicht gemacht. Die meisten Prüfungen hab ich eingeführt, sobald ich das 2. mal einen Fehler gemacht habe .

                        Zitat von SirSydom ;n168954
                        2
                        würdest du Push-Requests zu solchen Abprüfungen annehmen?
                        Klar. Jede Verbesserung ist ja gut für alle. Ich gebe aber zu, ich habe bisher noch nicht wirklich an einem Projekt mit mehreren Entwicklern auf Github gearbeitet. Ich denke aber, man kann daraus nur lernen.

                        Gruß, Waldemar
                        OpenKNX www.openknx.de

                        Kommentar


                          Zitat von mumpf Beitrag anzeigen
                          Ich mach einige Prüfungen bei IDs, bei den Sprachschlüsseln mach ich aber nichts, da mich die Sprachen bisher nicht interessiert haben.
                          Sprachschlüssel?
                          Ich denke das EN steht für ENumeration, oder?
                          OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                          Kommentar


                            Zitat von SirSydom Beitrag anzeigen
                            Ich denke das EN steht für ENumeration, oder?
                            Ja, sorry, unglücklich ausgedrückt. Der Key wird eben nur für die Übersetzung gebraucht, sonst nirgendwo. Und ich mach bisher nur Prüfungen für Keys, die man irgendwo anders braucht (und da wahrscheinlich noch nicht alle). Wobei - stimmt nicht ganz. Auf Eindeutigkeit prüfe ich wohl auch den ENumeration-Key. Du hast schon recht, dann kann man auch noch was für das korrekte Format machen...

                            Gruß, Waldemar
                            OpenKNX www.openknx.de

                            Kommentar


                              weißt jemand wie man einen "unspezifischen DPT" spezifiziert?
                              Also in der ETS kann man z.B. "9.*" einstellen.
                              Kann man sowas in der knxprod definieren?
                              DPST-9-0 hat schonmal nicht funktioniert.

                              edit:
                              DPST-9 und DPST-9-* gehen nicht.
                              DPT-9 führt zum Erfolg.
                              Zuletzt geändert von Ing-Dom; 21.09.2021, 13:07.
                              OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                              Kommentar


                                Genau. Mit DPT-N definierst Du den DPT (Data Point Type), mit DPST-N-M den Data Point Subtype (der den DPT beinhaltet).

                                Zumindest hab ich das so verstanden.

                                Eventuell besser (aber aufwändiger) ist es, mehrere ComObjectRef mit den spezifischen DPST-9-x zu definieren und die passend einzublenden. Dann hättest Du in der ETS klarer herausgestellt, was das KO genau liefert:
                                Code:
                                              <ComObject Id="M-00FA_A-0001-01-0000_O-60" Name="Messwert" Number="60" ObjectSize="2 Bytes" ReadFlag="Enabled" WriteFlag="Disabled" CommunicationFlag="Enabled" TransmitFlag="Enabled" UpdateFlag="Disabled" ReadOnInitFlag="Disabled" DatapointType="DPT-9" />
                                              <ComObjectRef Id="M-00FA_A-0001-01-0000_O-60_R-601" RefId="M-00FA_A-0001-01-0000_O-60" Text="Temperatur" FunctionText="Messwert in °C" DatapointType="DPST-9-1" />
                                              <ComObjectRef Id="M-00FA_A-0001-01-0000_O-60_R-602" RefId="M-00FA_A-0001-01-0000_O-60" Text="Luftfeuchte" FunctionText="Messwert in %" DatapointType="DPST-9-7" />
                                Kommt aber auf den Verwendungszweck an.

                                Gruß, Waldemar
                                OpenKNX www.openknx.de

                                Kommentar

                                Lädt...
                                X