Im Jahr 2012 gab es für mich als frischgebackener SmartHome-Bewohner auf Basis der Siemens Logo keine gute Lösung um sein Heim von unterwegs oder auch zu Hause mittels Tablet oder Handy komfortabel zu steuern. Also entwickelte ich das Projekt LogoControl und teilte mein Wissen hier, damit auch andere davon profitieren konnten. Seit dem ist viel passiert im Bereich des SmartHome. Die AppNetIO-Controller (welche ich zur Steuerung verwendete) hat ihren Betrieb zum Ende 2021 eingestellt, womit viele der Anleitungen hier nicht mehr aktuell sein dürften. Meinen ursprünglichen Ansatz alles mit der Logo zu realisieren habe ich schon nach einem Jahr über Bord geworfen. Mittlerweile haben bei mir neben der Logo noch diverse Funkstandards wie Homematic, Zigbee und Enocean Einzug gehalten und diverse andere smarte Geräte (Mähroboter, Backofen, Wäschetrockner, TV…. usw.) sind im Einsatz. Dies alles in LogoControl unter einen Hut zu bringen, wäre zur Herkules-Aufgabe geworden.
Für alle, die nun nach einer aktuellen Lösung suchen ihr mit einer LOGO betriebenem Heim smarter zu machen, würde ich auf OpenSource basierende Universallösungen wie OpenHAB, ioBroker oder Home Assistant verweisen. Hinter diesen Projekten steckt jeweils eine große Community von Entwicklern (und nicht Herstellern, die einen nur in ihre eigene Sackgasse ziehen wollen), die versuchen alle möglichen smarten Geräte in ihre Plattform zu integrieren. Und falls es für dein exotisches Gerät noch kein Binding/Adapter/Integration gibt, kannst du immer noch selbst aktiv werden und programmieren. Ich bin seit ein paar Jahren bei OpenHAB gelandet und habe dadurch nun alle Geräte unter sprichwörtlich dem selben Hut.
Eventuell finde ich in der Zukunft mal Zeit meine Reise von LogoControl zu OpenHAB hier zu dokumentieren, aktuell ist diese Webseite aufgrund privater und beruflicher Themen jedoch stark in den Hintergrund gerückt und nicht absehbar, dass sich das kurzfristig ändert.
Was ist LogoControl?
LogoControl erweitert die Siemens LOGO (ab 0ba7) um genau die Funktionen, welche eine LOGO mit Ethernetschnittstelle meiner Meinung nach von Anfang an hätte mitbringen sollen: Einen Webserver und eine offene Webservice-API zur Anbindung von Drittanbieter-Programmen und Apps. Ersteres hat Siemens zwar mit der neuen 0ba8 nun nachgerüstet, aber für mich jedoch viel Potential bei der Umsetzung leichtfertig verschenkt. In der aktuellen Form finde ich den Webserver am Anwender vorbei entwickelt und nicht konsequent zu Ende gedacht. Hallo, liebe Produktmanager bei Siemens, aufwachen! Wer hat euch gesagt, dass wir Anwender uns nichts anderes wünschen als eine stupide Kopie des unkomfortablen 6×20 Zeichen Textdisplays mit ein paar Hardware-Knöpfen im Browser auf einem riesigen 24″-Monitor zu sehen? Wer will schon durch x-fach verschachtelte Meldungstext-Menüs blättern, sich mit Speicheradressen und I/Os herumschlagen und Funktionen mit F-Tasten auslösen wenn er einfach nur sein Rollo per Smartphone schließen möchte? Warum gibt es keine Möglichkeit komplett individuelle Visualisierungen auf HTML-Basis zu erstellen und vom Webserver der LOGO ausliefern zu lassen? Warum gibt es keine einfache, offene und dokumentierte API, mit welcher beliebige Drittanbieter-Apps oder Automatisierungslösungen an die LOGO angebunden werden können?
Webservice
LogoControl kümmert sich hauptsächlich um den letzten Punkt: Es bietet eine offene API auf Basis eines Webservice (REST/JSON) zur Anbindung beliebig vieler fremder Clients. Alles, was einen einfachen HTTP-GET Request senden kann (z.B. eine App fürs Smartphone oder Tablet, ein Script, dein selbstgeschriebenes Programm etc.), ist damit in der Lage die Logo anzusprechen (lesen/schreiben). Dabei bleiben die für den technisch nicht versierten Benutzer kryptisch aussehenden Speicheradressen (z.B. VB127.3) und Ein-/Ausgänge der LOGO unsichtbar hinter LogoControl versteckt. Durch die API sichtbar sind nur noch Devices (z.B. ein Rollladen) mit ihren Methoden (z.B. öffnen, schließen) und Attributen (z.B. Status=geschlossen/geöffnet/Zwischenposition).
Um z.B. eine Lampe zu schalten ist nur folgender HTTPS-Aufruf nötig:
https://username:password@name.dyndns.org:8080/rest/devices/15/methods/1
Um zu wissen ob die Lampe an oder aus ist:
https://username:password@name.dyndns.org:8080/rest/devices/15/attributes/1
Web-UI zur Steuerung
Weiterhin bietet LogoControl eine Weboberfläche mit Listenübersicht zur Anzeige und Steuerung aller Geräte. Diese ist bewusst einfach gehalten und nur in Grenzen anpassbar, aber für einfache Anwendungszwecke vollkommen ausreichend. Für anspruchsvollere Visualisierungen mit frei gestaltbarer Oberfläche kann die Drittanbieter-App NetIO Controller (für iOS und Android) über den Webservice an LogoControl angebunden werden.
Was benötige ich dafür?
Die Anwendung benötigt dafür einen Rechner der 24/7 in Betrieb ist. Ich verwende einen Raspberry Pi 2, da hier sowohl Anschaffung (ca. 40-50 EUR) als auch Stromverbrauch (ca. 3 Watt) sehr günstig sind. Alternativ tut es auch jede Windows-Kiste mit .NET Framework. Linux und MacOS X sollte auch funktionieren allerdings müsst ihr hierfür die LibNoDave lib selbst kompilieren. Empfehlen würde ich wie gesagt den Raspberry Pi 2, wofür auch diese Anleitung geschrieben wurde. Den Pi 1 würde ich aufgrund der langsamen Performance und der „exotischen“ Prozessorarchitektur (ARMv6) nicht mehr in Betracht ziehen.
Warum ein eigener Server-Dienst?
Realisiert wurde das ganze mit der LibNoDave Bibliothek. Man könnte die lib zwar auch direkt in die Smartphone-App integrieren, allerdings hat dies 2 Nachteile. Erstens: die lib verbindet sich auf Port 102, die LOGO lässt hier jedoch nur eine Verbindung gleichzeitig zu. Verbindet sich ein Zweiter wird der Erste rausgeworfen. Ich hätte allerdings mehrere Smartphones + ein Tablet was zu Statuszwecken an die Wand gedübelt ist und ständig läuft. Zweitens: die Kommunikation über Port 102 ist unverschlüsselt und auch ohne Authentifizierung. Den Port im Internet verfügbar zu machen ist also eine ganz schlechte Idee. Besser ist es ein VPN zu nutzen. Wer das allerdings schon mal von einem iPhone versucht hat, weiß wie umständlich das dort gelöst ist. Die VPN-Verbindung wird bei jedem Sleep getrennt, aufgebaut wird sie nur manuell. Um mal eben vor der Tür den el. Türöffner zu betätigen einfach zu langsam (In Einstellungen-App wechseln, VPN aufbauen, warten, Steuer-App starten…).
Der REST/JSON-Webservice kann dagegen direkt mit dem Internet verbunden werden. Er nutzt SSL/TLS zur Verschlüsselung und HTTP-Basic-Auth (Benutzername/Passwort) zur Authentifizierung. Zusätzlich zur sicheren HTTPS-Verbindung gibt es zudem die Möglichkeit einen unverschlüsselten HTTP Webservice ohne Basic-Auth zu aktivieren, um diesen z.B. nur im lokalen Netz zu Nutzen oder mit anderen Diensten (z.B. FHEM) zu koppeln.