Ankündigung

Einklappen

Aufruf

Bitte helft bei unserer Spendenaktion: Spendenaktion Helmut Lintschinger
Mehr anzeigen
Weniger anzeigen

ESP8266 KNX mit ETS

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

    @mumpf: Ich habe inzwischen auch auf net.core 3.0 beta umgestellt. Jetzt ärgert mich noch der ConfigurationManager, obwohl ich den natürlich referenziert habe:

    Code:
    Error: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
    
     ---> System.TypeInitializationException: The type initializer for 'Knx.Ets.Converter.ConverterEngine.ConvertBase' threw an exception.
    
     ---> System.TypeInitializationException: The type initializer for 'log4net.Core.LoggerManager' threw an exception.
    
     ---> System.TypeInitializationException: The type initializer for 'log4net.Util.SystemInfo' threw an exception.
    
     ---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Configuration.ConfigurationManager, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.
    
    File name: 'System.Configuration.ConfigurationManager, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
    
       at log4net.Util.SystemInfo.GetAppSetting(String key)
    
       at log4net.Util.SystemInfo..cctor()
    
       --- End of inner exception stack trace ---
    
       at log4net.Util.SystemInfo.AssemblyLocationInfo(Assembly myAssembly)
    
       at log4net.Core.LoggerManager.GetVersionInfo()
    
       at log4net.Core.LoggerManager..cctor()
    
       --- End of inner exception stack trace ---
    
       at log4net.Core.LoggerManager.GetLogger(Assembly repositoryAssembly, String name)
    
       at log4net.LogManager.GetLogger(Assembly repositoryAssembly, String name)
    
       at log4net.LogManager.GetLogger(Type type)
    
       at Knx.Ets.Converter.ConverterEngine.ConvertBase..cctor()
    
       --- End of inner exception stack trace ---
    
       at Knx.Ets.Converter.ConverterEngine.ConvertBase.Uninitialize()
    
       --- End of inner exception stack trace ---
    @thesing: Hmm, eine wirklich vollständige GUI (á la KNX MT) zu entwickeln dürfte sehr viel Aufwand sein. Ich will den Fokus ebenfalls möglichst schnell (wieder) auf die Geräteseite bekommen. Avalonia werde ich mir mal nähere anschauen. Ich würde tatsächlich liebe ein flexibles Tool auf der Kommandozeile nutzen als ein GUI-Tool, weil es besser zu meinem Workflow passt. Ob und wie gut das gelingt, muss ich mir aber nochmal in Ruhe anschauen und überlegen.

    @mumpf: Über Deinen Ansatz mit einem Präprozessor habe ich auch schon nachgedacht. Das wäre wahrscheinlich flexibler als ein GUI-Tool und vermutlich auch einfacher zu implementieren. Könnte ich mir (jedenfalls in der Theorie) gut vorstellen.

    Ich versuche jetzt erstmal die letzten Fehler zu beseitigen. Vielleicht editiere ich einfach auch nur die XML-Dateien und nutze das Tool lediglich zum signieren.

    Herzliche Grüße einstweilen,
    Fabian

    Kommentar


      Hi Fabian,

      ich habe den hier genommen: https://www.nuget.org/packages/Syste...eview9.19421.4, aber es gibt inzwischen ein rc1, kannst auch den probieren. Vor allem, falls Du vom netcore auch den rc1 installiert hast, solltest Du auch vom ConfigurationManager den rc1 nehmen. Irgendwie hängen die zusammen...

      Gruß, Waldemar

      Kommentar


        Vielleicht reicht auch einfach ein xml-Editor mit xsd-Validierung und Autocomplete? Und die entstehende xml-Datei dann normal signieren.

        Kommentar


          Zitat von thesing Beitrag anzeigen
          Vielleicht reicht auch einfach ein xml-Editor mit xsd-Validierung und Autocomplete?
          Ja, das glaube ich auf jeden Fall, würde ich auch gerne nutzen, aber hast Du eine Idee, wo das Schema für das von Dir mit CreateKnxProd erzeugte xml zu finden ist?

          Ansonsten - wenn man etwas intensiver mit den XML-Files arbeiten will - reicht nicht nur ein Programm zum signieren. Man braucht Rechneruntersützung für die folgenden Punkte (zumindest haben mir diese Checks die Arbeit wesentlich erleichtert):
          • Id-Neuberechnung für alle Objekte basierend auf ApplicationNumber und ApplicationVersion
          • Automatische Durchnummerierung von Channel-, ParameterBlock- und ParameterSeparator-Elementen (und weiteren, nicht referenzierten Elementen)
          • Berechnung der Größe aller Parameter (und automatische Eintragung in die passenden Size-Attribute)
          • Erzeugen von Registrierungseintrag aus HardwareVersion und ApplicationVersion
          • Anpassen des xmlns an ETS4, ETS5 oder ETS5.7
          • Erzeugen eines Headerfiles mit allen Parametern und deren Offsets
          • SanityCheck: Alle Id sind eindeutig
          • SanityCheck: Alle verwendeten RefId sind auch als Id definiert
          • SanityCheck: Alle verwendeten ParamRefId sind auch als Id definiert
          • SanityCheck: Alle verwendeten ParameterType sind auch als Id definiert
          Ich stimme Dir zu, Thomas, dass das nicht sehr viel Coding ist, aber ich bin auch schon bei 500 Zeilen und wenn ich das schön mache, dann werden es eher 1000-2000.

          ABER: Ich finde CreateKnxProd mit seinem simplen UI echt klasse für den Einstieg! Deswegen würde ich das ungern missen wollen... Der occasional User, der einfach mal einen Sensor am SAMD auswerten will und etwas rumspielen will, findet so auf einfache Weise einen Einstieg.

          Gruß, Waldemar

          Kommentar


            Hi,

            man eine evtl dumme Frage, kann ich ein knx.getGroupObject auch aktualisieren ohne auf den Bus zu schreiben?
            Bzw ich würde gerne nur per Lesebefehl ein Gruppenobjekt auslesen und das periodisch auf den Bus schreiben deaktivieren...
            (Linux_Demo Beispiel)

            Viele Grüße
            Robert
            Zuletzt geändert von jeff25; 17.09.2019, 21:16.

            Kommentar


              Hi Robert,

              neben value gibt es auch ein valueNoSend, der Name sagt es schon . Du kannst kein Gruppenobjekt lesen, Du bekommst ein Event, wenn es von außen beschrieben wird.

              So richtig weiß ich nicht, was Du willst. Wenn Du nicht periodisch schreiben willst, dann mach es einfach nicht...

              Gruß, Waldemar

              Kommentar


                Hi Waldemar,

                danke für deine Antwort, vielleicht habe ich mich auch komisch ausgedrückt, wenn ich den parameter in der ETS (Send actual temperature cyclically) auf Disable stelle heisst das ja nicht da sich nicht das Kommunikationsobjekt z.b aus meiner Visu lesend auslesen will. Und daher meine Frage wie kann ich es beschreiben ohne das es auf den Bus gesendet wird. Wie ich dich verstanden habe geht es mit "valueNoSend"....?

                gruß
                Robert

                Kommentar


                  Hi Robert,

                  wenn Du zyklisch senden beendest, bedeutet das noch lange nicht, dass bei Wertänderungen der neue Wert des KO nicht gesendet werden soll. Normalerweise hat man 3 Abstufungen:
                  1. Neuer Wert wird nicht gesendet, kann nur gelesen werden
                  2. Neuer Wert wird gesendet (bei den meisten Ausgängen ist das der Standard)
                  3. Neuer Wert wird gesendet und zusätzlich der letzte gesendete Wert auch nach einer einstellbaren Zykluszeit wiederholt (nennt sich dann zyklisch senden).
                  Wenn Du jetzt bei 3 bist, ist die Frage, warum Du zu 1 willst und nicht zu 2.

                  Gruß, Waldemar

                  Kommentar


                    mumpf Lieber Waldemar, vielen Dank für Deine Hinweise. Die Umstellung auf netcore 3.0 rc1 und dem Configuration Manager rc1 hat es gebracht. Nun läuft alles wie es soll.

                    Herzliche Grüße, Fabian

                    Kommentar


                      Zitat von mumpf Beitrag anzeigen
                      Ansonsten - wenn man etwas intensiver mit den XML-Files arbeiten will - reicht nicht nur ein Programm zum signieren. Man braucht Rechneruntersützung für die folgenden Punkte (zumindest haben mir diese Checks die Arbeit wesentlich erleichtert):
                      • Id-Neuberechnung für alle Objekte basierend auf ApplicationNumber und ApplicationVersion
                      • Automatische Durchnummerierung von Channel-, ParameterBlock- und ParameterSeparator-Elementen (und weiteren, nicht referenzierten Elementen)
                      • Berechnung der Größe aller Parameter (und automatische Eintragung in die passenden Size-Attribute)
                      • Erzeugen von Registrierungseintrag aus HardwareVersion und ApplicationVersion
                      • Anpassen des xmlns an ETS4, ETS5 oder ETS5.7
                      • Erzeugen eines Headerfiles mit allen Parametern und deren Offsets
                      • SanityCheck: Alle Id sind eindeutig
                      • SanityCheck: Alle verwendeten RefId sind auch als Id definiert
                      • SanityCheck: Alle verwendeten ParamRefId sind auch als Id definiert
                      • SanityCheck: Alle verwendeten ParameterType sind auch als Id definiert
                      Hallo Waldemar, wäre es möglich das du deine oben genannten Punkte (die du scheinbar in einem eigenen Tool hast?) in CreateKnxProd von Thomas ergänzt? Das wäre schon eine riesen Erleichterung, das XML händisch zu editieren geht ja noch so einigermaßen aber es ist extrem mühsam erst beim ETS Import zu erfahren das irgendwo in den Untiefen des XML was nicht stimmt

                      Ich scheitere leider schon daran die C# Entwicklungsumgebung so zum laufen zu bringen das ich CreateKnx compilieren könnte und verwende daher die fertige exe.

                      Ich würde da verschiedene Evolutionsstufen sehen:

                      Stufe 1: aktuelle CreateKnxProd (Einstieg, manuelle editieren der XML möglich aber Zeitaufwändig da man Fehler erst sehr spät und schwer findet)
                      Stufe 2: zusätzlichen Checks um Fehler beim manuellen Editieren einfacher und zielgerichtet zu finden
                      Stufe 3: zusätzlichen Features um das manuelle Editieren schneller zu machen
                      Stufe x: .....

                      Kommentar


                        Hi,

                        metaneutrons: Freut mich, wenn ich helfen konnte, ich bin durch das alles eben mit meinem Tool schon durch...

                        Zitat von Bernator Beitrag anzeigen
                        Hallo Waldemar, wäre es möglich das du deine oben genannten Punkte (die du scheinbar in einem eigenen Tool hast?) in CreateKnxProd von Thomas ergänzt?
                        Jein... mein Problem ist, dass ich ganz anders angefangen habe. Ich habe primär ein Tool geschrieben, dass mir erlaubt, xml-Gleichteile im Dokument zu generieren und mir so Tipparbeit zu ersparen. Nach und nach sind dann weitere Kleinigkeiten hinzugekommen und so ist das Gesamtpaket entstanden. Ich arbeite dazu aber nicht auf einem Objektmodell (wie CreateKnxProd), sondern direkt auf dem XML-Dokument. Und ich habe auf dotnet core framework gesetzt, um einigermaßen Plattform unabhängig zu sein.

                        Deswegen sehe ich eine Chance, bei dem Tool von Fabian mitzumachen, aber nicht bei CrateKnxProd... Ich muss mir das aber nochmal genauer ansehen. Alternativ baue ich mein Zeug um und veröffentliche auch das noch, dann haben wir aber 3 Baustellen, das ist irgendwie auch blöd...

                        Bin auch für alternative Vorschläge offen!

                        Gruß, Waldemar

                        Kommentar


                          Schade, aber vielleicht wäre es möglich quasi eine abgespeckte Version deines Tools zu machen welches nur die Checks macht und Fehler aufzeigt?
                          Dann erstelle ich mit CreateKnxProd ein "start" xml, mache dann händisch Anpassungen und jage das xml zur Prüfung durch dein Tool um es am Ende wieder mit CreateKnxProd zu signieren. Nicht schön aber besser als nix

                          Kommentar


                            Bernator: Wo klemmt es denn beim CreateKnxProd? Du musst im Grunde nu die Solution öffnen, alle nuget-Pakete wieder herstellen (Kontexmenü im Solutionexplorer auf der Solutionebene), dann übersetzen uns los.

                            mumpf Zur xsd: Dieser Thread Seite 5.

                            Kommentar


                              Hauptsächlich daran das ich in VisualStudio, C# .net ect. nicht wirklich fit bin und mich da jetzt auch nicht wirklich beschäftigen will.
                              CreateKnxProd funktioniert ja soweit, nur fehlen eben einige checks wie von waldemar oben beschrieben die einem "manuell editierer" das leben etwas schwer machen.

                              Kommentar


                                Hi Fabian ( metaneutrons),

                                könntest Du Deine letzte (funktionierende) Version auf Github hoch laden, dann muss ich nicht die Umstellungen für netcore3.0 nochmal machen. Ich würde meine Checks einbauen. Ob Du die dann übernehmen willst, musst Du sehen... ich habe mir das Coding angesehen und bin wie gesagt komplett anders ran gegangen. Ich durchsuche das XML-Dokument immer mit xpath und prüfe bzw. ändere direkt im Dokument Attributwerte. Ich würde dann auch weiterhin auf dem serialisierten Dokument arbeiten...

                                Ansonsten wollte ich noch anmerken, dass ich bei Deinem Kommandozeilen-Tool das Edit-Kommando nicht wirklich für sinnvoll halte. Entweder man macht ein Kommandozeilen-Werkzeug und editiert dann direkt im XML oder man macht ein GUI-Werkzeug und editiert dort. Dein Edit-Kommando würde ja alle Editiervorgänge im XML wieder zerstören, oder hab ich das falsch verstanden?

                                Gruß, Waldemar

                                Kommentar

                                Lädt...
                                X