Die MC35-GSM-Modems werden zum Empfang von SMSen benötigt. Benachrichtigte Benutzer können auf Alarme antworten und neue Alarme per SMS auslösen. Sollte die Hardware, auf der ZABOS läuft, keine seriellen Ports besitzen, müssen serielle Ports über eine Erweiterungskarte oder Serial-2-Ethernet angebunden werden.

Installation rxtx

Es ist notwendig, dass RXTX installiert wird. RXTX ist eine Bibliothek, mit der der serielle Port des Computers über Java angesprochen werden kann. Ohne installiertem RXTX können die GSM-Modems nicht genutzt werden. ZABOS ist gegen RXTX 2.2 gelinkt worden.

Manuelle Installation der mfizz-Distribution

Download unter http://mfizz.com/oss/rxtx-for-java.

Windows

Choose your binary build - x64 or x86 (based on which version of
the JVM you are installing to)
NOTE: You MUST match your architecture.  You can't install the i386
version on a 64-bit version of the JDK and vice-versa.
For a JDK installation:
Copy RXTXcomm.jar ---> <JAVA_HOME>\jre\lib\ext
Copy rxtxSerial.dll ---> <JAVA_HOME>\jre\bin
Copy rxtxParallel.dll ---> <JAVA_HOME>\jre\bin

Linux

Choose your binary build - x86_64 or i386 (based on which version of
the JVM you are installing to)
NOTE: You MUST match your architecture.  You can't install the i386
version on a 64-bit version of the JDK and vice-versa.
For a JDK installation on architecture=i386
Copy RXTXcomm.jar ---> <JAVA_HOME>/jre/lib/ext
Copy librxtxSerial.so ---> <JAVA_HOME>/jre/lib/i386/
Copy librxtxParallel.so ---> <JAVA_HOME>/jre/lib/i386/
NOTE: For a JDK installation on architecture=x86_64, just change the
i386 to x86_64 above.

Installation in CentOS

Wenn RXTX über den Paketmanager installiert werden soll, köännen folgende Befehle unter CentOS als root ausgeführt werden:


wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release*rpm
yum install rxtx
# rxtx mit dem aktuellen JDK verknüpfen
ln -s `rpmquery --list rxtx | grep librxtxSerial.so`
ln -s `rpmquery --list rxtx | grep RXTXcomm.jar`

Konfiguration von ZABOS

Um GSM-Modems zu benutzen, muss das Profil mc35 aktiviert sein. Dies sorgt dafür, dass beim Start die seriellen Ports gescannt werden. Zusätzlich kann über das Profil force-serial-ports und der Einstellung serial.ports zusätzliche serielle Ports registriert werden, siehe Konfiguration und Profile.

Installation zusätzlicher serieller Ports

Serielle Ports über Ethernet

Um beispielsweise einen besseren Empfang der GSM-Modems zu gewährleisten, können diese an an beliebiger Stelle platziert werden, an denen ein Ethernet-Anschluss verfügbar ist. über passende Konverter können die GSM-Modems über Ethernet angesprochen werden. Bewährt haben sich die IOLAN-Geräte von Perle.

Nach der Installation des IOLAN-Treibers muss die IP-Adresse des Endgeräts konfiguriert werden. Dazu bitte die Installationsanleitung der IOLAN-Geräte konsultieren. Die seriellen Ports tauchen dann als /dev/tx* auf.

Serielle Ports über Erweiterungskarte

Wenn ZABOS startet erscheint im Log der Eintrag


INFO  2013-09-20 13:31:47,912: de.ecw.zabos.mc35.SerialPortIdentifierDaemon::init: Registriere zusaetzliche serielle Ports
INFO  2013-09-20 13:31:47,912: de.ecw.zabos.mc35.SerialPortIdentifierDaemon::init: Zusaetzliche Ports: /dev/ttyS0:/dev/ttyS1:/dev/ttyS3:
INFO  2013-09-20 13:31:47,913: de.ecw.zabos.mc35.SerialPortIdentifierDaemon::init: Ueberpruefe verfuegbare seriellen Schnittstellen
DEBUG 2013-09-20 13:31:47,947: de.ecw.zabos.mc35.AbstractBaseSerialIO::getPortIdentifiers: port[0]= "/dev/ttyS0" type="1".
DEBUG 2013-09-20 13:31:47,947: de.ecw.zabos.mc35.AbstractBaseSerialIO::getPortIdentifiers: port[1]= "/dev/ttyS1" type="1".
DEBUG 2013-09-20 13:31:47,949: de.ecw.zabos.mc35.AbstractBaseSerialIO::getPortIdentifiers: found 2 serial ports.
INFO  2013-09-20 13:31:47,950: de.ecw.zabos.mc35.SerialPortIdentifierDaemon::init: COM [0] Owner: "null", Name: "/dev/ttyS0", Porttype: "1"
INFO  2013-09-20 13:31:47,951: de.ecw.zabos.mc35.SerialPortIdentifierDaemon::init: COM [1] Owner: "null", Name: "/dev/ttyS1", Porttype: "1"

Dies bedeutet, dass die internen seriellen Schnittstelle auf dem Mainboard zwar gefunden worden sind, aber die externe Karte noch nicht eingerichtet ist.

Dies lässt sich einfach mit dmesg überprüfen:


# Karte eingerichtet
dmesg | grep tty
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
00:09: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:0a: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
0000:00:08.0: ttyS2 at I/O 0xe000 (irq = 16) is a 16550A
0000:00:08.0: ttyS3 at I/O 0xe008 (irq = 16) is a 16550A
  
  
# Karte *noch nicht* eingerichtet
dmesg | grep tty
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A

Um die Karte nun zu installieren, muss nun mit lspci die Daten aufgerufen werden (befindet sich in CentOS in pciutils):


lspci -v
  
00:09.0 Serial controller: NetMos Technology PCI 9865 Multi-I/O Controller (prog-if 02 [16550])
        Subsystem: Device a000:1000
        Flags: medium devsel, IRQ 17                                                                    # !!!! IRQ
        I/O ports at e000 [size=8]                                                                      # !!!! Port
        Memory at f6000000 (32-bit, non-prefetchable) [size=4K]
        Memory at f6001000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [48] Power Management version 2
00:09.1 Serial controller: NetMos Technology PCI 9865 Multi-I/O Controller (prog-if 02 [16550])
        Subsystem: Device a000:1000
        Flags: medium devsel, IRQ 18
        I/O ports at e100 [size=8]
        Memory at f6002000 (32-bit, non-prefetchable) [size=4K]
        Memory at f6003000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [48] Power Management version 2

Nun müssen die Optionen mit setserial gesetzt werden:

setserial /dev/ttyS2 irq 17 port 0xe000 baud_base 115200 uart 16550A
setserial /dev/ttyS3 irq 18 port 0xe100 baud_base 115200 uart 16550A

Die Parameter für setserial lassen sich aus der Ausgabe von lspci ablesen.

Nach einem Neustart von ZABOS sollten die Ports auftauchen. Sollte dies nicht der Fall sein, bitte die Konfigurationseinstellung serial.ports mit dem Profil force-serial-ports nutzen.

Um nun die Einstellungen zu persistieren muss unter CentOS in der /etc/rc.local die setserial-Befehle eingetragen werden.