Das Smarthome mit einer Siemens S7-300 auszustatten war für mich aus vielerlei Gründen klar. Zum einen kenne ich die Steuerung extrem gut und hatte noch von einem älteren Projekt eine Test-CPU zuhause. Zum anderen ist die Ersatzteilversorgung über einen langen Zeitraum gegeben. Über Ebay sind hier massenhaft Teile verfügbar. Der letzte Punkt ist der Preis, denn im Vergleich zu KNX-Systemen ist die S7 wirklich günstig.
Um die Steuerung nun mit der Smarthome-Zentrale, also Openhab, verbinden zu können, gibt es ein Binding. Dieses ist zwar für Openhab 1 entwickelt, kann jedoch mit Openhab 2 prima verwendet werden. Lediglich die PaperUI bleibt hier größtenteils unberührt, da die Itemkonfiguration, aufgrund der älteren Version, ausschließlich über Textdateien erfolgen kann.
Einbinden des Bindings
Zuerst sollte man im PaperUI die Funktion „Include Legacy 1.x Bindings“ aktivieren. Ohne diese werden Add-Ons von Openhab 1 nicht angenommen. Diese Funktion kann man in der Konfiguration unter dem Menüpunkt System finden.
Anschließend kann das Add-On hochgeladen werden. Ich erzähle dies aus Sicht einer Raspberry-Installation mit Openhabian, wie es bei anderen Installationsvarianten aussieht kann ich leider nicht sagen.
Doch nun benötigt man erstmal das Simatic Binding, dieses kann auf Github heruntergeladen werden. Ich verwende die Version 1.1.4
Add-Ons die nicht via PaperUI runtergeladen werden, müssen in das Verzeichnis „/opt/openhab2/addons/“ geladen werden. Das System findet dieses dann selbstständig und bindet es ein.
Binding einrichten
Nun geht es schon an die Konfiguration. Wechsele in den Ordner „/etc/openhab2/services/“. Dort legt man die Datei „openhab.cfg“ an, falls dies nicht schon durchs Binding selbst passiert ist. In dieser Datei werden die Verbindungsparameter der Steuerung angegeben. Ich nutze auf meiner CPU eine CP-Baugruppe, dieser habe ich eine feste IP-Adresse zugewiesen, welche ich nun in den Verbindungsparametern angebe. Somit habe ich in der „openhab.cfg“ folgenden Datensatz stehen:
simatic:refresh=500
simatic:plc=“IP-Der Station“:0.2:PG
Diese Zeilen möchte ich nun noch kurz ein wenig genauer erklären.
Mit dem Befehl „simatic:refresh“ wird der Aktualisierungsinterval festgelegt. Also die Zeit in der die Anfragen an die S7-Station erfolgen. In meinem Beispiel liegt der Interval bei 500ms.
Die zweite Zeile beschreibt die Verbindung zur S7-Station. Das Wort „PLC“ beschreibt hier einen Namen und kann frei vergeben werden. Es dient dafür später in der Itemkonfiguration die richtige Station zuweisen zu können.
Die IP-Adresse muss an dein System angepasst werden, hier muss man also die IP-Adresse eintragen, welche die S7-Station im eigenen Netzwerk hat.
Die letzten beiden Ziffern, in meinem Fall die „0.2„, beschreiben die Adresse der CPU auf der Rackschiene. Bei mir ist die S7-CPU an zweiter Position auf dem Rack, daher muss ich hier die „0.2“ angeben. Sollte man eine andere Position haben, so muss man es entsprechend auf das jeweilige System anpassen.
Der Begriff „PG“ am Ende beschreibt die Art der Station. Es wird hier unterschieden zwischen „OP„, „PG“ und „S7„, jedoch war die Verbindung bei mir nur mit „PG“ möglich.
Es besteht die Möglichkeit weitere S7-Stationen anzugeben wenn man dies möchte. Wichtig ist nur das jede Station ihren eigenen Namen bekommt, diese dürfen nicht doppelt vergeben werden.
Die Item-Konfiguration
Anschließend geht es an die Item-Konfiguration. Für die Übersichtlichkeit habe ich mir festgelegt, das ich meine auszutauschende Daten über Datenbausteine laufen lassen werde. Man kann jedoch über das Binding auch direkt Eingänge, Ausgänge oder auch Merker abfragen.
Ein Item sieht bei mir nun entsprechend so aus:
Switch Licht_Wohnzimmer „Licht – Wohnzimmer“ { simatic=“plc:DB10.DBX0.1″ }
Hiermit habe ich für Openhab einen Schalter definiert. Dieser schreibt und liest seinen aktuellen Wert als Boolsche Variable vom „DB10.DBX0.1“ und der Station „plc„. Die Station habe ich in der Konfig, wie oben beschrieben bereits erklärt, festgelegt. Der Name wird hier wieder Verwendet um die entsprechende Station zu verwenden. Alle anderen Parameter können dem Beitrag zur Begriffsdefinition entnommen werden.
Im S7-Projekt musste ich nun noch den Raspberry mit Openhab und seiner festen IP-Adresse als Simatic Station angeben, da mich die CP sonst nicht auf die CPU lies.
Danach funktionierte alles reibungslos und ich konnte ohne große Verzögerung alle Daten austauschen die ich angegeben habe.
Du musst angemeldet sein, um kommentieren zu können.