Einrichten knxd mit MDT SCN-IP000.02
Vorwort
Im Rahmen einer Machbarkeitsstudie ging es um das Thema Zählererfassung im betrieblichen Umfeld. Dazu sollten diverse Techniken und Bus-Systeme mit einbezogen werden. Als eine Art (halb privates) Nebenprojekt kam auch die Verknüpfung zwischen fhem und einem KNX-Zählerbaustein zum Einsatz. Es gibt hier im Wiki zwar schon die Beschreibung Einrichten_von_eibd_für_das_Weinzierl_IP_730_Interface, aber diese beschäftigt sich mit anderer Hardware und dem eib-daemon.
Voraussetzungen
Hardware
- MDT IP-Interface SCN-IP000.02. Wird später als IP-Tunneling-Device verwendet. Adresse wird über DHCP bezogen. Sollte geändert werden
- MDT 4fach Binäreingang BE-04000.01. Dient als Zählermodul
- MDT Spannungsversorgung STV-0160.01. Achtung! Es kann keine Standard 24V Spannungsversorgung verwendet werden, da diese nicht die für KNX benötigte Drossel enthält
Software
- fhem 5.7 Installation auf Raspberry Pi 3, gemäß Anleitung (folgt!), Raspian Jessie
- ETS 5.0 wird für die Konfiguration der KNX-Komponenten benötigt. Kostenfreie Demo-Lizenz. Beschränkt auf 5 Geräte. Download von KNX.org
- Katalog-Datei für die ETS vom Binär-Eingang. Quelle: MDT-Homepage
Installation
- KNX-Daemon für Linux. Als Leitfaden diente Fhem-Wiki
- Zusätzliche Pakete installieren (als root oder sudo benutzen)
apt-get install debhelper cdbs automake libtool libusb-1.0-0-dev git-core build-essential libsystemd-daemon-dev dh-systemd
- lib pthsem herunterladen und installieren
wget https://www.auto.tuwien.ac.at/~mkoegler/pth/pthsem_2.0.8.tar.gz tar xzf pthsem_2.0.8.tar.gz cd pthsem-2.0.8 dpkg-buildpackage -b -uc cd .. sudo dpkg -i libpthsem*.deb
- KNXD herunterladen und installieren
git clone https://github.com/knxd/knxd.git cd knxd dpkg-buildpackage -b -uc cd .. sudo dpkg -i knxd_*.deb knxd-tools_*.deb
- /etc/knxd.conf anlegen. Relevant ist nur die letzte Zeile. Die originale Datei enthält eine für das System nicht funktionierende Konfiguration. Daher wird der gesamte Inhalt der Datei hier dokumentiert.
# configuration for knxd.service #KNXD_OPTS="-u /tmp/eib -b ip:" # The default options are "-u /tmp/eib -b ip:" # which tell knxd to route between all of # /tmp/eib (legacy socket (-u)) # multicast client (-b ip:). # The knxd.socket file also tells knxd to listen to # /run/eib (socket activation via systemd) # TCP port 6720 (socket activation via systemd) # *** DO NOT use "-u" / "-u /run/knx" or "-i" / "-i 6720" here. # Systemd already does that on behalf of knxd, via 'knx.socket'. # If you have KNX hardware on a serial port or USB, add the appropriate # "-b TYPE:…" option. In this case, you probably want to set up a multicast # server, not a client (i.e. use "-D -T -R -S", not "-b ip:"). # DO NOT use both. # # If your KNX hardware is a KNX/IP gateway that doesn't do multicast, # use "-b ipt:192.168.1.2" (or its DNS name) to talk to it. # # KNX MUST NOT have more than one path between any two devices. Thus, # you need to make sure that the KNX/IP gateway does not route multicast # before you use both "-S" and "-b ipt:". # The default bus address of knxd is 0.0.1. If that's in use in your KNX # network (or if you run more than one knxd on your network), set a # different address (-e 15.0.99). # Run `knxd --help` to get a complete list of available options and drivers. ## DO NOT use the following options: ## -i -- /lib/systemd/system/knxd.socket does this for us ## -u /run/knx -- likewise ## -d -- /lib/systemd/system/knxd.service expects knxd to run in the foreground ############################################################################### # This file is ignored when NOT using systemd: edit /etc/default/knxd instead # ############################################################################### KNXD_OPTS="-e 1.0.240 -b ipt:192.168.0.88"
Die 192.168.0.88 ist exemplarisch für die IP-Adresse eures KNX-Gateways.
- Der Daemon sollte auch einem Jessie-System mit dem System starten.
Der Status des KNX-Dienstes kann mit systemctl status knxd.service geprüft werden. Die Ausgabe sollte so ähnlich aussehen:
root@rasspi-fhem99:~# systemctl status knxd.service ● knxd.service - KNX Daemon Loaded: loaded (/lib/systemd/system/knxd.service; enabled) Active: active (running) since Mo 2016-04-11 13:35:53 CEST; 14s ago Main PID: 1258 (knxd) CGroup: /system.slice/knxd.service └─1258 /usr/bin/knxd -e 1.0.240 -b ipt:192.168.0.88
Wichtig ist, dass die IP-Adresse des Gateways und die eib-Adresse (1.0.240) in der letzten Zeile stehen.
Der Dienst kann auch manuell gestartet und gestoppt werden: Start:
systemctl start knxd.service
Beenden:
systemctl stop knxd.service systemctl stop knxd.socket
Achtung! wird der Dienst beendet während fhem in benutzt, hängt sich fhem auf und muss neu gestartet werden.
- Definition des IP-Gateways in fhem:
define KNX TUL eibd:192.168.0.1 1.0.240
192.168.0.1 Adresse des KNX-Daemons, i.d.R. localhost
1.0.240 EIB-Adresse für FHEM/KNXD
Nach dem fhem-Neustart sollte das neue Device "KNX" den Status "Initialized" haben.
Installation/Konfiguration ETS
Die ETS wird benötigt um KNX-Sensoren/Aktoren zu parametrieren und ihnen EIB-konforme Adressen zuzuweisen. Ich empfehle an dieser Stelle das Dokument "Grundlagenwissen zum KNX Standard", welches von KNX.org heruntergeladen werden kann.
Einrichtung des Binäreingangs BE-04000-01 in ETS
- Bevor der Binär-Eingang benutzt werden kann, muss dieser in ETS konfiguriert werden.
Dazu wird in ETS zunächst ein Projekt angelegt. Als "Linientyp" wird TP (Twisted Pair) definiert. Das IP-Gateway wird von der ETS selbstständig gefunden.
- Bevor das Gerät selbst in ETS angezeigt werden kann, muss eine Struktur für das Gerät erzeugt werden:
1 Gebäudestruktur: Haus -> Keller -> Unterverteilung
2 Adressstruktur: "1 Haupt" -> "1/1 Mittel" -> "1/1/1 Schalter" 1.1.1 ist demnach die spätere Adresse für Schalteingang A des 4fach Geräts
3 Katalog-Import: Hier wird der Katalog für das Gerät importiert. Dieser wird dann per DragNDrop auf die erstellte Struktur "Unterverteilung" gezogen
- Jetzt kann das Gerät "Binäreingang 4-fach..." parametriert werden. Dazu im mittleren Fenster den Reiter "Parameter" wählen
Hier kann jetzt für jeden Eingang des Bausteins die entsprechende Funktion eingestellt werden, z.B. Schalter, Zähler, usw.
- Aus dem unteren Fenster werden nun per Drag N Drop die erstellten Gruppenadressen auf die jeweiligen Eingänge des Geräts gezogen. Damit wird auch die EIB-Adresse für jeden Eingang festgelegt.
- Jetzt muss das Gerät noch programmiert werden. Dazu Programmieren -> Physikalische Adresse und Applikationsprogramm
Installation/Konfiguration fhem
- In fhem sollten jetzt die neu erzeugten EIB-Geräte angezeigt werden. Voraussetzung ist ein aktiviertes AutoCreate in fhem.cfg
define autocreate autocreate
- Der Schalteingang wird als Glühbirne dargestellt
- Beim Zählereingang steht nur der Zählerstand als HEX-Zahl. In der ETS lässt sich für den Zähleingang festlegen, wie oft er Counter-Werte übertragen soll, z.B. alle 30 Impulse sollen übermittelt werden