knxd (war: eibd) reloaded: Tester gesucht

Begonnen von smurfix, 29 Mai 2015, 09:18:29

Vorheriges Thema - Nächstes Thema

smurfix

Hallo Leute,

ich habe in den letzten zwei Wochen dem knxd (ehemals eibd) eine größere Runderneuerung verpasst.
Es ist jetzt möglich, mehr als eine Schnittstelle zu verwenden. Wer zwei Linien hat, schließt einfach beide an einen Rechner an (egal wie), verpasst dem knxd beide, und das Ding leitet die Telegramme von A nach B und umgekehrt. Der Umweg über Multicast o.Ä. entfällt.
Selbstverständlich ;-) merkt er sich, welche physikalischen Adressen an welchem Bus zu sehen sind, so dass man beim Programmieren eines Geräts am Bus A nicht auch noch Bus B und C zutextet.
Er generiert jetzt auch kein seltsames Echo mancher Datenpakete mehr.
Man kann ihm sagen, welche Schnittstellen er nicht als Busmonitor verwenden darf (weil die dann ja am normalen Betrieb nicht mehr teilnehmen).
Man kann ihm pro Schnittstelle unterschiedliche Debug-Optionen o.Ä. verpassen.
Natürlich kann es auch mehrere Netzwerkinterfaces geben, falls das jemand braucht. Quasi ein Abfallprodukt der Umbauaktion. ;-)
Und das Netteste: Programmieren mit der ETS-5 funktioniert endlich fehlerfrei. (Aktuell habe ich nur via Multicast getestet.) Ohne dass ich dafür groß noch was tun musste. Was mir unbescheidenerweise suggeriert, dass ich irgendwas richtig gemacht haben muss bei der Aktion. :-P

Wie konfiguriert man das alles? Genau wie immer, über die Befehlszeile.
Der einzige Unterschied ist, dass die Parameter jetzt der Reihe nach "abgearbeitet" werden und sämtliche modifizierenden Angaben (also -t oder -R -T -D) grundsätzlich die Schnittstellen beeinflussen, die danach angegeben werden.
Wenn jemand das Parsen einer .INI-Datei o.Ä. einbauen mag, gerne. (Bitte nicht XML.)

Das Ganze findet sich hier: https://github.com/knxd/knxd/tree/multi_l2 – der aktuelle Status ist Alpha, d.h. es funktioniert schon Einiges, aber noch mehr muss einfach getestet und ggf. repariert werden. Insbesondere besitze ich selber nur tpuart-Hardware; die anderen Treiber kompilieren zwar alle, aber das heißt nicht unbedingt viel.

Natürlich freue ich mich über Mitstreiter und -programmierer.

Und nun: her mit den Fehlerberichten!

antonwinden

