Ankündigung

Einklappen
Keine Ankündigung bisher.

ARDUINO am KNX

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

    Danke erstmal für den Tipp von Mag Gyver,
    hat leider nicht geholfen. Beide Varianten sollten nach meinem Verständnis dasselbe Ergebnis bringen. Die Loop Funktion dreht sich permanent, und serialEvent ist ein Listener, der auf ein eingehendes Ereignis wartet, was am Ende auch eine endlose Schleife ist.
    Ich habe mal mit den bescheidenen Mitteln versucht zu debuggen. Es wird nach dem Empfang diese Funktion gerufen, die auch abgearbeitet wird:
    Code:
    [COLOR=#0000ff]void[/COLOR][COLOR=#267f99]KnxTpUart[/COLOR][COLOR=#000000]::[/COLOR][COLOR=#795e26]sendAck[/COLOR][COLOR=#000000]() {[/COLOR]
    
    [COLOR=#000000]byte sendByte [/COLOR][COLOR=#000000]=[/COLOR][COLOR=#000000] B00010001;[/COLOR]
    [COLOR=#001080]_serialport[/COLOR][COLOR=#000000]->[/COLOR][COLOR=#795e26]write[/COLOR][COLOR=#000000](sendByte);[/COLOR]
    [COLOR=#795e26]delay[/COLOR][COLOR=#000000](SERIAL_WRITE_DELAY_MS);[/COLOR]
    [COLOR=#000000]}[/COLOR]
    Das sollte doch die Funktion sein, welche eine Bestätigung zurücksendet.
    Aber trotzdem sieht man am Busmonitor keine Bestätigung. Werde jetzt mal mit einem anderen Arduino testen. Wenn noch jemand einen Fehler sieht, oder eine Idee hat, dann gerne her damit.

    Grüße
    Andreas

    Kommentar


      Hallo Zusammen,

      Ich versuche gerade verzweifelt eine LED zum leuchten zu bringen.
      Schreiben auf den Bus ist kein Problem, aber wenn der Arduino auf eine Gruppenadresse reagieren soll, stellt er sich taub.

      Hardware ist ein Arduino Pro Mini 3,3V und ein Siemens 117-2AB12 Busankoppler.
      FTDI Programmiergerät wurde nach dem flashen entfernt und der Arduino extern mit 3,3V versorgt.
      RX/TX sind auch gekreuzt auf dem dem Busankoppler angeschlossen.

      Hier mal mein Code:
      Code:
      #include <KnxTpUart.h>
      
      KnxTpUart knx(&Serial, "1.1.16");
      
      void setup() {
        pinMode(13, OUTPUT);
        digitalWrite(13, LOW);
        
        Serial.begin(19200, SERIAL_8E1);
        knx.uartReset();
      
        knx.addListenGroupAddress("1/1/0");
        knx.addListenGroupAddress("1/1/1");
        knx.addListenGroupAddress("1/1/2");
        knx.addListenGroupAddress("1/1/3");
        knx.addListenGroupAddress("1/1/4");
      }
      
      
      
      void loop() {
      
      
      
        }
      
      
      
      void serialEvent() {
        KnxTpUartSerialEventType eType = knx.serialEvent();
        if (eType == TPUART_RESET_INDICATION) {
          
        }
        else if (eType == UNKNOWN) {
          
        }
        else if (eType == KNX_TELEGRAM) {
          
          KnxTelegram* telegram = knx.getReceivedTelegram();
          // Telegrammauswertung auf KNX (bei Empfang immer notwendig)
          String target =
            String(0 + telegram->getTargetMainGroup())   + "/" +
            String(0 + telegram->getTargetMiddleGroup()) + "/" +
            String(0 + telegram->getTargetSubGroup());
      
          // Here you have the telegram and can do whatever you want
          if (telegram->getCommand() == KNX_COMMAND_WRITE) {
            // Auswertung des empfangenen KNX-Telegrammes mit Schreibbefehl (Flag) -> Aktion
            if (target == "1/1/2") {
              int received_1_1_2 = telegram->getBool();
              if (received_1_1_2) {
               digitalWrite(13, HIGH);
              }
              else {
                digitalWrite(13, LOW);
              }
      }}}}
      Sende ich nun mit der ETS über den Gruppenmonitor 1/1/2 ab, tut sich nichts.
      Zuletzt geändert von MasterOfPuppets; 15.12.2019, 15:31.
      Gruß Pierre

      Mein Bau: Sanierung

      DIY-Bastelprojekte: KNX-Statusdisplay/|\KNX-Tankmonitor(Füllstandsamessung)

      Kommentar


        So nach einigem Probieren habe ich festgestellt dass es wohl ein Zeitproblem ist.
        Mit
        Code:
         [COLOR=#af00db]#define[/COLOR][COLOR=#0000ff] [/COLOR][COLOR=#795e26]SERIAL_WRITE_DELAY_MS[/COLOR][COLOR=#0000ff] [/COLOR][COLOR=#09885a]40[/COLOR]
        kommt unregelmäßig ein Ack zum bus.
        Wenn ich aber das Send Ack stumpf hier auslöse, dann kommt die Antwort immer auf den Bus.

        Code:
         [COLOR=#0000ff]bool[/COLOR][COLOR=#000000] [/COLOR][COLOR=#267f99]KnxTpUart[/COLOR][COLOR=#000000]::[/COLOR][COLOR=#795e26]readKNXTelegram[/COLOR][COLOR=#000000]() {[/COLOR]
          [COLOR=#000000]  [/COLOR][COLOR=#795e26]sendAck[/COLOR][COLOR=#000000]();[/COLOR]
          [COLOR=#008000]  // Receive header[/COLOR]
          [COLOR=#000000]  [/COLOR][COLOR=#af00db]for[/COLOR][COLOR=#000000] ([/COLOR][COLOR=#0000ff]int[/COLOR][COLOR=#000000] i [/COLOR][COLOR=#000000]=[/COLOR][COLOR=#000000] [/COLOR][COLOR=#09885a]0[/COLOR][COLOR=#000000]; i [/COLOR][COLOR=#000000]<[/COLOR][COLOR=#000000] [/COLOR][COLOR=#09885a]6[/COLOR][COLOR=#000000]; i[/COLOR][COLOR=#000000]++[/COLOR][COLOR=#000000]) {[/COLOR]
          [COLOR=#000000]    [/COLOR][COLOR=#001080]_tg[/COLOR][COLOR=#000000]->[/COLOR][COLOR=#795e26]setBufferByte[/COLOR][COLOR=#000000](i, [/COLOR][COLOR=#795e26]serialRead[/COLOR][COLOR=#000000]());[/COLOR]
          [COLOR=#000000]  }[/COLOR]
        Hat jemand eine Idee, wie man die Sache beschleunigen könnte, ohne in der Bibliothek rum zu murksen?

        Kommentar


          Information zur Siemens BCU.

          Laut Spezifikation ist die für 5 Volt Systeme gedacht, bitte Pegelwandler einsetzen. Kann dann zu entsprechenden Fehlverhalten führen.


          Zur Bibliothek selbst.

          Diese ist sehr rudimentär und nicht wirklich ausgereift, es wird sehr viel mit "delay" gearbeitet was wiederum noch weitere Probleme mit sich bringt. Der Autor Daniel-Klein-Albers macht schon seit einigen Jahren nichts daran. ThorstenGehrig hat die Bibliothek entdeckt und hier sein Projekt darauf vorgestellt. Was allgemein in diesem Forum einen Push ausgelöst hat, mittlerweile gibt es hier mehrere Leute die gemeinsam ihre eigenen Lösungen als KNX DIY vorstellen.

          Wenn du also etwas ändern möchtest, aufgrund der Tatsache das es in deiner Lösung das Beste ist, dann nur zu.

          Alternativen findest du genug:

          Kommentar


            Es sei hier noch angemerkt, dass KONNEKTING ursprünglich auf Franck Marini's Code aufgebaut hat. Wir hatten versucht mit Franck für Verbesserungsvorschläge Kontakt auf zu nehmen, ist aber alles im Sand verlaufen. Wir haben von Franck auf unsere Anfragen nie eine Antwort erhalten. Laut Github ist seit über 3 Jahren ncihts mehr am Code geschehen...
            KONNEKTING ist mittlerweile recht weit von der ursprünglichen Code-Basis von Franck entfernt und hat zahlreiche Verbesserungen erfahren.

            Wer "mal eben schnell" was mit KONNEKTING basteln will sollte etwas Zeit mitbringen oder doch auf die recht einfache Library von DKA/ThorstenGehrig setzen.
            Wer mehr will, sollte zu KONNEKTING greifen.

            Vorweihnachtliche Grüße,
            Alex

            Kommentar


              Hallo, ich bekomme den "KNX Tiny Serial Modul 810-UART" von Weinzierl.

              https://www.weinzierl.de/index.php/d...-interface-810

              https://www.weinzierl.de/images/down...t_Daten_DE.pdf

              https://www.weinzierl.de/images/down...l_Protocol.pdf

              Weiß jemand mit welcher Arduino KNX-Bibliothek er funktionieren könnte? (KONNEKTING, DKA/ThorstenGehrig). Franck Marini's Code möchte ich nicht verwenden, da er wie zuvor geschrieben nicht mehr gepflegt wird.

              Vielen Dank und feierliche Grüße

              Werner

              Kommentar


                Da ein TP-UART drauf ist, sollte er mit jeder Variante funktionieren. Es kommt darauf an was du willst:
                - Arduino am knx: Programmierung auf Telegramm basis
                - Konnekting: Softwarestack bei dem die Parametrisierung durch eine neue Suite durch eine neues Protokoll (auf Basis der Gruppenkommunikation) erfolgt
                - Mein knx-Stack: Programmierung auf Basis von Kommunikationsobjekten. Parametrisierung durch ETS. Das Signieren der knxprod ist nach Meinung von einigen allerdings eine rechtliche Grauzone. Als Hardware reicht ein Arduino allerdings nicht. Ein ESP8266, ein ESP32 oder ein SAMD21 sollte es schon sein. Dafür geht bei den Boards mit WLAN auch KNX/IP (Siehe https://github.com/thelsing/knx)

                VG
                Thomas

                Kommentar


                  Es wird keiner der genannten Stacks funktionieren. Weinzierl hat lt. Beschreibung ein „modifiziertes UART Protokoll“ erstellt, damit keine zeitkritischen Anforderungen an den Controller gestellt werden müssen. Sinnvoll aber nicht KISS...

                  Kommentar


                    Zitat von thesing Beitrag anzeigen
                    Da ein TP-UART drauf ist, sollte er mit jeder Variante funktionieren. Es kommt darauf an was du willst:
                    - Arduino am knx: Programmierung auf Telegramm basis
                    - Konnekting: Softwarestack bei dem die Parametrisierung durch eine neue Suite durch eine neues Protokoll (auf Basis der Gruppenkommunikation) erfolgt
                    - Mein knx-Stack: Programmierung auf Basis von Kommunikationsobjekten. Parametrisierung durch ETS. Das Signieren der knxprod ist nach Meinung von einigen allerdings eine rechtliche Grauzone. Als Hardware reicht ein Arduino allerdings nicht. Ein ESP8266, ein ESP32 oder ein SAMD21 sollte es schon sein. Dafür geht bei den Boards mit WLAN auch KNX/IP (Siehe https://github.com/thelsing/knx)

                    VG
                    Thomas
                    Hallo Thomas,

                    danke für die Antwort.

                    Es gibt mehrere Wege eigene Geräte in die Haussteuerung zu bringen. Um die Komplexität und den Programmieraufwand niedrig zu halten sollten alle Geräte eine identische Programmierumgebung haben (in diesem Fall Arduino). Auch werden nicht alle am KNX Bus hängen sondern in Gruppen über Bluetooth angesprochen.

                    Das war genau was ich gesucht habe. Deine Bibliothek werde ich mir genauer anschauen und was ich bisher in einem anderen Thread darüber gelesen habe klingt vielversprechend.

                    Nach einem ersten Blick auf Deine Sourcen bin ich beeindruckt, von den Möglichkeiten und dem Aufbau. Sollte ich wegen dem Weinzierl Gerät Anpassungen machen müssen, so kann ich es über die Table_Facade Klasse steuern. Danke für die Bereitstellung des Codes!!!!

                    Gruß
                    Werner

                    Kommentar


                      Hallo Werner,

                      auch ich habe sehr gute Erfahrungen mit der Lib von Thomas gemacht, aber wenn Du an mehreren Geräten arbeitest und eine einheitliche Entwicklungsumgebung suchst, kann ich dir nur Plattform IO empfehlen, idealerweise mit Visual Studio Code. Dort kannst Du alle Arduino Libs verwenden, bekommst aber noch einen guten Editor, Debugger und Git dazu.

                      Gruß, Waldemar
                      OpenKNX www.openknx.de

                      Kommentar


                        Zitat von mumpf Beitrag anzeigen
                        Hallo Werner,

                        auch ich habe sehr gute Erfahrungen mit der Lib von Thomas gemacht, aber wenn Du an mehreren Geräten arbeitest und eine einheitliche Entwicklungsumgebung suchst, kann ich dir nur Plattform IO empfehlen, idealerweise mit Visual Studio Code. Dort kannst Du alle Arduino Libs verwenden, bekommst aber noch einen guten Editor, Debugger und Git dazu.

                        Gruß, Waldemar
                        Hallo Waldemar,

                        danke für den Hinweis, ich werde es mir anschauen.

                        Gruß

                        Werner

                        Kommentar


                          Zitat von mumpf Beitrag anzeigen
                          Hallo Werner,

                          auch ich habe sehr gute Erfahrungen mit der Lib von Thomas gemacht, aber wenn Du an mehreren Geräten arbeitest und eine einheitliche Entwicklungsumgebung suchst, kann ich dir nur Plattform IO empfehlen, idealerweise mit Visual Studio Code. Dort kannst Du alle Arduino Libs verwenden, bekommst aber noch einen guten Editor, Debugger und Git dazu.

                          Gruß, Waldemar
                          Hallo Waldemar,

                          jetzt habe ich mir Plattform IO angeschaut und finde es auch eine tolle Idee. Doch für mich wäre es eine weitere Entwicklungsumgebung in die ich mich einarbeiten müßte. Auch wenn bei der Arduino IDE so manches fehlt, werde ich diese verwenden.

                          Für das Debugging werde ich wie Thomas Linux verwenden.

                          Gruß

                          Kommentar


                            wkaa Bitte lass die Vollzitate sein... Ein Teilzitat für den Bezug, oder die Namensnennung genügt. Vielen Dank!

                            Kommentar


                              Zitat von jentz1986 Beitrag anzeigen
                              Es wird keiner der genannten Stacks funktionieren. Weinzierl hat lt. Beschreibung ein „modifiziertes UART Protokoll“ erstellt, damit keine zeitkritischen Anforderungen an den Controller gestellt werden müssen.
                              Inwischen kann ich der Aussage nicht zustimmen. Ich habe mir den Source Code von Thomas angeschaut und mit dem Kommunikationsprotokoll des TinySerial verglichen, der könnte schon funktionieren, aber das werde nach Lieferung des Gerätes feststellen. Ansonsten versuche ich den Code entsprechend anzupassen.

                              Aus der Doku:
                              The KNX Tiny Serial, described in this document, is based on the TP-UART Protocol with the following modifications: - Configurable ‘IndividualAddress’ - Configurable ‘Acknowledge-Handling’ according to KNX specification
                              Weitere Details finden sich in der Doku des Kommunikationsprotokolls, sonst wird das Zitat zu lang....

                              Zitat von jentz1986 Beitrag anzeigen
                              Sinnvoll aber nicht KISS...
                              Vermutlich ist mit KISS das KISS-Prinzip (englisch Keep it simple, stupid) gemeint. Das verstehe ich in diesem Zusammenhang nicht, für mich ist es einfacher, durch Weinzierl bereits gelöst.
                              Genau wegen der Pufferung der Daten habe ich mir dieses Interface ausgesucht um noch andere Aufgaben mit dem Controller zu erledigen.

                              Kommentar


                                Falls jemand nach günstiger UART <> KNX Schnittstelle für Arduino Projekte sucht:
                                https://knx-user-forum.de/forum/proj...nx-transceiver

                                Funktioniert natürlich auch mit der Bibliothek von Thorsten.

                                Kommentar

                                Lädt...
                                X