Einsatz:
Einbindung der CUN und CUL Module von www.busware.de in
IP-Symcon.
Diese Geräte sind in der Lage, mit der Firmware culfw mit den gängigen Homeautomatisierungsgeräten wie
FS20, HMS, FHT, EM1010 usw., offizielle Liste und alle Funktionen siehe README, zu komunizieren
und geben die empfangenen Daten über einen Netzwerkport(CUN) bzw.
virtuellen Comport über USB(CUL) an den PC weiter und können deren Aktoren ansteuen.
Zur Verarbeitung in IPS ist es notwendig, die empfangenen Datensätze zu dekodieren. Jedes Gerät verfügt über eine individuelle Recordstruktur.
Die Scripte bietet z.Z. eine Implementierung für die Datensätze der EM1000, WS300 und HMS-Sensoren, der Telegramme der FS20 und FHT-Sender sowie der FS20 Aktoren.
Desweiteren wurde eine dynamische Erstellung und Verwaltung der IPS-Variablen sowie ein Eventhandler zur automatischer
Konfiguration des CUN/CUL bei Aktivierung integriert.
Sourcecode: (V0.6 31.12.2011)
benötigtes Interface:
Funktion:
Das Script implementiert z.Z. die Auswertung Daten von EM1000, HMS, WS300, FS20 sowie FHT-Sendern und das Ansteuern von FS20 Funkschaltern und Dimmern.
Für jedes vom CUL/CUN-Parser empfangene Gerät wird eine neue IPS-Kategorie in den IPS-Baum eingefügt und dort für jeden Typ
spezifische Variablen selbstständig angelegt, die sich anschliesssend beliebig
weiterverarbeiten lassen. Weiterhin können alle Daten in Logfiles geschrieben werden.
Außerdem wird die Empfangsstärke jedes Senders am CUN/CUL (Variable Signal in dB) ausgegeben und kann zur Optimierung des Sender- oder CUN/CUL-Standortes
genutzt werden.
Ein Eventhandler-Script überwacht den Status der IO-Instance und sendet die benötigten Initialisierungsbefehle bei Aktivierung der Instance zum CUL bzw. CUN.
Das Regvar-Script kann man auch über die Konsole ausführen. Dadurch wird die Instance kurz deaktiv und wieder aktiv geschaltet,
wodurch über den Eventhandler die Parameter noch einmal an das CUN/CUL geschickt werden und die Version abgefragt wird.
Das FS20Send Script wird als Eventhandler bei Aktualisierung der FS20-Statusvariablen konfiguriert und kann damit die Änderungen an der FS20-Instance über CUN/CUL
an den Aktor übertragen.


Installation
Als erstes muss die Firmware culfw auf das CUN bzw. CUL aufgespielt werden, weil die Geräte ohne Firmware ausgeliefert werden.
Für die im August 2010 ausgelieferten CUN mit dem Atmel AT90USB646 war dazu die Version 1.39 aus dem CVS-Repository und das Programm
FLIP von Atmel notwendig.
Dazu sind die Atmel USB-Treiber (Bestandteil des Flip-Dowmloads) für die USB-Schnittstelle zu installieren und die Firmware mittels
Flip auf die Geräte zu flashen. Nach dem Neustart meldet sich ein neues Gerät CUN bzw CUL. Diese sollten mittels des MyUSB-Treibers im culfw Packet(docs/MyUSB_USBtoSerial.inf)
oder des Treiber-Files von busware.de( CUL.inf ) einen neuen virtuellen ComPort im System generieren.
Dazu auch bitte die Anleitungen auf der Herstellerseite und auf http://www.koeniglich.de/culfw/culfw.html beachten.