#1
ich würde es ja gerne testen - allerdings bin ich nicht unbedingt der Guru in Linux, soll heissen ich bräuchte auch eine anleitung wie ich das auf dem pi installieren kann... und eine erklärung der parameter.
meine umgebung:
2 * pi mit 2* weinzierl ip interface für 2 knx-installationen die alle am gleichen ip-subnetz hängen.
beide knx sollen am liebsten von jedem pi (nicht alle devices aber halt ein paar die für beide installationen interessant sind wie strom subzähler, verbrauchswerte, wetterwerte usw.) ablesbar sein sollen aber sich nicht gegenseitig in die quere kommen sollen denn die meisten geräte haben die gleichen adressen (nicht im selben knx netz sondern die 2 knx netze sind getrennt haben aber intern den gleichen aufbau mit fast identen ga's usw.)
warum das so ist? -> stromversorung, photovoltaik und internet ist ein gemeinsamer anschluß mit subzählern für stromverbrauch
ist aber so aufgebaut das wenn der wunsch vorhanden ist getrennt werden kann.

mit fhem2fhem und eibd geht das jetzt schon allerdings immer nur in eine richtung -> also 1 pi kann den anderen sehen aber wenn sich beide sehen (auf beiden eine fhem2fhem verbindung zum anderen...) dann gibt es ungewollte nebeneffekte...
lg anton
KNX, Raspberry, Denon 3313, Philips TV, Xtrend9X00 und viel Optimismus...

smurfix

Die aktuelle Version hat eine Bauanleitung in der README.md, die sogar funktionieren sollte.

https://github.com/knxd/knxd/blob/master/README.md

@antonwinden: Wenn du mir sagst, wie du aktuell deinen eibd startest, dann sage ich dir, was du ändern musst, damit es in der aktuellen Version funtioniert – die Reihenfolge der Parameter ist ab 0.10 nicht mehr egal.

antonwinden

etwas spät aber doch und auf jeden fall danke für das angebot
ich rufe eibd auf meinem raspi mit
route add 224.0.23.12 dev eth0
/usr/local/bin/eibd -D -S -T -i --eibaddr=0.0.1 --daemon=/var/log/eibd.log --no-tunnel-client-queuing ipt:192.168.1.112
und bei meinem bruder der im gleichen netz ist mit
route add 224.0.23.11 dev eth0
/usr/local/bin/eibd -D -S -T -i --eibaddr=0.0.1 --daemon=/var/log/eibd.log --no-tunnel-client-queuing ipt:192.168.1.111

auf
danke anton
KNX, Raspberry, Denon 3313, Philips TV, Xtrend9X00 und viel Optimismus...

smurfix

Es gibt im github jetzt einen neuen knxd-Zweig namens "next".

Neue Features:

Die Option "-E" wählt einen Adressbereich aus, "-E 15.0.2:10" z.B. die Adressen 15.0.2 bis 15.0.11 inklusive, der an Klienten vergeben wird, die sich mit dem knxd verbinden. Die ausgewählte Adresse wird denen nicht mitgeteilt (dafür gibt es entweder keine Mechanismen oder ich habe sie nicht gefunden), sondern es wird lediglich der Absender 0.0.0 ersetzt. Unnötig zu sagen, dass dieser Adressbereich sonst nirgends am Bus verwendet werden sollte.

Multicast-Loopback ist wieder an. Das heißt, man kann jetzt einen zweiten knxd (oder irgendwas Anderes, das KNX redet) als Multicast-Client auf demselben Rechner laufen lassen wie ein knxd, der via "-RS" als Multicast-Server agiert.

Damit das einigermaßen sauber ins Programm passt, waren mehr Umbauarbeiten notwendig, als mir lieb ist. Insbesondere "groupswrite" und Konsorten machte Probleme, weil der seine Verbindung schließt, bevor knxd das Paket überhaupt verarbeiten kann. Deswegen werden die Layer2-Objekte jetzt über shared_ptr verwaltet, d.h. es wird ein aktueller C++-Compiler benötigt. Sorry – aber ich habe keine Lust, selber einen Referenzzähler zu implementieren und zu debuggen ...

smurfix

#5
Zitat von: antonwinden am 06 Juli 2015, 10:59:31
route add 224.0.23.12 dev eth0
Wenn du eine Defaultroute hast, sollte das unnötig sein.
Zitat
/usr/local/bin/eibd -D -S -T -i --eibaddr=0.0.1 --daemon=/var/log/eibd.log --no-tunnel-client-queuing ipt:192.168.1.112
Abgesehen davon, dass jetzt -S zwingend nach dem -T und --eibaddr=* vor -S angegeben werden muss, sollte das auch mit dem knxd so funktionieren.

NB: sorry wegen der verspäteten Antwort, die Benachrichtigung war aus.  :-\

ctr

So wie es aussieht ist die Funktion ja inzwischen im "master" branch angekommen und wird als stabil betrachtet.
Unabhängig davon wie man es konfiguriert, gibt es noch etwas Beschreibung, was man damit machen kann?
Ich hatte mir z.B. vorgestellt über mehrere "ipt" l2-interfaces einen knxd mit mehreren Linien bekannt zu machen und den knxd quasi als Linienkoppler laufen zu lassen. Geht das? Sorgt der knxd dann selbst dafür dass Telegramme für eine bestimmte Linie auch nur dort ankommen, quasi als KNX router?

smurfix

Ja, das geht.

Routing von Gruppenadressen kann er noch nicht, das muss noch irgendjemand einbauen (krankt u.A. an der fehlenden Konfigurationsdatei, das wird irgendwann zu viel für die Befehlszeile). Aber zumindest bei physikalischen Adressen merkt sich der knxd, wer wo sitzt. Damit fällt wenigstens die Hälfte des unnötigen Traffics weg.

speedschmidt

High Smurfix,

ist dieses Updateverfahren vom knxd so richtig oder fehlt da noch was?

----------------------
-  Update vom KNXD:  -
----------------------
1. sudo service knxd stop
2. sudo dpkg -r knxd-tools
3. sudo dpkg -r knxd
4. sudo rm knxd*.deb
5. sudo rm knxd*.changes
6. cd knxd
7. sudo git pull https://github.com/knxd/knxd.git
8. sudo dpkg-buildpackage -b -uc (ohne sudo gibt es ein Berechtigungsproblem mit Abbruch)
9. cd ..
10. sudo dpkg -i knxd_*.deb knxd-tools_*.deb
11. sudo systemctl enable knxd
12. sudo reboot

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Beachte ich bin als User angemeldet
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Sollte ich das Update machen, wenn es keine Beanstandungen gibt (außer Parametrierprobleme mit ETS4)?

Die Frage geht auch an alle die dieses Update erfolgreich in dieser oder ähnlicher Form durchgeführt haben. Die Antwort ist für Nicht-Linux-Cracks wie mich wichtig.

Schmitti

smurfix

Zitat von: speedschmidt am 09 Mai 2016, 21:06:14
7. sudo git pull https://github.com/knxd/knxd.git
8. sudo dpkg-buildpackage -b -uc (ohne sudo gibt es ein Berechtigungsproblem mit Abbruch)

Wieso gehört dein knxd-Verzeichnis überhaupt root? Lass das "sudo" da weg, bzw. mach vorher
sudo chown $USER .

speedschmidt

Servus,

in welchem Ordner führe ich das o.g. aus ? Einfach in der Komandozeile von User "pi"?

Ansonsten passt das aber - oder???

Schmitti