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
Ankündigung
Einklappen
Keine Ankündigung bisher.
ARDUINO am KNX
Einklappen
X
-
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
- Likes 1
Einen Kommentar schreiben:
-
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:- Konnekting -> https://knx-user-forum.de/forum/projektforen/konnekting
- Frank Marini -> https://github.com/franckmarini/KnxDevice
Einen Kommentar schreiben:
-
So nach einigem Probieren habe ich festgestellt dass es wohl ein Zeitproblem ist.
Mit
kommt unregelmäßig ein Ack zum bus.Code:[COLOR=#af00db]#define[/COLOR][COLOR=#0000ff] [/COLOR][COLOR=#795e26]SERIAL_WRITE_DELAY_MS[/COLOR][COLOR=#0000ff] [/COLOR][COLOR=#09885a]40[/COLOR]
Wenn ich aber das Send Ack stumpf hier auslöse, dann kommt die Antwort immer auf den Bus.
Hat jemand eine Idee, wie man die Sache beschleunigen könnte, ohne in der Bibliothek rum zu murksen?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]
Einen Kommentar schreiben:
-
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:
Sende ich nun mit der ETS über den Gruppenmonitor 1/1/2 ab, tut sich nichts.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); } }}}}Zuletzt geändert von MasterOfPuppets; 15.12.2019, 15:31.
Einen Kommentar schreiben:
-
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:
Das sollte doch die Funktion sein, welche eine Bestätigung zurücksendet.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]
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
Einen Kommentar schreiben:
-
Für Anfänger wie mich:
Ich sehe den Unterschied beider Sketches, versuche ihn aber noch zu verstehen.
Ist das Problem das, dass zweimal das Telegram abgefragt wurde?
Einen Kommentar schreiben:
-
Hallo Hubiflieger,
eventuell mal eine kleine Hilfestellung.
Code:#include <KnxTpUart.h> KnxTpUart knx(&Serial1, "1.1.149"); void setup() { Serial1.begin(19200, SERIAL_8E1); knx.uartReset(); knx.addListenGroupAddress("2/1/10"); knx.addListenGroupAddress("2/1/11"); knx.addListenGroupAddress("2/1/12"); } void loop() { } void serialEvent1() { KnxTpUartSerialEventType eType = knx.serialEvent(); if (eType == KNX_TELEGRAM) { KnxTelegram* telegram = knx.getReceivedTelegram(); String target = String(0 + telegram->getTargetMainGroup()) + "/" + String(0 + telegram->getTargetMiddleGroup()) + "/" + String(0 + telegram->getTargetSubGroup()); if (target == "2/1/10") { int received_2_1_10 = telegram->getBool(); if (received_2_1_10) { digitalWrite(9, 255); } else { digitalWrite(9, 0); } } } }
Mit freundlichen Grüßen
Mag Gyver
Einen Kommentar schreiben:
-
Hallo zusammen,
ich probiere seit ein paar Tagen, einen Arduino Mega an den KNX Bus zu bekommen. Geht auch rudimentär mit der Bibliothek von Thorsten Gehrig. Mit digitalWrite schalte ich ne kleine LED an und aus. Allerdings habe ich das Problem, dass der Arduino keine Empfangsbestätigung 'LL_ACK' zurücksendet. Deshalb sendet der Absender stets nochmals drei Telegtamme hinterher. Stört nicht bei wenig Buslast, ist aber nicht schön. Hat jemand eine Idee? Hier mal der minimale Code:
sieht im Busmonitor dann so aus. Das Telegramm wird von smarthomeng versendet. Hat jemand ne Idee?Code:#include <KnxTpUart.h> KnxTpUart knx(&Serial1, "1.1.149"); void setup() { Serial.begin(9600); Serial1.begin(19200, SERIAL_8E1); Serial1.println(UCSR0C, BIN); knx.uartReset(); knx.addListenGroupAddress("2/1/10");//schalten knx.addListenGroupAddress("2/1/11");//Dimmen relativ knx.addListenGroupAddress("2/1/12");//Dimmen absolut } void loop() { KnxTpUartSerialEventType eType = knx.serialEvent(); if (eType == KNX_TELEGRAM) { KnxTelegram* telegram = knx.getReceivedTelegram(); String target = String(0 + telegram->getTargetMainGroup()) + "/" + String(0 + telegram->getTargetMiddleGroup()) + "/" + String(0 + telegram->getTargetSubGroup()); Serial.println(target); if (target == "2/1/10") { Serial.println(telegram->getBool()); if (telegram->getBool()) { digitalWrite(9, 255); } else { digitalWrite(9,0); } } } }
Unbenannt.PNG
Einen Kommentar schreiben:
-
Funktioniert auch hier jetzt astrein, danke!Zitat von jentz1986 Beitrag anzeigenMini pro clone habe ich viele am laufen...
Einen Kommentar schreiben:
-
Mini pro clone habe ich viele am laufen. Mit KNX fand ich das immer schwierig, wegen des debuggings. Daher habe ich nachher dann Mega2560 genommen zum entwickeln. Leider reicht dann der Speicher bei den kleinen nicht mehr. Die anderen boards hier mit samd machen unterm Strich mehr Spaß.
Einen Kommentar schreiben:
-
OK, das hatte ich in den langen Thread nicht gesehen. Würde ein Mini Pro funktionieren? Am liebsten ein Clone?
Tobias
Einen Kommentar schreiben:
-
Ja. Das steht auch weiter vorne... Ehrlich gesagt wundert mich, dass der Original-Nano funktioniert. Normalerweise müsste auch das kollidieren, weil es eben immer nur der eine UART auf dem AVR ist...Zitat von tooooooobi Beitrag anzeigenLiegt das am ch340g-Chip?
Einen Kommentar schreiben:
-
Hier mal ein kurzer Zwischenstand, Lesen und Schreiben auf den Bus:
Klappt am UNO (mit dem Jumper)
Klappt am (original-) NANO (Ohne Jumper)
Klappt nicht am Nachbau-Nano (ch340g) - egal ob mit oder ohne Jumper
Hat jemand eine Idee wie sich die beiden Nanos unterscheiden? Liegt das am ch340g-Chip? Den Trick mit Pin 19 habe ich nicht probiert...
LG
Tobias
Einen Kommentar schreiben:
-
Moin zusammen,
bin gerade etwas frustriert beim Rumprobieren mit ersten KNX-Tests...
Senden geht, Empfangen nicht.
EDIT: OK ich habe beim UNO den Jumper nicht gesetzt, statt RTFM nur ÜTFM gemacht...
Aber kurz zum Abgleich: wo gibt es die aktuelle KnxTpUart.h die ihr benutzt? Im Netz gibt es diverse verschiedene
LG TobiasZuletzt geändert von tooooooobi; 10.11.2019, 12:51.
Einen Kommentar schreiben:


Einen Kommentar schreiben: