Enertex® Bayern GmbH
Enertex® EibPC
Die Ausgangssituation
Mit Hilfe von Command Fusion können grafisch anspruchsvolle
Visualisierungen für das Apple iPhone oder Ipod generiert werden.
Ziel ist es, diese Visualisierung an den KNX-BUS anzubinden. D.h. jeder Knopf, Slider oder Textanzeige soll durch einen sogenannten Join („Verbindung“) mit einer Variablen des EibPC-Anwendungsprogramms oder KNX Busadressen verknüpft werden. Wird der Knopf in der Visu am iPhone betätigt, sendet der Join seine ID über LAN an den EibPC und dieser kann nun z.B. auf die entsprechende Gruppenadresse das EIN-Telegramm senden.
Empfängt der EibPC auf dieser Gruppenadresse ein Telegramm, weil z.B. ein Anwender den Lichtschalter betätigt, so sendet der EibPC diese Information an das iPhone über den Join, so dass die Anzeigeelemente am Telefon den aktuellen Status des Lichtaktors wiedergeben. (vgl. Abbildung 2).
Command Fusion kommuniziert dabei mit dem EibPC über eine TCP/IP Verbindung, wobei der EibPC als Server fungiert und die Daten in ASCII-Form übermittelt werden. Der EibPC stellt hier nun Makros bereit, mit denen in wenigen Klicks und dem Makroassistenten eine Konfiguration vorgenommen werden kann. Im folgenden soll dies kurz umrissen werden, um dann einen Blick hinter die Kulissen zu wagen: Wie macht man das im Detail: Wie verarbeitet man ASCII-Strings mit dem Enertex® EibPC? Letztlich ist es Ziel, einen Prototypen eines Interpreters für TCP/IP, UDP und RS232 Verbindungen und der Verarbeitung von Datenströmen über dieses Schnittstellen aufzuzeigen.
Dies soll auch Anwendern die Möglichkeit geben, andere ähnlich gelagerte Problemstellungen auf die gleiche Art zu lösen.
Grundsätzliche Kommunikation: Vom iPhone zum EibPC, vom KNX Bus zum EibPC und dann zum iPhone
Das bequeme Arbeiten mit Makros und Command Fusion
Als erstes zeigen wir, wie wir den EibPC mit dem Command Fusion (CF) auf einfache Weise konfigurieren. Zunächst muss mit dem guiDesigner die Oberfläche genieriert werden. Dabei trägt mandie IP Adresse des EibPCs im Projekt (guiDesigner) unter den Projekteinstellungen (Edit/Project Properties) im Feld „IP Address“ ein. Als Port muss dort 4809 eingetragen werden.
Um die Visu auf Ihr iPhone hochzuladen, nutzen Sie guiDesigner (File-Upload Service). Dazu müssen Sie auf dem iPhone zunächst in den Einstellungen zum iViewer im Feld „File Url“ das gleiche wie im Upload Service (Ihr PC) angezeigt eingeben und zunächst „Reload GUI“ wählen. Anschließend einmal iViewer starten und bedienen. Am Ende der Session die Einstellung „Reload GUI“ deaktivieren, damit die GUI im iPhone gespeichert bleibt.
Verfügbare Makros
Der eigentliche TCP/IP Server und das Messagehandling wird mit dem Makro CommandFusion angelegt. Dieses beinhaltet sämtliche Kommunikation mit dem Command Fusion auf dem iPhone, iPad oder Ähnliches.
Parametrierung des Makros CommandFusion
Zunächst muss das Makro CommandFusion eingebunden werden ein. Grundsätzlich kann der Enertex® EibPC mit mehr als einen Command Fusion Teilnehmer arbeiten. Dazu muss allerdings die IP Adresse jedes Teilnehmers, also z.B. iPhone, iPad im Makro mit angegeben werden. Falls nur mit einem einzigen Teilnehmer gearbeitet wird muss keine IP angegeben werden bzw. einfach im Makro an der entsprechenden Stelle 0.0.0.0 vorgeben werden.
Im nächsten Schritt können nun die Makros genutzt werden:
- Join2GA
Eine Gruppenadresse und eine Statusadresse direkt mit einem Join verknüpfen. Sendet CF an den EibPC, so wird der Wert direkt auf den KNX Bus geschrieben. Die Rückantwort an das CF wird initiiert, wenn sich die Status-Gruppenadresse ändert.
Parametrierung des Makros Join2GA
- Join2
Eine Variable und eine Statusvariable direkt mit einem Join verknüpfen. Sendet CF an den EibPC, so wird die Variable auf den Wert gesetzt. Wenn die Statusvariable sich im Anwendungsprogramm ändert, schickt der EibPC an das CF eine entsprechende Nachricht.
CF unterscheidet drei verschiedene Datentypen:
- „Digital“: Wert 0 oder1,
- „Analog“: 0 bis 65535
- „Seriell“: Text
Die Verknüpfung der Joins mit Gruppenadressen bzw. Variablen erreicht man mit den oben genannten Makros. Diese Makros konvertieren auch gleich die Datentypen in den jeweiligen Zieldatentyp. Der Datentyp des Joins wird anhand des ersten Buchstabens identifiziert (d für digital, a für analog und s für seriell). Wie die Joins im Command Fusion realisiert werden müssen, kann der guiDesigner Dokumentation entnommen werden.
Eine Besonderheit gibt es noch bei digitalen Joins, die mit Press-Release-Knöpfen arbeiten. Hier wird beim Drücken der Wert 1 und beim Loslassen der Wert 0 gesendet. Dabei möchte man ggf. nur eine Zuweisung nutzen. Dies kann mit Hilfe des Makros mit
- Join2ToggleVar
Eine Variable und eine Statusvariable direkt mit einem Join verknüpfen. Sendet CF an den EibPC, so wird die Variable auf den Wert gesetzt, wenn dem Join der Wert EIN gesendet wurde. Wenn die Statusvariable sich im Anwendungsprogramm ändert, schickt der EibPC an das CF eine entsprechende Nachricht.
- Join2ToggleGA
Eine Gruppenadresse direkt mit einem Join verknüpfen. Sendet CF an den EibPC so wird die Gruppenadresse invertiert auf den Bus geschrieben (steht sie auf EIN wird sie auf AUS) gesetzt.
- Join2Status
Eine Statusvariable (oder Gruppenandresse mit einem Join verknüpfen. Sendet CF an den EibPC, so wird dies ignoriert. Wenn die Statusvariable sich im Anwendungsprogramm ändert, schickt der EibPC an das CF eine entsprechende Nachricht.
- Join2Dimmer
Eine Gruppenadresse und eine Statusgruppenadresse direkt mit einem analogen Join verknüpfen. Hier wird intern eine Skalierung des analogen Joins vorgenommen, so dass direkt eine Dimmergruppenadresse verwendet werden kann. Mit Hilfe dieser Makros kann nun die Visualisierung mit dem CommandFusion auf einfach Weise wie in Abbildung 6 gezeigt erreicht werden.
Eine beispielhafte Konfiguration im EibStudio Hinter den Kulissen – der
Scheduler
Voraussetzung
Schauen wir nun etwas tiefer in die Makros und die Kommunkation. Command Fusion sendet einen textbasiereten Datenstrom über das TCP/IP Protokoll an den EibPC, wobei dieser den TCP Server darstellt. Dass der EibPC als solcher TCP/IP Server arbeiten kann, ist ab Firmware v1.200 möglich.
Das Protokoll von Command Fusion – Ein ASCII-basierter Datenstrom
Ist die Verbindung als solche aufgebaut, verschickt Command Fusion Text-Strings. Jede Textnachricht ist mit einem Endzeichen abgeschlossen. Das Endzeichen hat den Wert 0x03, welches lt. ASCII Standard auch End-of-Text (EOT) genannt wird und kein „darstellbares“ Zeichen ist. Ein beispielhaftes Kommando ist in Abbildung 7 dargestellt, wobei wir EOT als senkrechtes „Zeichen“ dargestellt haben.
Ein beispielhafter Datenstrom an den EibPC
Command Fusion baut dabei die Kommandos nach dem Schema Kommandotext „=“ Wert plus 1x EOT auf. In Abbildung 8 ist das Passwort-Kommando dargestellt, welches nur aus dem Buchstaben „p“ und dem Passwort „EibPC“ besteht. Dieses Kommando wird von Command Fusion nach dem Verbindungsaufbau an den EibPC geschickt, wobei das eigentliche Passwort als „Wert“ fungiert. Alle Antworten, die an das Command Fusion geschickt werden, müssen ihrerseits genauso aufgebaut sein, insbesondere auch mit dem EOT-Marker abgeschlossen werden. Auf das Passwort muss der EibPC dann mit p=ok{EOT} antworten.