Aktorik & Sensorik mit dem Beckhoff Feldbus und Homegear

Homegear mit Beckhoff BK9000 Titelbild

Wie bereits an anderer Stelle erwähnt, haben wir Ende 2018 ein Haus gekauft und fast das komplette Jahr 2019 damit verbracht es zu renovieren. Endlich konnte ich Grundlagen für eine Automation schaffen und war nicht mehr an die Grenzen einer Mietwohnung gebunden 😁
Die Frage war also, was verbaue ich für die Aktorik (Schalten) und Sensorik (Taster, Fühler, etc.)?

Findungsphase

Geplant ist die komplette Beleuchtung, alle Taster, die Rollos/Raffstores und die Heizung zu automatisieren. Zusätzlich noch die Anbindung des Logitech Media Servers und eine ordentliche Anzeige und Steuerung per Handy/Tablet.

Die erste Idee war der Einbau eines Loxone Miniservers um die wirklich gute Visualisierung zu nutzen und von den vielen fertigen Funktionen zu profitieren. Durch den von mir entwickelten node-red-Node (node-red-contrib-loxone) hätte ich ja die Möglichkeit beliebige Komponenten mit Loxone zu verbinden…
Allerdings wurde keine neue Hauptverteilung eingebaut, wodurch wir platztechnisch ein wenig begrenzt waren. Noch dazu hätte ich für die benötigte Anzahl an Ein- und Ausgängen mindestens acht bis zehn Loxone-Extensions benötigt. Das entspricht dann genau so vielen Plätzen auf der Hutschiene mit jeweils neun TE und kostentechnisch wäre es nur schwer abbildbar.

Es musste also eine andere Lösung her: Durch meine Erfahrung und Begeisterung für Homegear war schnell klar, dass damit das Herz der Automation realisert wird. Node-Blue als Grundlage für Logik und Abläufe bildet dafür eine exzellente Basis. Dazu kommt noch, dass es mit der Zeit immer mehr fertige und nutzbare Module in node-blue gibt – so zum Beispiel ein PID-Regler zur Heizungssteuerung.

Hardware

Mit dieser Entscheidung hieß es dann herauszufinden, welche Mittel für Taster und Schaltaufgaben zur Verfügung stehen. Eine Möglichkeit wäre natürlich gewesen auf Homematic oder EnOcean zu setzen… ich wollte aber keine Funkprotokolle nutzen, wenn ich die Möglichkeit habe Kabel zu verlegen.
Nach ein paar Gesprächen zum Thema, wurde ich auf homegear-beckhoff und die damit mögliche Anbindung eines Beckhoff BK9000 Felsbuskopplers aufmerksam gemacht. Danke Sathya 😉

Die Steuerung von Beckhoff ist eine ausgewachsene Industriesteuerung die über verschiedenste Module erweitert werden kann. Basis bildet ein Buskoppler um den sog. Feldbus anbinden zu können. Diese „Feldbuskoppler“ gibt es mit zig verschiedenen Schnittstellen wie zum Beispiel CAN, RS485, ModBus und Ethernet.
Ähnliche Systeme mit vergleichbaren Leistungsmerkmalen gibt es auch von Wago und Phoenix Contact – allerdings sind die Jungs von Homegear noch nicht dazu gekommen eine Anbindung dafür zu schreiben 😉

Homegear nutzt zur Kommunikation mit einem Beckhoff BK9000 Ethernet-Feldbuskopplers ModBusTCP. Darüber können bereits verschiedenste Module – die in diesem Kontext Feldbusklemmen heißen – angesprochen werden. Neben reinen digitalen I/O-Modulen werden bereits analoge Ein- und Ausgänge sowie ein Modul für PT100-Temperaturfühler unterstützt. Diese Module können am Feldbus beliebig kombiniert werden und es gibt noch viele weitere Module von Beckhoff.

Der Feldbuskoppler selbst enthält keine Logik und dient nur zur physischen Anbindung der bis zu 64 Module pro Feldbus. Mit Homegear kann man nun die Logik abbilden und zum Beispiel auch eine Brücke zu mqtt schlagen, um die I/O’s in beliebigen (anderen) System nutzen zu können.

Aufbau

Installation Beckhoff BK9000 im Schaltschrank

In meinem Fall nutze ich die Feldbusklemmentypen KL1408 für acht digitale Eingänge und KL2408 für acht digitale Ausgänge. Diese werden in verschiedener Häufigkeit am Feldbus angesteckt und dann der Feldbus mit einer Busabschlussklemme BK9010 terminiert. Bei mir also

  • 5 x KL2408 = 40 x 24V/500mA Ausgänge
  • 8 x KL1408 = 64 x 24V Eingänge
  • 1 x KL9010 Busabschluss

Beim Aufbau des Feldbusses bitte in jedem Fall die Vorgaben von Beckhoff beachten und für die Versorgung der Klemmen, inkl. der eventuell angeschlossenen Verbraucher, in jedem Fall den Bus passend aufteilen und mit Buseinspeiseklemmen arbeiten.

An den Eingangsklemmen (lila Kabel) sind normale Taster oder Bewegungsmelder mit 24V angeschlossen, die per J-Y(ST)Y aus dem ganzen Haus kommen. Für das Schalten von 230V nutze ich Koppelrelais in verschiedenen Größen (rote Kabel). Dazu kommen dann zukünftig noch die Heizungsstellmotoren.

