Grundlagen - Schnittstelle

Im folgenden wird vorausgesetzt, das die SmartVISU zusammen mit SmartHomeNG als Backend betrieben wird und ein aktuelles Raspbian Betriebssystem auf Basis von Debian Buster genutzt wird. Die (ausführlichere) Installation ist auch auf der Seite Komplettanleitung knxd beschrieben. Daher hier in aller Kürze:

Der knxd wird installiert mit:
sudo apt-get update
sudo apt-get install knxd knxd-tools
Dann muß die Konfigurationsdatei angepasst werden:
sudo nano /etc/knxd.conf
In der folgenden Tabelle ist der KNXD_OPTS Eintrag für die entsprechende Schnittstelle enthalten:
SchnittstelleParameter
IP-Schnittstelle
KNXD_OPTS="-e 0.0.1 -E 0.0.2:8 -c -b ipt:<IP der knx Schnittstelle>"
Router
KNXD_OPTS="-e 0.0.1 -E 0.0.2:8 -c -b ip:"
Da die weitere Unterstützung von USB und FT1.2 Schnittstellen ungeklärt ist, werden sie hier nicht weiter berücksichtigt. Um die Konfigurationsänderung wirksam werden zu lassen, muß der knxd neu gestartet werden.
Der knxd hat zwei Einträge, zum einen knxd.socket der die normalerweise die Kommunikation über der Port 6720 übernimmt und der knxd.service der die restlichen Aufgaben übernimmt.

Zunächst beenden des knxd:
sudo systemctl stop knxd.socket
sudo systemctl stop knxd.service
Die Reihenfolge ist wichtig: beenden wir erst den knxd, kann ein Prozess genau dann einen Socket öffnen und der systemd startet ihn sofort wieder.
Um sicher zu gehen, das der knxd mit dem Systemstart auch gestartet wird muß dem systemd mitgeteilt werden das diese beiden Einträge auch eingeschaltet also enabled sind.
sudo systemctl enable knxd.service
sudo systemctl enable knxd.socket
Jetzt können wir den knxd starten mit
sudo systemctl start knxd.socket
sudo systemctl start knxd.service
Auch hier ist die Reihenfolge wichtig: Starten wir erst den Service, werden dem knxd die Sockets nicht vom systemd übergeben.

Mit den folgenden Kommandos kann geprüft werden, ob die beiden Einträge ordnungsgemäßt funktionieren:
sudo systemctl status knxd.socket
sudo systemctl status knxd.service
Wenn alles ok ist, dann sieht das etwa so aus:
$ sudo systemctl status knxd.socket
● knxd.socket - KNX Daemon (socket)
Loaded: loaded (/lib/systemd/system/knxd.socket; enabled; vendor preset: enabled)
Active: active (running) since Sun 2019-03-31 19:07:49 CEST; 1 weeks 6 days ago
Listen: /var/run/knx (Stream)
[::]:6720 (Stream)

● knxd.service - KNX Daemon
Loaded: loaded (/lib/systemd/system/knxd.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2019-03-31 19:08:10 CEST; 1 weeks 6 days ago
Main PID: 865 (knxd)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/knxd.service
└─865 /usr/bin/knxd -e 0.0.1 -E 0.0.2:8 -c -b ipt:192.168.x.y
Ob das erfolgreich war und man Verbindung zum Bus hat, kann man testen, indem man entweder am Bus auf Telegramme lauscht
knxtool groupsocketlisten local:
oder auf eine Gruppenadresse (hier zum Beispiel 0/0/67) Werte schreibt:
knxtool groupswrite ip:localhost 0/0/67 1
knxtool groupswrite ip:localhost 0/0/67 0
Sollte sich jetzt nichts tun, dann gibt es irgendwo einen Fehler und alles muß noch einmal geprüft werden. Vielleicht ist der Neustart des knxd vergessen oder ein Build-Fehler übersehen worden.

Anmerkung(1):
Es zeigte sich das einige Schnittstellen (z.B. Weinzierl IP Interface 730 oder eibmarkt EIB KNX IP Schnittstelle PoE [#N000401] zu langsam für den knxd sind. Sollte jemand Probleme mit den oben genannten Schnittstellen haben, kann unter Umständen folgendes in der /etc/knxd.conf helfen
--no-tunnel-client-queuing

Anmerkung(2):
Sollte man eine bereits bestehende knxd-Instanz (z.B.Wiregate) nutzen wollen, ist es nicht notwendig die hier beschrieben Schritte auszuführen.