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!
Ankündigung
Einklappen
Keine Ankündigung bisher.
ARDUINO am KNX
Einklappen
X
-
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:
-
Hallo zusammen,Zitat von ThorstenGehrig Beitrag anzeigenVielleicht einfach mal ein ganz simples Test-Programm laufen lassen: alle 60 Sekunden ein Telegram schicken und danach 60 Sekunden warten...
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:
-
Gratuliere - und danke für das Feedback und das du deinen Code reingestellt hast.
:-)
Einen Kommentar schreiben:
-
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:
GrüßeCode://////////////////////////////////////////////////////////// // 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); } } }
Pascal
Einen Kommentar schreiben:
-
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:
-
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:
-
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:
When it success 1 out of 10 tryes i get: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
I get the same when trying to use the example "GroupWrite"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
Einen Kommentar schreiben:
-
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....Zitat von ThorstenGehrig Beitrag anzeigenWenn du die Debug-Informationen auf die selbe Schnittstelle schickst (was du ja scheinbar tust) - werden diese Informationen auch auf deinen Bus geschickt.
Elegant und zu empfehlen ist es natürlich trotzdem nicht
Einen Kommentar schreiben:
-
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.Zitat von htwg Beitrag anzeigenDas 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?
gruesse :: Michael
Einen Kommentar schreiben:
-
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:
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....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&)
Einen Kommentar schreiben:
-
aaaaaargh.Zitat von htwg Beitrag anzeigenDas 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.
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:
-
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:
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?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); }
Grüße vom Bodensee
PascalAngehängte Dateien
Einen Kommentar schreiben:
-
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:
-
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:


Einen Kommentar schreiben: