Update vom 25.11.2020: Dieses Tutorial dient zur Einbindung des Simatic Bindings in Openhab 2 mithilfe des Kompatibilitätsmodus. Das Simatic-Binding ist ein Openhab 1 Binding, welches unter Openhab 3 nicht mehr funktioniert. Hier wurde die Abwärtskompatibilität für Bindings entfernt. Allerdings wird das Simatic Binding auf Openhab 3 geupdated, hierzu werde ich, sobald ich es in Betrieb habe, ein eigenes Tutorial schreiben.
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
Update vom 25.11.2020: Der Link zu Github wurde von mir angepasst auf die letzte Version die von Openhab2 im Kompatibilitätsmodus unterstützt wird. Das Binding wird aktuell vom Entwickler auf Openhab3 hochgezogen. Sobald ich etwas mit Openhab3 gearbeitet habe, wird es dafür eine eigene Anleitung geben!
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.
Update vom 28.02.2019: Es ist unter gewissen Umständen notwendig einen Neustart des Systems durchzuführen, nachdem das Binding in den Ordner kopiert wurde (danke Fabian für diesen Hinweis). Ohne Neustart des Systems wird das Binding nicht installiert und man bekommt nur Fehlermeldungen in den Logs zu sehen.
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 bereits erklärt, festgelegt. Der Name wird hier wieder Verwendet um die entsprechende Station anzusprechen. 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.