Obwohl wir keine Fußbodenheizung haben, hatten wir das Glück, dass die meisten Heizkörper über einen Heizkreisverteiler versorgt sind. Dort kommen 24V-Stellantriebe zum Einsatz, die ohne Probleme direkt von den Digitalausgängen der KL2408 geschaltet werden können.

Für die Beleuchtung setze ich den von uns (cod.m) entwickelten 10-Kanal LED-Dimmer ein. Dafür werde ich natürlich noch mal einen gesonderten Artikel schreiben – genauso wie für die Lösung zur Messung der Temperaturen in den einzelnen Räumen. Da bin ich noch nicht ganz wo ich sein will 😉

Programmierung

Liste von Kanalnamen im Admin-UI
Benamung einer KL2408-Klemme im Admin-UI

Der Feldbuskoppler wie auch die angesteckten Klemmen müssen Homegear bekannt gemacht werden. Das ist mittlerweile recht einfach über das Admininterface möglich. Es empfiehlt sich die Datenpunkte bei diesem Schritt direkt passend zu benennen. Sie tauchen dann mit diesen Namen in node-blue auf und können über den variable-in-node einfach genutzt werden.

Für simple Schaltaufgaben ist es fast schon zu einfach: Durch den Toggle-Node wird der Zustand eines Ausgangs beim Triggern einfach nur umgeschaltet. Wichtig ist dabei, dass jeder Tastendruck der durch die KL1408-Klemme an Homegear weitergereicht wird, eine steigende und fallende Flanke hat. Also true wenn der Taster gedrückt wird – der Eingang auf „high“ geht und false wenn der Taster losgelassen wird – der Eingang also wieder „low“ wird. Der Toogle-Node verarbeitet das direkt entsprechend.

Einfache Ein-Aus-Schaltung mit Tastereingang in node-blue

Eine Sache auf die man bei der Programmierung in node-blue achten muss, ist, dass jeder neue Zustand ein Event erzeugt. Im Beispiel von eben also das true und auch das false. Wenn man nun anfängt boolsche-Verknüpfungen zu bauen, bekommt man auch im Falle von false im Ergebnis einen Event generiert. Wenn man nur an true interessiert ist, kann das leicht mit einen risingedge-node filtern.

Anfangs ist der gedankliche Spagat von klassisch logischer Programmierung (AND, OR, etc.) und eventbasiertem Ansatz etwas schwierig. Nach einer kurzen Eingewöhnungszeit stolpert man dann nur noch selten über diese Hürde.

Da wir ja ein Haus umgebaut haben, konnte ich natürlich nicht an jede Stelle neue Kabel aus der Verteilung ziehen. Für diese Fälle setze ich auf mehrere Shelly’s, die hinter die vorhandenen Schalter – die gegen Taster ausgetauscht wurden – eingebaut wurden.

Der Taster am Shelly toggled das Relais direkt und von anderer Stelle im Raum wird mit einem Taster, der über die Beckhoff kommt, per MQTT das entsprechende Topic des Shelly gefüttert. Der change-node setzt die Message „toggle“…

Flow node-blue Beckhoff Shelly
Schalten eines Shelly’s per MQTT mittels Taster am Beckhoff KL1408

Fazit

Preislich ist die Masse an I/O die ich mit der Beckhoff-Steuerung über Homegear realisieren kann ungeschlagen. Die meisten Teile habe ich über eBay bezogen, als Beispiel für die 8-fach Ausgangsklemme (24V/500mA) zwischen 25,- und 35,- Euro. Pro Ausgangskanal muss dann natürlich noch das eventuelle Koppelrelais gerechnet werden. Im Schnitt bleibe ich dann aber pro Kanal unter 10,- Euro. Der Feldbuskoppler schlägt zwar mit deutlich mehr zu Buche, kann aber auch über eBay bezogen werden.
Für den professionellen Einbau bezieht man die Teile über den Elektrogroßhändler, der im Normalfall entsprechende Rabatte einkalkulieren kann.

Die Reaktionszeiten – also Pollingzeiten für ModBusTCP – können in der Homegearkonfiguration noch mal „getuned“ werden, abhängig von der verwendeten Hardware. Auf meinem Pi 3B+ könnte ich das Pollingintervall also viel niedriger setzen als die aktuellen 50ms. Ich kann aber jetzt schon keine Verzögerungen wahrnehmen – selbst bei Schaltaufgaben für MQTT (Shelly).
Der Beckhoff Feldbuskoppler kann durchaus im 2ms-Takt gepollt werden. Dafür ist er ja gemacht 😉

Ein großer Vorteil ist außerdem der Platzbedarf. Schlussendlich hatte ich in der Verteilung nur vier Hutschienen für die Automation zur Verfügung. Davon werden schon zwei durch die Dimmer belegt – so blieben also nur noch zwei mal 12 TE übrig.
Zugegebenermaßen hätte ich noch einen weiteren Aufputzverteiler setzen können. Dagegen spricht dann aber der preisliche Vorteil der jetzigen Lösung.

Wie immer bei Fragen oder Anregungen melden 👍

Update 26.6.2020

Sathya hat am Beispiel von ein paar EnOcean-Geräten mal ein wenig node-blue im Video erklärt.