Ankündigung

Einklappen
Keine Ankündigung bisher.

ARDUINO am KNX

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

  • 2ndsky
    antwortet
    Hallo Leute,

    Entschuldigung falls das jetzt so dazwischen geschoben ist, aber mit dem Arduino ließe sich doch bestimmt auch das Hoval LSA Modul anbinden, siehe PDF in Post #1: https://knx-user-forum.de/knx-eib-fo...-auslesen.html

    Selber habe ich leider gerade überhaupt keine Zeit mich da einzulesen und zum Platinen ätzen und löten schon gleich zweimal nicht. Falls das hier jemand für mich (und evtl. noch andere im Forum?) übernehmen würde, wäre mir das schon etwas Wert (also gegen Bezahlung). Vielleicht können die Herren da mal drüber schauen und mir bei Interesse mal ein Angebot per PN machen. Danke!

    Einen Kommentar schreiben:


  • mode
    antwortet
    Hi

    result von groupWrite2ByteFloat bleibt immer gleich?
    Tritt das Problem auch bei anderen groupWrite (also nicht Float) Methoden auf?

    Kannst du mit dem Oszi an der Seriellen zwischen Arduino und TP Uart messen ob der Arduino im Fehlerfall überhaupt noch Daten zum TP UART sendet?

    VG

    Mode

    Einen Kommentar schreiben:


  • DavidB
    antwortet
    Zitat von ThorstenGehrig Beitrag anzeigen
    Vielleicht einfach mal ein ganz simples Test-Programm laufen lassen: alle 60 Sekunden ein Telegram schicken und danach 60 Sekunden warten...
    Hallo zusammen,

    Thorsten, danke für die Rückmeldung. Irgendwie finde ich das Problem nicht. Hardware-seitig habe ich alles ausgeschlossen: mehrere Arduinos getestet, mehrere BCUs getestet und an meinem Bus kann es auch nicht liegen. Ich habe mal eine kleine Testumgebung aufgebaut, weil ich zwischen durch den Linienkoppler unter Verdacht hatte. Hat alles nichts gebracht. Unten mal der Code meines Test-Scripts. Vielleicht fällt ja jemandem was auf.

    Wie schon beschrieben, nach ein paar Minuten kommen keine Telegramme mehr an. Der Arduino tut aber noch, auf der seriellen Konsole sehe ich dann weiterhin die Ausgaben. Der Zeitraum bis zum Fehler ist unterschiedlich. Ein Reset des Arduinos löst das Problem dann zeitweise, bis er nach ein paar Minuten wieder stumm wird.

    Ich bin für jeden Rat dankbar.

    Danke und viele Grüße,

    David


    Code:
    #include <KnxTelegram.h>
    #include <KnxTpUart.h>
    
    #define PHYS_ADD "1.0.5"
    
    #define GA_TEMP_NETZTEIL "0/3/0"
    #define TEMP_SEND_INTERVAL_MS 5000
    
    
    KnxTpUart knx(&Serial1, PHYS_ADD);
    unsigned long startTime;
    
    void setup() {
      Serial.begin(9600);
      Serial.println("TP-UART Test");  
      Serial1.begin(19200);
      UCSR1C = UCSR1C | B00100000; // Even Parity
      Serial.print("UCSR1A: ");
      Serial.println(UCSR1A, BIN);
      Serial.print("UCSR1B: ");
      Serial.println(UCSR1B, BIN);
      Serial.print("UCSR1C: ");
      Serial.println(UCSR1C, BIN);
    
      knx.uartReset();
      knx.addListenGroupAddress(GA_TEMP_NETZTEIL);
      
      startTime = millis();
    }
    
    
    void loop() {
      if (abs(millis() - startTime) < TEMP_SEND_INTERVAL_MS) {
        delay(1);
        return;
      }
      startTime = millis();
    
      float temp = 35;
      Serial.print("Sending Temp: ");
      Serial.println(temp);
      boolean result = knx.groupWrite2ByteFloat(GA_TEMP_NETZTEIL, temp);
      Serial.print("Sent successfully: ");
      Serial.println(result);
    }
    
    void serialEvent1() {
      KnxTpUartSerialEventType eType = knx.serialEvent();
      if (eType == KNX_TELEGRAM) {
         KnxTelegram* telegram = knx.getReceivedTelegram();
    
      }
    }

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Gratuliere - und danke für das Feedback und das du deinen Code reingestellt hast.
    :-)

    Einen Kommentar schreiben:


  • htwg
    antwortet
    KNX Nachrichten Empfangen funktioniert

    Hallo zusammen,
    habe es nun geschafft Nachrichten auf dem Arduino Nano/Mini mit nur einer seriellen Schnittstelle zu Empfangen und zu verarbeiten.

    Vielen Dank an Thorsten, Michael und Bernator für eure Kommentare. Zum einen hat mir das knx.addListenGroupAddress("0/0/1") gefehlt und zum anderen haben tatsächlich meine Debuginfos auf dem gleichen seriellen Anschluss gestört.

    Hier mein Beispielcode zum Empfangen von KNX Nachrichten, evtl Hilft es ja jemand:
    Code:
    ////////////////////////////////////////////////////////////
    // KNX Project - HTWG Konstanz
    // Receive Grouptelegrams and turn on/off led
    //
    // Works with Arduino MINI
    // Only one serial port is needed, no debug outputs! Don't add Serial.println
    // After Upload the sketch you have to disconnect the Arduino from PC
    //////////////////////////////////////////////////////////
    
    #include <KnxTpUart.h>
    
    // Initialize the KNX TP-UART library on the Serial1 port of Arduino Mega
    // and with KNX physical address 1.1.16
    KnxTpUart knx(&Serial, "1.1.6");
    
    //LED Connection
    int led = 13;
    
    void setup() {
      Serial.begin(19200);
      UCSR0C = UCSR0C | B00100000; // Even Parity
    
      knx.uartReset();
    
      //The Group Adresses you want to listen too
      knx.addListenGroupAddress("0/0/1");
      knx.addListenGroupAddress("0/0/4");
    
      //LED pinMode
      pinMode(led, OUTPUT);
    }
    
    
    void loop() {
      //Only wait for an Serial Event
    }
    
    void serialEvent() {
      //Start Serial Event
      digitalWrite(led, LOW);   // turn the LED on (HIGH is the voltage level)
      delay(200);
      digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
      delay(200);
      digitalWrite(led, LOW);   // turn the LED on (HIGH is the voltage level)
      delay(200);
    
      //Get Serial Event
      KnxTpUartSerialEventType eType = knx.serialEvent();
    
      //Check Serial Event
      if (eType == KNX_TELEGRAM) {
        KnxTelegram* telegram = knx.getReceivedTelegram();
        // Here you have the telegram and can do whatever you want
    
        //Turn on/off the light
        if (telegram->getFirstDataByte() == 0) {
          digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
        } else {
          digitalWrite(led, LOW);   // turn the LED on (HIGH is the voltage level)
        }
    
      } else {
        //Unknown Event: Make Trouble!
        for (int i = 0; i < 10; i++) {
          digitalWrite(led, HIGH);     // LED on
          delay(30);
          digitalWrite(led, LOW);     // LED off
          delay(30);
        }
      }
    }
    Grüße
    Pascal

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Hi,
    @Rasmus7700:
    Sorry for my late reply.
    which version of the Library do you use? The "old" DKA-One - or the new one?
    With with Arduino? The referred comment from myself does not apply to the "new" Version.
    You can find the new one here:
    https://bitbucket.org/thorstengehrig...knx-user-forum

    @DavidB:
    Ich habe die neue Version selbst im Einsatz an einem RFID Leser - und keine Probleme.
    Die letzen Änderungen haben auch keinen Einfluss auf irgendwelche dinge die verspätet auftreten... daher: wenn es am Anfang läuft - sollte es immer Laufen (oder du hast was in deinem Code der nicht passt).
    Vielleicht einfach mal ein ganz simples Test-Programm laufen lassen: alle 60 Sekunden ein Telegram schicken und danach 60 Sekunden warten...

    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • DavidB
    antwortet
    Hallo zusammen,

    hat jemand von euch die Library mit den letzten Änderungen von Thorsten schon produktiv im Einsatz? Ich habe seit kurzem das Problem, dass nach ein paar Minuten Betrieb keine KNX-Telegramme mehr gesendet werden. Der Arduino arbeitet aber noch normal, wie mir das Logging über Serial zeigt. Zeitlich passt das bei mir mit der Verwendung der neuen Library zusammen. Jetzt bin ich mir unsicher, ob es an der BCU oder der Lib liegt. Hat das schon mal jemand gehabt?

    Danke und viele Grüße,

    David

    Einen Kommentar schreiben:


  • Rasmus7700
    antwortet
    Hello.
    Finally i got the TPUart to compile, thanks to Torstens comment at:

    https://bitbucket.org/dka/arduino-tp...es-not-compile

    But after that, i get this error when trying to send something to the bus:
    Code:
    Pir Garage = True
    Available: 0
    Frame Error
    Parity Error
    Incoming Byte: 145 - 91 - 10010001
    Available: 1
    Incoming Byte: 199 - C7 - 11000111
    Available: 0
    Timeout while receiving message
    Successfully sent: 0
    When it success 1 out of 10 tryes i get:
    Code:
    Pir Garage = True
    Available: 0
    Timeout while receiving message
    Successfully sent: 0
    Parity Error
    Incoming Byte: 188 - BC - 10111100
    Available: 6
    Parity Error
    Incoming Byte: 188 - BC - 10111100
    Available: 5
    Parity Error
    Incoming Byte: 255 - FF - 11111111
    Available: 4
    Parity Error
    Incoming Byte: 20 - 14 - 10100
    Available: 3
    Parity Error
    Incoming Byte: 15 - F - 1111
    Available: 2
    Parity Error
    Incoming Byte: 253 - FD - 11111101
    Available: 1
    Parity Error
    Incoming Byte: 71 - 47 - 1000111
    Payload Length: 8
    Available: 0
    Timeout while receiving message
    Available: 0
    Timeout while receiving message
    Available: 0
    Timeout while receiving message
    Available: 0
    Timeout while receiving message
    Available: 0
    Timeout while receiving message
    Available: 0
    Timeout while receiving message
    Available: 0
    Timeout while receiving message
    Available: 0
    Timeout while receiving message
    Available: 0
    Timeout while receiving message
    Repeated: 0
    Priority: 3
    Source: 15.15.20
    Target Physical: 0.15.253
    Routing Counter: 4
    Payload Length: 8
    Command: 15
    First Data Byte: 63
    Data Byte 2: 11111111111111111111111111111111
    Data Byte 3: 11111111111111111111111111111111
    Data Byte 4: 11111111111111111111111111111111
    Data Byte 5: 11111111111111111111111111111111
    Data Byte 6: 11111111111111111111111111111111
    Data Byte 7: 11111111111111111111111111111111
    Checksum mismatch
    11111111111111111111111111111111
    11101
    NCD Telegram 15 received
    Available: 9
    Frame Error
    Parity Error
    Incoming Byte: 128 - 80 - 10000000
    Available: 8
    Frame Error
    Parity Error
    Incoming Byte: 188 - BC - 10111100
    Available: 7
    Frame Error
    Parity Error
    Incoming Byte: 129 - 81 - 10000001
    Available: 6
    Frame Error
    Parity Error
    Incoming Byte: 255 - FF - 11111111
    Available: 5
    Frame Error
    Parity Error
    Incoming Byte: 130 - 82 - 10000010
    Available: 4
    Frame Error
    Parity Error
    Incoming Byte: 68 - 44 - 1000100
    Available: 3
    Frame Error
    Parity Error
    Incoming Byte: 131 - 83 - 10000011
    Available: 2
    Frame Error
    Parity Error
    Incoming Byte: 206 - CE - 11001110
    Available: 1
    Frame Error
    Parity Error
    Incoming Byte: 127 - 7F - 1111111
    Available: 0
    Timeout while receiving message
    Event IRRELEVANT_KNX_TELEGRAM
    Pressure:    1018.44 hPa
    Temperature: 28.67 C
    Altitude:    -45.11 m
    Light: 82 lux
    
    Pir Garage = False
    Available: 0
    Timeout while receiving message
    Successfully sent: 0
    Parity Error
    Incoming Byte: 188 - BC - 10111100
    Available: 6
    Parity Error
    Incoming Byte: 188 - BC - 10111100
    Available: 5
    Parity Error
    Incoming Byte: 255 - FF - 11111111
    Available: 4
    Parity Error
    Incoming Byte: 20 - 14 - 10100
    Available: 3
    Parity Error
    Incoming Byte: 15 - F - 1111
    Available: 2
    Parity Error
    Incoming Byte: 139 - 8B - 10001011
    Available: 1
    Parity Error
    Incoming Byte: 71 - 47 - 1000111
    Payload Length: 8
    Available: 0
    Timeout while receiving message
    Available: 0
    Timeout while receiving message
    Available: 0
    Timeout while receiving message
    Available: 0
    Timeout while receiving message
    Available: 0
    Timeout while receiving message
    Available: 0
    Timeout while receiving message
    Available: 0
    Timeout while receiving message
    Available: 0
    Timeout while receiving message
    Available: 0
    Timeout while receiving message
    Repeated: 0
    Priority: 3
    Source: 15.15.20
    Target Physical: 0.15.139
    Routing Counter: 4
    Payload Length: 8
    Command: 15
    First Data Byte: 63
    Data Byte 2: 11111111111111111111111111111111
    Data Byte 3: 11111111111111111111111111111111
    Data Byte 4: 11111111111111111111111111111111
    Data Byte 5: 11111111111111111111111111111111
    Data Byte 6: 11111111111111111111111111111111
    Data Byte 7: 11111111111111111111111111111111
    Checksum mismatch
    11111111111111111111111111111111
    1101011
    NCD Telegram 15 received
    Available: 4
    Incoming Byte: 128 - 80 - 10000000
    Available: 3
    Incoming Byte: 254 - FE - 11111110
    Available: 2
    Incoming Byte: 240 - F0 - 11110000
    Available: 1
    Incoming Byte: 124 - 7C - 1111100
    Available: 0
    Timeout while receiving message
    Event IRRELEVANT_KNX_TELEGRAM
    I get the same when trying to use the example "GroupWrite"

    Einen Kommentar schreiben:


  • Bernator
    antwortet
    Zitat von ThorstenGehrig Beitrag anzeigen
    Wenn du die Debug-Informationen auf die selbe Schnittstelle schickst (was du ja scheinbar tust) - werden diese Informationen auch auf deinen Bus geschickt.
    So schlimm ist es nicht, der Busskoppler bzw. TPUart macht am Bus nur was wenns plausibel ist (ist ja gerade der Vorteil eines zertifizierten HW Layers), irgedwelche debugmeldungen tauchen da nicth auf....
    Elegant und zu empfehlen ist es natürlich trotzdem nicht

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Zitat von htwg Beitrag anzeigen
    Das empfangen habe Ich aber leider noch nicht zum laufen gebracht. Die Daten die wir empfangen sind vom eType-Typ immer "Event UNKNOWN". Habt ihr hierzu Vorschläge?
    Abgesehen von Thorsten Anregungen musst Du dem Arduino im Code mitteilen auf welche GAs er hoehren soll - tust Du das nicht (wonach Dein Code ausschaut) sind die Telegramme alle vom Typ UNKNOWN. Ich denk mal, es wird daran liegen.

    gruesse :: Michael

    Einen Kommentar schreiben:


  • Rasmus7700
    antwortet
    Hello Guys.
    Finally i got my arduino up and running, and made my base program, works very well.. Then i wanna try to implement the TPUART lib, so i can send over KNX.
    When trying to open the example "GroupWrite" and compile it i get the following:

    Code:
    In file included from C:\Program Files (x86)\Arduino\libraries\KnxTpUart/KnxTpUart.h:8,
                     from GroupWrite.ino:1:
    C:\Program Files (x86)\Arduino\libraries\KnxTpUart/KnxTelegram.h:92: error: 'Serial_' has not been declared
    In file included from GroupWrite.ino:1:
    C:\Program Files (x86)\Arduino\libraries\KnxTpUart/KnxTpUart.h:38: error: expected `)' before '*' token
    GroupWrite:4: error: no matching function for call to 'KnxTpUart::KnxTpUart(HardwareSerial*, int, int, int)'
    C:\Program Files (x86)\Arduino\libraries\KnxTpUart/KnxTpUart.h:36: note: candidates are: KnxTpUart::KnxTpUart()
    C:\Program Files (x86)\Arduino\libraries\KnxTpUart/KnxTpUart.h:36: note:                 KnxTpUart::KnxTpUart(const KnxTpUart&)
    Only thing i've done, is to copy the KNX TPUart lib in my Arduino filder, and opened a example.... I'm using a Mega 2560....

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Zitat von htwg Beitrag anzeigen
    Das senden funktioniert soweit schon mal super. Beim Aufspielen eines neuen Sketches dürfen die Rx und Tx-Verbindungen zum Buskoppler nicht gesteckt sein. Im Betrieb ist es dann aber möglich den Buskoppler anzusprechen und gleichzeitig via USB den Seriellen Monitor für Debuginfos zu verwenden.
    aaaaaargh.
    Bitte NICHT NICHT NICHT sowas machen.
    Wenn du die Debug-Informationen auf die selbe Schnittstelle schickst (was du ja scheinbar tust) - werden diese Informationen auch auf deinen Bus geschickt.
    Sicherlich sind das keine gültigen Telegramme - und werden hoffentlich ignoriert.... nichtsdestotrotz ist das absolute Müll-Belasung für deinen KNX-BUS.

    Bitte bestelle dir doch einen Leonardo-Mini - der ist genauso groß, kostet nur wenige Euro - und du hast das Problem schonmal vom Tisch!

    Gute/Schnelle Lieferung habe ich von hier:
    http://www.ebay.de/itm/ATmega32u4-Mi...item4181f9d59e

    Gruß
    Thorsten

    PS: Dein Empfangs-Problem kann mit dem Thema zusammen hängen - davon abgesehen gibt es ein paar Beispiele hier im Thread - daher lasse ich das gerade mal aus...

    Einen Kommentar schreiben:


  • htwg
    antwortet
    Hallo zusammen,
    Ich studiere an der HTWG Konstanz Informatik und beschäftige mich im Moment ebenfalls mit einem Projekt bei dem die Anbindung eines Arduinos an den KNX-Bus im Mittelpunkt steht.

    Ich habe diesen Thread durchgeackert und finde euer Ansatz so interessant, dass inzwischen der Siemens Busankoppler neben mir liegt und an einen Arduino Nano angeschlossen ist. (mit nur einer seriellen Schnittstelle, wie der Uno)


    Das senden funktioniert soweit schon mal super. Beim Aufspielen eines neuen Sketches dürfen die Rx und Tx-Verbindungen zum Buskoppler nicht gesteckt sein. Im Betrieb ist es dann aber möglich den Buskoppler anzusprechen und gleichzeitig via USB den Seriellen Monitor für Debuginfos zu verwenden. Mit folgendem Codeschnipsel kann Ich eine Lampe auf der Gruppenadresse "0/0/3" zum blinken bringen:

    Code:
    #include <EEPROM.h>
    #include <KnxTpUart.h>
    
    // Initialize the KNX TP-UART library on the Serial1 port of Arduino Mega
    KnxTpUart knx(&Serial, "15.15.20");
    
    void setup() {
      Serial.begin(19200);
      UCSR0C = UCSR0C | B00100000; // Even Parity
      knx.uartReset();
      Serial.println("Setup fertig!");
    }
    
    bool onSent = false;
    
    void loop() {
        knx.groupWriteBool("0/0/3", onSent);
        onSent = ! onSent;
        delay(1000);
    }
    Das empfangen habe Ich aber leider noch nicht zum laufen gebracht. Die Daten die wir empfangen sind vom eType-Typ immer "Event UNKNOWN". Habt ihr hierzu Vorschläge?

    Grüße vom Bodensee
    Pascal
    Angehängte Dateien

    Einen Kommentar schreiben:


  • NSchnitzler
    antwortet
    Hi Zusammen,

    ich habe eben den Buskoppler bekommen, allerdings bekomme ich keine Kommunikation hin. Ich habe ihn an den KNX Bus gehangen und erst den Arduino, danach den LogicAnalyser drangehangen bekomme aber kein einziges Bit daraus. Hab ich was übersehen oder ist der einfach defekt?!

    Gruss
    Norbert

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Das hier ist in dem Zusammenhang auch ueberaus interessant. Finde ich zumindest
    Annikken Andee: Arduino-Shield für Smartphones | heise online

    gruesse

    Einen Kommentar schreiben:

Lädt...
X