LogoControl

Was ist LogoControl?

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.

LogoControl-Status
LogoControl Statusübersicht
LogoControl Konfigurationseditor
LogoControl Konfigurationseditor
Netio_MeinHaus
3rd Party App „NetIO Controller“ nutzt den Webservice von LogoControl

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.