Ankündigung

Einklappen
Keine Ankündigung bisher.

CreateKNXProd, multiply channels, Kaenx-Creator mit ETS6.06

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

    CreateKNXProd, multiply channels, Kaenx-Creator mit ETS6.06

    Hallo,

    ich versuche gerade eine xml aus dem knx_ets plugin von smarthome-ng mit den drei o.g. tools zu einer knxprod zu erstellen.
    Leider scheitere ich mit allen drei.
    Aus https://github.com/mumpf/multiply-ch...Program.cs#L34 entnehme ich, dass ich bei ETS die Zeile so anpassen muss
    Code:
    <?xml version='1.0' encoding='utf-8'?>
    <KNX xmlns="http://knx.org/xml/project/21" CreatedBy="KNX MT" ToolVersion="5.1.255.16695">​
    das ich ETS6 verwende.

    Dennoch führen alle drei Tools zu einem Fehler:
    multiply channels mumpf :
    Code:
    MultiplyChannels 2.1.2.0
    Reading xml file smarthomeNG.xml writing to smarthomeNG.knxprod
    No valid conversion engine available for xmlns http://knx.org/xml/project/21​
    CreateKnxProd thesing
    image.png

    Kaenx-Creator thewhobox
    An unhandled exception occured: Object reference not set to an instance of an object
    Wie kommt das?

    Gruß,
    Hendrik

    #2
    Hallo Hendrik,

    Sowohl multiply-channels als auch CreateKnxProd werden schon lange nicht mehr unterstützt.

    Multiply-channels ist jetzt OpenKNXProducer.
    CreateKnxProd wurde eingestellt.

    Beim Kaenx-Creator würde ich dir gerne helfen, hab allerdings noch nicht verstanden welche xml genau du verwenden möchtest bzw was du machen willst.

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

    Kommentar


      #3
      Hi,

      danke für die schnelle Antwort.
      Die Datei stammt aus https://knx-user-forum.de/forum/supp...konfigurieren/
      Etwas gekürzt sieht sie so aus:
      Code:
      <?xml version='1.0' encoding='utf-8'?>
      <KNX xmlns="http://knx.org/xml/project/19" CreatedBy="KNX MT" ToolVersion="5.1.255.16695">
        <ManufacturerData>
          <Manufacturer RefId="M-00FA">
            <Catalog>
              <CatalogSection Id="M-00FA_CS-1" Name="Geräte" Number="1" DefaultLanguage="de">
                <CatalogItem Id="M-00FA_H-0-0_HP-0000-01-0000_CI-0-1" Name="SmarthomeNG" Number="1" ProductRefId="M-00FA_H-0-0_P-0" Hardware2ProgramRefId="M-00FA_H-0-0_HP-0000-01-0000" DefaultLanguage="de" />
              </CatalogSection>
            </Catalog>
            <ApplicationPrograms>
              <ApplicationProgram Id="M-00FA_A-0000-01-0000" ApplicationNumber="0" ApplicationVersion="2" ProgramType="ApplicationProgram" MaskVersion="MV-57B0" Name="SHNG" LoadProcedureStyle="MergedProcedure" PeiType="0" DefaultLanguage="de" DynamicTableManagement="false" Linkable="false" MinEtsVersion="4.0" ReplacesVersions="1">
                <Static>
                  <Code>
                    <RelativeSegment Id="M-00FA_A-0000-01-0000_RS-04-00000" Name="Parameters" Offset="0" Size="0" LoadStateMachine="4" />
                  </Code>
                  <ParameterTypes />
                  <Parameters />
                  <ParameterRefs />
                  <ComObjectTable>
                    <ComObject Name="Alarmanlage.Scharf" Number="1" Text="Alarmanlage.Scharf" FunctionText="Alarmanlage.Scharf0" ObjectSize="1 Bit" DatapointType="" Id="M-00FA_A-0000-01-0000_O-1" ReadFlag="Disabled" WriteFlag="Enabled" UpdateFlag="Enabled" CommunicationFlag="Enabled" TransmitFlag="Disabled" ReadOnInitFlag="Enabled" />
                    <ComObject Name="Alarmanlage.Alarm" Number="2" Text="Alarmanlage.Alarm" FunctionText="Alarmanlage.Alarm0" ObjectSize="1 Bit" DatapointType="" Id="M-00FA_A-0000-01-0000_O-2" ReadFlag="Disabled" WriteFlag="Enabled" UpdateFlag="Enabled" CommunicationFlag="Enabled" TransmitFlag="Enabled" ReadOnInitFlag="Disabled" />
                    <ComObject Name="Alarmanlage.TVSimulation" Number="3" Text="Alarmanlage.TVSimulation" FunctionText="Alarmanlage.TVSimulation0" ObjectSize="1 Bit" DatapointType="" Id="M-00FA_A-0000-01-0000_O-3" ReadFlag="Disabled" WriteFlag="Disabled" UpdateFlag="Disabled" CommunicationFlag="Enabled" TransmitFlag="Enabled" ReadOnInitFlag="Disabled" />
                    <ComObject Name="Wetter.Helligkeit.Suedost" Number="612" Text="Wetter.Helligkeit.Suedost" FunctionText="Wetter.Helligkeit.Suedost0" ObjectSize="2 Bytes" DatapointType="" Id="M-00FA_A-0000-01-0000_O-612" ReadFlag="Disabled" WriteFlag="Enabled" UpdateFlag="Enabled" CommunicationFlag="Enabled" TransmitFlag="Disabled" ReadOnInitFlag="Enabled" />
                    <ComObject Name="Wetter.Helligkeit.NSuedwest" Number="613" Text="Wetter.Helligkeit.NSuedwest" FunctionText="Wetter.Helligkeit.NSuedwest0" ObjectSize="2 Bytes" DatapointType="" Id="M-00FA_A-0000-01-0000_O-613" ReadFlag="Disabled" WriteFlag="Enabled" UpdateFlag="Enabled" CommunicationFlag="Enabled" TransmitFlag="Disabled" ReadOnInitFlag="Enabled" />
                    <ComObject Name="Wetter.Helligkeit.Nacht" Number="614" Text="Wetter.Helligkeit.Nacht" FunctionText="Wetter.Helligkeit.Nacht0" ObjectSize="1 Bit" DatapointType="" Id="M-00FA_A-0000-01-0000_O-614" ReadFlag="Disabled" WriteFlag="Enabled" UpdateFlag="Enabled" CommunicationFlag="Enabled" TransmitFlag="Disabled" ReadOnInitFlag="Enabled" />
                  </ComObjectTable>
                  <ComObjectRefs />
                  <AddressTable MaxEntries="255" />
                  <AssociationTable MaxEntries="255" />
                  <LoadProcedures>
                    <LoadProcedure MergeId="2">
                      <LdCtrlRelSegment AppliesTo="full" LsmIdx="4" Size="0" Mode="0" Fill="0" />
                    </LoadProcedure>
                    <LoadProcedure MergeId="4">
                      <LdCtrlWriteRelMem ObjIdx="4" Offset="0" Size="0" Verify="true" />
                    </LoadProcedure>
                  </LoadProcedures>
                  <Options />
                </Static>
              </ApplicationProgram>
            </ApplicationPrograms>
            <Hardware>
              <Hardware Id="M-00FA_H-0-0" Name="SmartHomeNG" SerialNumber="0" VersionNumber="0" HasIndividualAddress="true" HasApplicationProgram="true" IsIPEnabled="true">
                <Products>
                  <Product Id="M-00FA_H-0-0_P-0" Text="SmarthomeNG" OrderNumber="0" IsRailMounted="false" DefaultLanguage="de" />
                </Products>
                <Hardware2Programs>
                  <Hardware2Program Id="M-00FA_H-0-0_HP-0000-01-0000" MediumTypes="MT-5">
                    <ApplicationProgramRef RefId="M-00FA_A-0000-01-0000" />
                  </Hardware2Program>
                </Hardware2Programs>
              </Hardware>
            </Hardware>
          </Manufacturer>
        </ManufacturerData>
      </KNX>
      Gruß,
      Hendrik

      Kommentar


        #4
        Hallo,

        ich hab gerade alle drei o.g. Tools auf einem anderen Rechner -da ist die ETS 5.7 installiert- ausprobiert. Da funktioniert es ebenfalls nicht.
        OpenKNXCreator hingegen funktioniert.
        Hm... aber die KNXProd hat keinen Inhalt/keine KOs.
        Anbei mal die XML und das Ergebnis.

        Gruß,
        Hendrik
        Angehängte Dateien
        Zuletzt geändert von henfri; 07.01.2023, 22:29.

        Kommentar


          #5
          Hallo,

          <ApplicationProgram Id="M-00FA_A-0000-01-0000" ApplicationNumber="0" ApplicationVersion="2"

          Das passt schon mal nicht zusammen.
          Ändere entweder die ID oder die Version.
          Dann sollte auch der Import im Kaenx-Creator funktionieren.

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

          Kommentar


            #6
            Danke, aber auf welchen Wert?
            Sorry, was genau passt da nicht?

            Kommentar


              #7
              Die ID ist wie folgt aufgebaut:
              M-{HerstellerId}_A-{ApplicationNumber}-{ApplicationVersion}-{Hash}
              Hash kann hier aber vernachlässigt werden.

              Also entweder du enderst ApplicationVersion auf 1. (empfohlen)
              Oder aber du änderst alle IDs auf "M-00FA_A-0000-02-0000".

              Edit:
              Ich hab mir die Datei von dir mal angeschaut.
              Dort ist überhaupt kein Dynamicteil drin.
              Wenn die ComObjects nicht in einem Dynamic verwendet werden, werden sie auch nicht angezeigt.
              Das könntest du händisch machen für jedes ComObject einzeln, aber denke da wäre es besser den Ersteller des Plugins anzuschreiben, damit er die Ausgabe anpasst.
              Zuletzt geändert von thewhobox; 07.01.2023, 23:15.
              OpenKNX www.openknx.de | Kaenx-Creator | Dali-GW

              Kommentar


                #8
                Hi Hendrik,

                ich hab mal kurz reingeschaut. Dein xml-File hat ja keinen dynamic-part, dann kann die ETS auch nichts anzeigen. Mir ist leider nicht klar, was Du erreichen möchtest? Willst Du einen Dummy für SmarthomeNG haben?

                Dazu müsstest noch folgendes ergänzen (nur exemplarisch):

                Code:
                          <Static>
                            ...
                ​            <ComObjectTable>
                              <ComObject Name="Alarmanlage.Scharf" Number="1" Text="Alarmanlage.Scharf" FunctionText="Alarmanlage.Scharf0" ObjectSize="1 Bit" DatapointType="" Id="M-00FA_A-0000-01-B316_O-1" ReadFlag="Disabled" WriteFlag="Enabled" UpdateFlag="Enabled" CommunicationFlag="Enabled" TransmitFlag="Disabled" ReadOnInitFlag="Enabled" />​
                              <ComObject Name="Alarmanlage.Alarm" Number="2" Text="Alarmanlage.Alarm" FunctionText="Alarmanlage.Alarm0" ObjectSize="1 Bit" DatapointType="" Id="M-00FA_A-0000-01-B316_O-2" ReadFlag="Disabled" WriteFlag="Enabled" UpdateFlag="Enabled" CommunicationFlag="Enabled" TransmitFlag="Enabled" ReadOnInitFlag="Disabled" />
                               ...
                            </ComObjectTable>
                ​            <ComObjectRefs>
                              <ComObjectRef Id="M-00FA_A-0000-01-B316_O-1_R-1" RefId="M-00FA_A-0000-01-B316_O-1" />​​
                ​              <ComObjectRef Id="M-00FA_A-0000-01-B316_O-2_R-2" RefId="M-00FA_A-0000-01-B316_O-2" />​​
                ​               ...
                ​​            <ComObjectRefs>
                            ...
                          </Static>​
                          <Dynamic>
                            <ChannelIndependentBlock>
                              <ComObjectRefRef RefId="M-00FA_A-0000-01-B316_O-1_R-1" />
                              <ComObjectRefRef RefId="M-00FA_A-0000-01-B316_O-1_R-1" />
                ​              ...
                ​            </ChannelIndependentBlock>
                          <Dynamic>
                ​​
                In der ETS wirst Du dann alle KO sehen. Aber passieren wird da sonst nicht viel.

                Gruß, Waldemar
                OpenKNX www.openknx.de

                Kommentar


                  #9
                  Übrigens: Der OpenKNXcreator generiert/korrigiert alle ID's selbst, allerdings muss in der Quelle eine einheitliche Basis vorhanden sein. Deswegen lief das durch.
                  OpenKNX www.openknx.de

                  Kommentar


                    #10
                    Hallo,
                    Zitat von thewhobox Beitrag anzeigen
                    Also entweder du enderst ApplicationVersion auf 1. (empfohlen)
                    Oder aber du änderst alle IDs auf "M-00FA_A-0000-02-0000".
                    Verstanden.
                    Leider kommt es hiermit
                    Code:
                            <ApplicationProgram Id="M-00FA_A-0000-01-0000" ApplicationNumber="0" ApplicationVersion="1" ProgramType="ApplicationProgram" MaskVersion="MV-57B0" Name="SHNG" LoadProcedureStyle="MergedProcedure" PeiType="0" DefaultLanguage="de" DynamicTableManagement="false" Linkable="false" MinEtsVersion="4.0" ReplacesVersions="1">
                    ​
                    Immernoch zum gleichen Fehler.
                    Zitat von mumpf Beitrag anzeigen
                    ich hab mal kurz reingeschaut. Dein xml-File hat ja keinen dynamic-part, dann kann die ETS auch nichts anzeigen.
                    Hm, das ist komisch. Denn die Datei wird durch https://github.com/thelsing/knx_ets/...er/__init__.py geschrieben und darin kommt "Dynamic" nicht vor. Es kann also nicht an einem Fehler von mir liegen.
                    thesing Kannst du etwas dazu sagen?
                    Mir ist leider nicht klar, was Du erreichen möchtest? Willst Du einen Dummy für SmarthomeNG haben?
                    Das Plugin löst, was ansonsten alle Logik-Engines/Visu-Server als Problem haben. Es macht SmarthomeNG per ETS parametrisierbar.
                    Es erzeugt die xml, daraus erstellt man eine knxprod. Dann kann man die KOs mit GAs verbinden SmarthomeNG parametriesieren (was die GAs angeht).
                    thesing benutzt das so produktiv. Es muss also möglich sein, daraus eine knxprod zu erstellen, bei der -trotz fehlendem dynamic- die KOs angezeigt werden.

                    Gruß,
                    Hendrik

                    Kommentar


                      #11
                      Zitat von henfri Beitrag anzeigen
                      Es muss also möglich sein, daraus eine knxprod zu erstellen, bei der -trotz fehlendem dynamic- die KOs angezeigt werden.
                      Nicht dass ich wüsste... ich fürchte, hier kann wirklich nur Thomas thesing helfen.

                      Gruß, Waldemar
                      Zuletzt geändert von mumpf; 08.01.2023, 00:08.
                      OpenKNX www.openknx.de

                      Kommentar


                        #12
                        Die xml wird bei mir aus SmarthomeNG erzeugt. Man erreicht damit, dass SmarthomeNG ein richtiges KNX-Device in der ETS ist und man dort nicht mehr manuelle GA und Flags zuweisen muss.

                        CreateKnxProd ist relativ einfach. Da wurde einfach alles in einen ChannelIndipendentBlock reingepackt: https://github.com/thelsing/CreateKn...wModel.cs#L338

                        Was wären denn aktuell das "bessere" Programm und aus der xml eine knxprod zu machen, und was müsste man dann in der xml ändern?
                        Ich werde das sicher auch wieder brauchen

                        Kommentar


                          #13
                          Also welches dafür besser geeignet ist kann ich dir nicht sagen^^
                          Aber um daraus ne knxprod machen zu können müssen die KOs auch im Dynamic verwendet werden.
                          Das musst bei unseren Tools händisch machen.

                          Also wie mumpf schon gut beschrieben hat:
                          Code:
                          <Dynamic>
                          <ChannelIndependentBlock>
                          <ComObjectRefRef RefId="M-00FA_A-0000-01-B316_O-1_R-1" />
                          <ComObjectRefRef RefId="M-00FA_A-0000-01-B316_O-1_R-1" />
                          ​ ...
                          ​ </ChannelIndependentBlock>
                          <Dynamic>​
                          Und natürlich sollte am besten die ID korrekt berechnet/eingetragen sein^^
                          Also ID und ApplicationNumber/Version zusammen passen.
                          OpenKNX www.openknx.de | Kaenx-Creator | Dali-GW

                          Kommentar


                            #14
                            Hallo,
                            Zitat von thesing Beitrag anzeigen
                            Was wären denn aktuell das "bessere" Programm und aus der xml eine knxprod zu machen, und was müsste man dann in der xml ändern?
                            Ich werde das sicher auch wieder brauchen
                            Ich denke - da du wirklich nur aus der xml eine knxprod erstellen willst- OpenKNXCreator ist dafür gut geeignet
                            https://github.com/OpenKNX/OpenKNXpr...ses/tag/v1.1.1

                            Kaenx-Creator natürlich auch, aber das GUI brauchst du ja gar nicht.

                            thesing hast du denn eine Idee, wie ich das XML mit der letzten Version von CreateKNXProd zum laufen bekomme/warum das bei mir scheitert? Ich wollte das Ganze kurzfristig mal probieren.


                            Ich habe es jetzt mit der o.g. Modifikation einmal probiert:
                            Code:
                            <?xml version='1.0' encoding='utf-8'?>
                            <KNX xmlns="http://knx.org/xml/project/20" CreatedBy="KNX MT" ToolVersion="5.1.255.16695">
                              <ManufacturerData>
                                <Manufacturer RefId="M-00FA">
                                  <Catalog>
                                    <CatalogSection Id="M-00FA_CS-1" Name="Geräte" Number="1" DefaultLanguage="de">
                                      <CatalogItem Id="M-00FA_H-0-0_HP-0000-01-0000_CI-0-1" Name="SmarthomeNG" Number="1" ProductRefId="M-00FA_H-0-0_P-0" Hardware2ProgramRefId="M-00FA_H-0-0_HP-0000-01-0000" DefaultLanguage="de" />
                                    </CatalogSection>
                                  </Catalog>
                                  <ApplicationPrograms>
                                    <ApplicationProgram Id="M-00FA_A-0000-01-0000" ApplicationNumber="0" ApplicationVersion="1" ProgramType="ApplicationProgram" MaskVersion="MV-57B0" Name="SHNG" LoadProcedureStyle="MergedProcedure" PeiType="0" DefaultLanguage="de" DynamicTableManagement="false" Linkable="false" MinEtsVersion="4.0" ReplacesVersions="1">
                                      <Static>
                                        <Code>
                                          <RelativeSegment Id="M-00FA_A-0000-01-0000_RS-04-00000" Name="Parameters" Offset="0" Size="0" LoadStateMachine="4" />
                                        </Code>
                                        <ParameterTypes />
                                        <Parameters />
                                        <ParameterRefs />
                                        <ComObjectTable>
                                          <ComObject Name="Alarmanlage.Scharf" Number="1" Text="Alarmanlage.Scharf" FunctionText="Alarmanlage.Scharf0" ObjectSize="1 Bit" DatapointType="" Id="M-00FA_A-0000-01-0000_O-1" ReadFlag="Disabled" WriteFlag="Enabled" UpdateFlag="Enabled" CommunicationFlag="Enabled" TransmitFlag="Disabled" ReadOnInitFlag="Enabled" />
                                          <ComObject Name="Alarmanlage.Alarm" Number="2" Text="Alarmanlage.Alarm" FunctionText="Alarmanlage.Alarm0" ObjectSize="1 Bit" DatapointType="" Id="M-00FA_A-0000-01-0000_O-2" ReadFlag="Disabled" WriteFlag="Enabled" UpdateFlag="Enabled" CommunicationFlag="Enabled" TransmitFlag="Enabled" ReadOnInitFlag="Disabled" />
                                          <ComObject Name="Alarmanlage.TVSimulation" Number="3" Text="Alarmanlage.TVSimulation" FunctionText="Alarmanlage.TVSimulation0" ObjectSize="1 Bit" DatapointType="" Id="M-00FA_A-0000-01-0000_O-3" ReadFlag="Disabled" WriteFlag="Disabled" UpdateFlag="Disabled" CommunicationFlag="Enabled" TransmitFlag="Enabled" ReadOnInitFlag="Disabled" />
                            .....
                                        </ComObjectTable>
                                        <ComObjectRefs />
                                        <AddressTable MaxEntries="255" />
                                        <AssociationTable MaxEntries="255" />
                                        <LoadProcedures>
                                          <LoadProcedure MergeId="2">
                                            <LdCtrlRelSegment AppliesTo="full" LsmIdx="4" Size="0" Mode="0" Fill="0" />
                                          </LoadProcedure>
                                          <LoadProcedure MergeId="4">
                                            <LdCtrlWriteRelMem ObjIdx="4" Offset="0" Size="0" Verify="true" />
                                          </LoadProcedure>
                                        </LoadProcedures>
                                        <Options />
                                      </Static>
                                      <Dynamic>
                                        <ChannelIndependentBlock>
                                          <ComObjectRefRef RefId="M-00FA_A-0000-01-0000_O-1" />
                                          <ComObjectRefRef RefId="M-00FA_A-0000-01-0000_O-2" />
                            ​            </ChannelIndependentBlock>
                                      </Dynamic>          
                                      
                                      
                                    </ApplicationProgram>
                                  </ApplicationPrograms>
                                  <Hardware>
                                    <Hardware Id="M-00FA_H-0-0" Name="SmartHomeNG" SerialNumber="0" VersionNumber="0" HasIndividualAddress="true" HasApplicationProgram="true" IsIPEnabled="true">
                                      <Products>
                                        <Product Id="M-00FA_H-0-0_P-0" Text="SmarthomeNG" OrderNumber="0" IsRailMounted="false" DefaultLanguage="de" />
                                      </Products>
                                      <Hardware2Programs>
                                        <Hardware2Program Id="M-00FA_H-0-0_HP-0000-01-0000" MediumTypes="MT-5">
                                          <ApplicationProgramRef RefId="M-00FA_A-0000-01-0000" />
                                        </Hardware2Program>
                                      </Hardware2Programs>
                                    </Hardware>
                                  </Hardware>
                                </Manufacturer>
                              </ManufacturerData>
                            </KNX>
                            ​

                            Das führt in der ETS zu diesem Fehler:
                            Ein interner Fehler ist aufgetreten.
                            Der Index war außerhalb des Arraybereichs.​
                            Habe ich da etwas falsch verstanden?

                            Gruß,
                            Hendrik
                            Zuletzt geändert von henfri; 08.01.2023, 18:27.

                            Kommentar


                              #15
                              Dir fehlen zusätzlich auch noch die RefObjekte.
                              Code:
                              <ComObjectRefs>
                              <ComObject RefId="M-00FA_A-0000-01-0000_O-1" Id="M-00FA_A-0000-01-0000_O-1_R-1"
                              Diese werden dann im Dynamic referenziert
                              Code:
                              <ComObjectRefRef RefId="M-00FA_A-0000-01-0000_O-1_R-1
                              OpenKNX www.openknx.de | Kaenx-Creator | Dali-GW

                              Kommentar

                              Lädt...
                              X