neuer COM-Port für CUL mit CUL.inf
Nun kann man sich mittels Hyperterm/Hterm auf die Geräte verbinden. Mit dem Kommando "V" sollte sich das CUN/CUL mit seiner Version melden.
Das CUN besorgt sich seine IP-Adresse über DHCP. Da die generierte MAC-Adresse nicht bekannt ist, kann man über den USB-Anschluss
mit "c" die aktuelle Einstellung ansehen und auch eine feste IP-und/oder Mac-Adresse (Kommandos "Wia"bzw "Wim")konfigurieren.
Zur Inbetriebnahme muss für das CUL im Gerätemanager ein virtueller COM-Port und für das CUN die IP-Adresse bekannt sein.
Bei der Daten-Verbindung mit dem CUN muss der Telnet-Port des Gerätes (Standard:2323) angesprochen werden.
IPS-Konfiguration:
Zunächst ist für den COMPort
des CUL eine Instance des IPS Comport-IODevices bzw für den CUN eine Instance des Clientsockets anzulegen. Der Comport wird auf den für CUL erstellten virtuellen Comport mit den Parametern 9600,8,N,1 konfiguriert.
Die Clientsocket-Instance bekommt jedoch die IP-Adresse des CUN und den Port 2323 zugewiesen.
Jetzt muss noch eine Instanz "RegisterVariable" angelegt werden, welche als Parent die Comport- bzw die Clientsocket-Instanz erhält
IPS-Instancen
Es ist ein neues Script mit dem Inhalt von CUL_RegVar.phps zu erstellen und im Modul "Registervariable" als Ziel zuzuweisen.
Die aufgezeigten StatusVariablen werden automatisch erzeugt.

IPS Register Variable
Es ist ein neues Script mit dem Inhalt von CUL_Event.phps zu erstellen und in der Kern Instance "Event Handler" als Status Event
für die jeweilige IO-Instance zuzuweisen. Dieses Script setzt den Modus "X21" automatisch im CUN/CUL wenn die Instance aktiv wird und fragt zusätzlich
die Firmwareversion ab

IPS Event Handler
optional: FHZDummy
Die IPS-FHZ Devices erfordern als Parent normalerweise eine FHZ1x00PC-Instance und legen diese auch incl. des FTDI-IO-Parents
selbständig an. Wenn man keine echte FHZ hat, gibt es Fehler wegen inaktiver Instancen im Log.
Wenn man das nicht möchte, kann man eine Instance des FHZDummy SplitterModul
als erstes anlegen. Man kann die FHZdummy-Instance aber auch später anlegen. Dann muss man den Parent für das Device
von der FHZ1x00-Instance auf die Dummy-Instance ändern und anschliessend die FHZ1x00PC-Instance und die zugehörige FTDI_Instance wieder löschen.

IPS FHZDummy
FS20-Schalter:
Die FS20-Schalter werden wie gewohnt als neue Instancen angelegt und konfiguriert. Die Verbindung mit einem Parent ist eigentlich notwendig, ´
bei der Bedienung mit dem Webfront gibt es jedoch dann warnhinweise. In diesem Fall kann man sich eine Dummy FHZ-Instanz verbunden mit einer deaktivierten FTDI-Instance anlegen.
Das FS20Send-Script wird ebenfalls als neues Script erstellt. Nach dem Abspeichern wird diesem Script über "Objekt hinzufügen -> Ereignishizufügen ein neuer Aoslöser
für die FS20-Statusvariable "Intensität" "Bei Variablenänderung" angelegt.

IPS FS20 Event

IPS FS20 Auslöser
Die Schritte sind für die Statusvariable "Status" zu wiederholen.
Spezielle Konfiguration
Kategorie- und Variablennamen: Die Namen der angelegten Kategorien kann man ändern, nicht aber deren Hierarchie und die Namen der Variablen.
Logging: Das Logverzeichnis für das RegVar-Script kann am Anfang des Scriptes in der Variable "$logdir" gesetzt werden. Will man das Logging abschalten,
muss die Variable für den entsprechenden Bereich auf eine leere Zeichkette z.B.
$cullog="";gesetzt werden.
Erweiterung:
Durch einfache Erweiterung lassen sich auch die anderen gesendeten Records auswerten. Dazu muss einfach eine weitere If-Bedingung zum Matchen in die foreach-Schleife mit den Records eingebaut und mit dem entsprechenden Recordtyp ergänzt werden.<?php if (preg_match("/^E[0-9A-F]{18,20}\s*\$/",$line)) { // E0101E2997805002F02 $type=substr($line,2,1); $addr=substr($line,3,2); ?>Eine gute Hilfe ist hier das Mylogger-Modul aus dem Demo-Packet, welches sich selbstständig mit der erste Instance mit SendText-Interface wie ClientSocket verbindet und alle einkommenen Daten mitloggt. Allternativ könnte man nätürlich auch entsprechende Funktionen in das Script einbauen.