Ankündigung

Einklappen
Keine Ankündigung bisher.

Neue libknx für C++ KNX Zugriff

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

    KNX/EIB Neue libknx für C++ KNX Zugriff

    Guten Tag,

    nachdem ich vom Forum ziemlich viel Hilfe bekommen habe möchte ich nun auch etwas zurückgeben. Ich bin mit einem KNX IP Gateway ausgestattet und habe bisher immer die Software der Firma Weinzierl verwendet um z.B. die Daten auf dem Bus zu protokollieren. Da ich dabei aber immer an eine Distribution gebunden war, habe ich mich entschlossen eine Bibliothek selbst zu schreiben.

    Neben den existierenden Möglichkeiten eibd, linknx, uva. wollte ich eine einfache und saubere Schnittstelle realisieren. Die libknx soll dabei weder eine Visualisierung noch eine Ablaufsteuerung sein. Sie dient lediglich dem einfachen Zugriff auf den KNX Bus per UDP/IP.

    Ziel bei der Entwicklung waren

    * Plattformunabhängigkeit: Win, Linux, Mac, ...
    * EInfaches C++ Interface mit Typsicherheit
    * Minimale Abhängigkeiten (nur Boost)
    * Basis für Eigenentwicklungen

    Nachdem ich nun in der Lage bin die ersten Lampen zu schalten und die Uhrzeit auf den Bus zu schicken, habe ich mich entschlossen die Software der Allgemeinheit zugänglich zu machen.

    Die Software findet man ab sofort hier .

    Ein minimales Programm mit der libknx sieht dann so aus

    Code:
    #include "knx.hpp"
    int main(int argc, char ** argv) {
      knx::config config(argc, argv);
      knx::connection connection(config);
      knx::handle handle(connection);
      connection.set<knx::dpt_switch>("1/2/3", knx::dpt_switch::ON);
      return 0;
    }
    Ich hoffe auf Kritik, Feedback, Feature-Anfragen und viele Nutzer. Viele Dinge fehlen noch aber ich möchte früh allen Interessierten die Möglichkeit geben Einfluss zu nehmen.

    Gruß
    nagilo

    #2
    Hallo nagilo,

    sehe ich das richtig, dass deine linknx folgendes bieten will:
    • Eine KNXnet/IP Tunneling Client Implementierung (über das API allerdings nicht zugänglich)
    • Ein minimaler KNX Stack ausschließlich für Gruppenkommunikation
    • Ein Satz von DPT-Decodern/Encodern

    Ich denke, gerade am Anfang wäre es gut, mehr über die Struktur und Designprinzipien zu schreiben. Und darüber, was noch alles geplant ist oder möglich sein wird (Erweiterungspunkte? Andere Buszugangsverfahren? Eventing?).



    Gruß, Klaus

    Kommentar


      #3
      Hi,

      die Bibliothek soll jedem C++ Programmierer ermöglichen Daten auf einen KNX Bus zu schreiben oder von ihm zu lesen.

      Zur Zeit liegt mir nur ein KNXnet/IP gateway vor so dass ich noch keine andere Zugangsmöglichkeiten plane. Wenn jemand daran interesse hat kann man gerne darüber diskutieren.


      > Eine KNXnet/IP Tunneling Client Implementierung (über das API allerdings nicht zugänglich)
      Ja testhalber habe ich dazu einen tunneling client geschrieben. Wieso ist die API nicht zugänglich ?

      > Ein minimaler KNX Stack ausschließlich für Gruppenkommunikation
      Zur Zeit ist die Bibliothek tatsächlich auf Gruppenkommunikation beschränkt (lässt sich aber leicht ändern)

      > Ein Satz von DPT-Decodern/Encodern
      Genau, aber der muss noch dringend wachsen

      > Struktur und Designprinzipien
      Die interne Bibliotheksstruktur soll dem Anwender verborgen bleiben. Zur Zeit hat ein Endanwender nur eine set und eine get Methode.

      > Und darüber, was noch alles geplant ist oder möglich sein wird
      Geplant von meiner Seite ist es die meisten dpt zu implementieren. Alles weitere möchte ich zur Zeit je nach Interessenlage machen.

      > Erweiterungspunkte?
      Zur Zeit plane ich eine vollständige Implementierung der Tunneling Kommunikation. Weiteres ist noch offen.

      > Andere Buszugangsverfahren?
      Noch keine geplant. Welche wären denn von Interesse ?

      > Eventing?
      Intern verwendet die Bibliothek einen Event Mechanismus der für den Endanwender noch nicht sichtbar ist. Ich könnte mir hier eine Benutzerschnittstelle sehr gut vorstellen.

      Gruß
      Norbert

      Kommentar


        #4
        Neue libknx für C++ KNX Zugriff

        Hi, toll, dass Du deine Entwicklung teilen willst.

        Zwei Fragen dazu:
        Warum closed source?
        Wo ist die Abgrenzung zur bcu sdk (http://www.auto.tuwien.ac.at/~mkoegl...x.php/bcusdk)?

        Kommentar


          #5
          Hallo,

          da sich die Quellen zur Zeit noch stark ändern werden und ich darin meine Vorstellungen uneingeschränkt realisieren möchte habe ich beschlossen (zur Zeit) die Quellen noch nicht zu veröffentlichen. Das kann sich aber je nach Entwicklung schnell ändern.

          Die Abgrenzung zur BCU sind im Wesentlichen nativer (ohne cygwin) Support für Windows und MacOS sowie minimale Abhängigkeiten. Für die BCU werden benötigt:

          If you want to use the BCU SDK on Windows, you need to install Cygwin. You need to install at least:
          g++
          bison
          flex
          libxml2-devel
          make
          gettext-devel
          w32-api
          libxml2-devel
          xsltproc (libxslt)

          Außer der boost wird für die libknx NICHTS benötigt.

          Gruß
          Norbert

          Kommentar


            #6
            Neue libknx für C++ KNX Zugriff

            Das mit den Abhängigkeiten ist super.

            Mit dem Windows-Support bin ich mir wiederum nicht so sicher. Wenn möglich, dann immer Windows und Linux...

            Was übrigens eine feine Sache ist, ist wenn Du das eibd TCP Interface anbietest. Einfach, weil viele Programme dies nutzen, z.B. fhem. Habe es selbst "kürzlich" nachgebaut. Die Quellen findest du bei Bedarf über den Download-Bereich unter "hsd".

            Kommentar


              #7
              Hallo,

              ich entwickele primär unter Linux also ist Linux natürlich auch dabei.

              Das TCP interface des eibd kenne ich nocht nicht aber ich schau es mir mal an. Ich denke ich sollte mich aber zunächst auf die Funktionalität der Bibliothek selbst konzentrieren.

              Gruß

              Kommentar


                #8
                Version 1.2.1 veröffentlicht

                Hallo,

                seit heute habe ich Version 1.2.1 mit Unterstützung für weitere dpt veröffentlicht. Neu ist auch ein listener interface um direkte Benachrichtigungen zu bekommen.

                Hier nochmal der Link KNX Library

                Viel Spass damit.

                Kommentar


                  #9
                  Zitat von nagilo Beitrag anzeigen
                  seit heute habe ich Version 1.2.1 mit Unterstützung für weitere dpt veröffentlicht. Neu ist auch ein listener interface um direkte Benachrichtigungen zu bekommen.
                  Hallo Norbert,

                  feine Sache. Die eibd-Client-Lib ist mit ihren Abhängigkeiten (vor allem von eibd) und der mangelnden Portierbarkeit keine Freude, Falcon unter Windows hat einige merkwürdige Eigenheiten und eine besch... Dokumentation, und mit Calimero brauche ich zum einen Java, zum anderen erschien es mir auch nicht gerade bugfrei.

                  Die Dokumentation deiner libknx suggeriert leider, dass du nur GroupValueRead und GroupValueWrite unterstützt. Ist die Unterstützung verbindungsorientierter Kommunikation (PropertyWrite, MemoryWrite, Authentication, ...) geplant?

                  Ich würde die libknx sehr gerne in mein Configuration Tool integrieren (siehe hier und den Rest des zugehörigen Threads). Allerdings helfen mir GAs da nicht wirklich weiter.
                  Ich könnte ggf. im Gegenzug mit Code unterstützen, da ist einiges Einschlägige vorhanden.

                  Max

                  Kommentar


                    #10
                    Hi,

                    hab mir die Property Read Write und Memory Write angesehen ... bisher hatte ich keinen Bedarf dafür .. es gibt auch 10 bits um die APCIs zu setzten, also ne ganze menge holz.

                    Welche genau brauchst du denn davon ? Die da ?

                    A_PropertyValue_Write
                    A_Memory_Write
                    A_Authorize_Request

                    Ich kann die einbauen -- kannst du mir auch nen Tipp geben, wie ich das testen kann ?

                    Gruß

                    Kommentar


                      #11
                      Zitat von nagilo Beitrag anzeigen
                      Welche genau brauchst du denn davon ? Die da ?

                      A_PropertyValue_Write
                      A_Memory_Write
                      A_Authorize_Request

                      Ich kann die einbauen
                      Das wäre schon mal super, aber die Wunschliste geht noch ein bisschen weiter:
                      A_Memory_Read
                      A_PropertyValue_Read
                      MaskVersionRead
                      sowie das ganze Geraffel zum Lesen und Setzen der PA.

                      Dazu gehört dann aber auch das ganze Session Handling auf Layer 4, das ist leider nicht unbedingt spaßbehaftet. BTDT.


                      Zum Testen kann ich dir gerne einen KNX Multisensor zur Verfügung stellen.

                      Max

                      Kommentar


                        #12
                        Hi,

                        das "Geraffel zum setzen und lesen der PA" kann ich hier ja auch testen.

                        Mein Vorschlag, da ich das ganze immer nur in der Freizeit mache und das etwas dauert ;-) : Ich probier einem Gerät eine Adresse zuzuordnen und zu lesen. Wenn das klappt melde ich mich wieder. Macht das Sinn ?

                        Gruß

                        PS: Deinen Sensor finde ich sehr cool -- ich nehme hierfür einen RasPI mit meiner libknx und einem I2C Feuchte und Temperatursensor. Geht seit Monaten prima -- frisst aber Strom.

                        Kommentar


                          #13
                          Hallo,

                          neue Version 1.2.2 online

                          * Neue DPT 7.001, 8.001
                          * Bugfixes für DPT 9 & 10

                          * Leider noch keine PropertyRead/Write ... kommt noch

                          Gruß
                          nagilo

                          Kommentar


                            #14
                            Habe leider erst jetzt den Thread wiedergefunden.
                            Du kannst gerne einen älteren Hardwarestand von mir gegen Porto haben. Die Feuchteerfassung dort ist zwar ein reines Schätzeisen, aber das ist für deine Zwecke ja egal.
                            Schick mal eine PN.

                            Max

                            Kommentar


                              #15
                              Hallo,

                              hab den alten Thread gerade doch gefunden und nun auch hier.

                              Hab gerade die Version 1.2.3 veröffentlicht mit Unterstützung von DPTs:

                              1_001,2_001,3_007,4_001,5_001,6_001,7_001,8_001,9_ 001,10_001,11_001,12_001,13_001,14_000,15_000,16_0 00,17_001,18_001,19_001,20_011,21_001,26_001,219_0 01,232_600

                              Dazu nun auch endlich 2 segment Gruppenadressen.

                              Zum Download stehen Win32, Linux64 und Mac64 bereit. Für Win64 hat VSExpress 2013 kein Target mehr ... komisch.

                              Viel Spass damit



                              Kommentar

                              Lädt...
                              X