openknx / oam-ip-router Goto Github PK
View Code? Open in Web Editor NEWOpenKNX IP-Router Application
License: GNU Affero General Public License v3.0
OpenKNX IP-Router Application
License: GNU Affero General Public License v3.0
is done here:
https://github.com/OpenKNX/knx/blob/rp2040_ip_routing/src/knx/bau091A.cpp#L199-L212
in case the property is not set, default tunnel addresses are used and acking is not correct.
maybe change behaviour to set the prop with the default values.
possible enhancement:
check if the tunnel is open
z.B.
Absender-IP "192.168.100.135" bekommt immer Tunnel 2 mit PA 1.1.135
=> Damit per Tunneling angebundenen Geräte immer mit der selben PA auf dem Bus kommunizieren.
ETS => MDT-IP-Interface Tunnel) ==> TP Linie ==> IP-Router
funktoiniert nicht, wenn Router ungeladen.
siehe auch
https://knx-user-forum.de/forum/projektforen/openknx/1917749-openknx-ip-router?p=1932226#post1932226
Wenn ich die neuste Version der Applikation lade und in die ETS importiere, bekomme ich keine zweite Applikation im Katalog angezeigt. Es bleibt bei 2.12 oder 0.1.
Wurde die neue Versionsnummer in der neuen Version vielleicht vergessen?
Und ist ein Update über die ETS überhaupt möglich?
Tunnel-PAs werden zufällig vergeben (Speicherinhalt..)
=> nutze eigene PA als Basis für Tunnel-PA wenn ungeladen
Router-PA: 15.15.0
=>
Tunnel-PA: 15.15.1 ....n
Waldemar (mumpf)
01:12 Uhr
Hmm, was der joeknx123 zum Router geschrieben hat, hört sich ganz nach fehlendem ACK an. Er hat alles auf Durchzug, damit müsste jedes weitergeleitete Telegramm bestätigt werden. Damit sollte es keine Wiederholungen auf TP-Seite geben.
Ich weiß nicht, wie gut Dein Algorithmus für "nur weitergeleitete Telegramme bestätigen" ist, aber Du könntest bei "alle weiterleiten" auf jeden Fall auch intern als "alle Bestätigen" interpretieren.
Ing-Dom (Dominik)
01:15 Uhr
https://github.com/OpenKNX/knx/blob/rp2040_ip_routing_debugCemiFrame/src/knx/bau091A.cpp#L161-L217
bau091A.cpp
TPAckType Bau091A::isAckRequired(uint16_t address, bool isGrpAddr)
{
//only called from TpUartDataLinkLayer
TPAckType ack = TPAckType::AckReqNone;
Mehr anzeigen
https://github.com/[OpenKNX/knx](https://github.com/OpenKNX/knx)|OpenKNX/knxOpenKNX/knx | Hinzugefügt von GitHub
01:17 Uhr
hmmmm
01:18 Uhr
das könnte sein
Waldemar (mumpf)
01:19 Uhr
Da wird doch nur in die Filtertabelle geschaut...
Ing-Dom (Dominik)
01:20 Uhr
wenn "nur weitergeleitete Telegramme bestätigen" ausgewählt ist, prüft er die Filtertabelle. Da ist es aber ggf nicht drin, wenn die gruppentelegramme gar nicht gefiltert werden
01:21 Uhr
die Fallunterscheidung hatte ich nicht am Schirm. Die muss da wohl noch rein
Waldemar (mumpf)
01:21 Uhr
Aber bei "alles Weiterleiten" reicht da nicht, oder? Ich bin mir sicher, dass er nicht "alle Gruppentelegramme bestätigen" angekreuzt hat. Das könnte man ihm als Workaround vorschlagen.
Ing-Dom (Dominik)
01:22 Uhr
so wie es aktuell implementiert ist leitet er die telegramme zwar weiter, acked sie aber nicht
01:22 Uhr
das entspricht nicht der Erwartung und ist auch wenig sinnvoll..
Der Router verwendet nicht die über ETS zugewiesenen Tunnel-PAs sondern die eigene PA + 1 bis 4.
vor 11 Tagen
Haben die Ursache von Roberts Problem gefunden.
Da ist wohl noch eine Rückkopplung der Telegramme, die werden ja dann per Routing auch weitergeleitet (wenn auf weiterleiten eingestellt) und das führt dazu, dass das selbe Telegramm nochmal mit HopCount=5 im Tunnel auftaucht...
@Ing-Dom (Dominik)
hast du auf die schnelle ne Idee warum das Routing nochmal iwie den Eingang des Telegrams triggert oder so?
25 Antworten
vor 11 Tagen
kannst du mir das ggf etwas detailierter beschreiben?
richtung des telegramms, wo kommts rein / geht aus, broadcast, unicast, multicast etc..
vor 11 Tagen
Die #9:63 ist die erste korrekte Antwort, vom Geräte. Also TP->IP
Danach kommt das Routing Indication Telegram. Soweit korrekt.
Danach wird die Antwort aber nochmal gesendet mit einem verringerten HopCount #9:64
vor 11 Tagen
Sobald man physikalisch Adressierte Telegramme filtert, ist das Problem weg.
vor 11 Tagen
es kommt also ein unicast telegram von der tp linie an den tunnel? und der router sendet es zusätzlch per routing?
vor 11 Tagen
Und danach kommt es nochmal per Tunneling mit HopCount=5
vor 11 Tagen
das erste senden ist korrekt, sofern die einstellung für unicast TP>>IP auf "weiterleiten" steht
vor 11 Tagen
Das erste ist ja Tunneling: korrekt
Das zweite Routing: korrekt da weiterleiten drin war
Das dritte ist falsch: da HopCounter geringer
vor 11 Tagen
ok, verstanden. wo klinkst du dich mit dem tunnel ein für eingehende pakete?
vor 11 Tagen
Das frameReceived vom DataLinkLayer
vor 11 Tagen
https://github.com/Ing-Dom/knx/blob/rp2040_eth_tunneling/src/knx/data_link_layer.cpp#L116
data_link_layer.cpp
_cemiServer->dataIndicationToTunnel(frame);
https://github.com/Ing-Dom/knx|Ing-Dom/knxIng-Dom/knx | Hinzugefügt von GitHub
vor 11 Tagen
das sollte ok sein,
ABER:
du rufst dataIndicationToTunnel auch im sendTelegram https://github.com/Ing-Dom/knx/blob/rp2040_eth_tunneling/src/knx/data_link_layer.cpp#L195und wenn der network layer das tp telegramm bekommt und beschließt ich muss das routen ruft er ja die sendtelegram vom (ip)datalinklayer auf.
data_link_layer.cpp
_cemiServer->dataIndicationToTunnel(tmpFrame);
https://github.com/Ing-Dom/knx|Ing-Dom/knxIng-Dom/knx | Hinzugefügt von GitHub
vor 11 Tagen
und dann haste es doppelt
vor 11 Tagen
mit hop-count -1 weil es war ja schon geroutet
vor 11 Tagen
Ah okay. das kommt tatsächlich nicht von mir. Das war schon vorher drin für das USB ding.
vor 11 Tagen
bzw sogar für rf... https://github.com/Ing-Dom/knx/blob/master/src/knx/data_link_layer.cpp#L156
vor 11 Tagen
ich denke auch dass man es ggf braucht
vor 11 Tagen
z.B. wenn der router selbst der sender ist
vor 11 Tagen
Dann müsste man das iwie abfragbar machen
vor 11 Tagen
wie wäre mit einem
pseudocode:
if(src.addr == ownaddr)
_cemiServer->dataIndicationToTunnel(tmpFrame);
vor 11 Tagen
Theoretisch müsste ich ja abfragen, ob der Empfänger eine Tunnel Adresse ist.
Wenn ja, muss das Telegramm ja auch nicht auf TP.
vor 11 Tagen
stimmt bei unicast sind sender und empfänger genau bekannt
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.