Einrichten knxd mit MDT SCN-IP000.02

Aus FHEMWiki

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!), Raspbian 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 von knxd

KNX-Daemon für Linux installieren: Knxd#Installation

Konfiguration von knxd

  • /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 ihn 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.

Falls ihr Probleme mit der systemd socket activation habt könnt ihr diese mit "systemctl disable knxd.socket" ausschalten. Dann müsst ihr aber wieder -u und -i einfügen!

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:

Ets struktur.png

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

Geraet parametrieren.png

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 DragNDrop 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
  • Fhem eib.png
  • 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