Klimaanlage, Alarmanlage, Löschanlage und USV an USB
Viele Geräte der "Haustechnik" bzw. "Infrastruktur" (das können Klima, Lösch-, Alarmanlagen oder USVs sein) melden Fehlerzustände mit einem potenzialfreien Alarmkontakt. Das klingt ziemlich hochtrabend, ist aber in aller Regel nur ein simples Relais mit einem Schließerkontakt, das im Normalfall angezogen ist. Sprich, wenn irgendwas passiert, fällt das Relais ab und der Kontakt geht auf. Bei dieser Schaltung werden auch Defekte im Relais selbst oder Schäden an der Verkabelung erkannt; das ganze versagt also zur richtigen Seite.
Ich habe in den letzten Monaten einige Zeit damit verbracht, ein Stück Hardware zu finden, was mir ermöglicht, den Zustand eines potenzialfreien Alarmkontaktes in einen PC einzulesen und den Alarm mit Netzwerkmitteln (z.B. Nagios) weiterzumelden.
Die zwei Rechner, an die ich das ankoppeln möchte, sind ein 1U-Server und ein Notebook. Beide Geräte haben gemeinsam, dass sie keinen Gameport haben und auch PCI-Slots eher knapp sind (der Server hat zwar einen, der sollte aber für andere Anwendungen frei bleiben). Bleibt die serielle Schnittstelle (die wohl in der nächsten Gerätegeneration auch aussterben wird) und USB. Also USB.
Als Ergebnis einer Diskussion im Usenet gab es die Empfehlung für das universelle 8-Kanal-USB-Interface aus dem Webshop von ABACOM, was knapp fünfzig Euro kostet.
Das Ding hat zehn Schraubklemmen (GND, Vcc, Port 1 bis Port8), wobei jeder Port als digitaler Ausgang, als digitaler Eingang, analoger Eingang und Temperatureingang (die dazu passenden Fühler kosten extra) verwendet werden kann. Die Digitalausgänge sind mit 25 mA pro Kanal belastbar, ob das für ein Relais reicht weiß ich nicht. Ich habe zu lange keine ernsthafte Elektronik mehr betrieben.
Besondere Treiber sind nicht nötig, das Ding wird beim Einstecken sofort erkannt und als serielle Schnittstelle erreichbar:
Jul 3 09:29:47 scyw00225 kernel: usb 4-4.1: new full speed USB device using ehci_hcd and address 20 Jul 3 09:29:47 scyw00225 kernel: usb 4-4.1: configuration #1 chosen from 1 choice Jul 3 09:29:47 scyw00225 kernel: usb 4-4.1: New USB device found, idVendor=0403, idProduct=6001 Jul 3 09:29:47 scyw00225 kernel: usb 4-4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Jul 3 09:29:47 scyw00225 kernel: usb 4-4.1: Product: DLP-IO8 Jul 3 09:29:47 scyw00225 kernel: usb 4-4.1: Manufacturer: DLP Design Jul 3 09:29:47 scyw00225 kernel: usb 4-4.1: SerialNumber: 12345678 Jul 3 09:29:47 scyw00225 kernel: usbcore: registered new interface driver usbserial Jul 3 09:29:47 scyw00225 kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for generic Jul 3 09:29:47 scyw00225 kernel: usbcore: registered new interface driver usbserial_generic Jul 3 09:29:47 scyw00225 kernel: drivers/usb/serial/usb-serial.c: USB Serial Driver core Jul 3 09:29:47 scyw00225 kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI USB Serial Device Jul 3 09:29:47 scyw00225 kernel: ftdi_sio 4-4.1:1.0: FTDI USB Serial Device converter detected Jul 3 09:29:47 scyw00225 kernel: drivers/usb/serial/ftdi_sio.c: Detected FT232RL Jul 3 09:29:47 scyw00225 kernel: usb 4-4.1: FTDI USB Serial Device converter now attached to ttyUSB0 Jul 3 09:29:47 scyw00225 kernel: usbcore: registered new interface driver ftdi_sio Jul 3 09:29:47 scyw00225 kernel: drivers/usb/serial/ftdi_sio.c: v1.4.3:USB FTDI Serial Converters Driver
Dann connected man mit 115k8n1 auf die neu erkannte serielle Schnittstelle und kann dort Einbuchstabenkommandos hinschicken. Dabei wird durch das Kommando auch gleich der Port ausgewählt. Hier zum Beispiel die Kommandos für Port 1:
1 | Digitalausgang HIGH |
Q | Digitalausgang LOW |
A | Digitaleingang abfragen |
Z | Analogeingang abfragen |
9 | Temperatur abfragen |
Das einzige was ich probiert habe ist der Digitaleingang. Der wird, wenn er in der Luft hängt, zuverlässig als LOW erkannt, wobei ich natürlich nicht weiß, wie sich das verhält wenn da erstmal zwanzig Meter Anschlussleitung dran hängen und irgendwas da hinein streut. Vielleicht nimmt man dafür am besten einen Pull-Down-Widerstand.
Wenn man dem Gerät auf der seriellen Schnittstelle das "A" schickt, kommt sofort "0" oder (wenn man den Eingang mit Vcc verbindet) "1" zurück. So soll es sein.
Für den Anschluß eines Temperaturfühlers braucht's noch einen 4k7-Pullup-Widerstand.
Comments
Display comments as Linear | Threaded
... on :
Betriebsspannung für kleines Gerät (Webcam, DSL-Modem, Gadget) über den Kontakt führen, Gerät (oder dahinter hängende Rechentechnik) pingen?
Nachteil: Wird Gerät extra für diesen Zweck betrieben, kostets bei 10 W etwa 4..5 Cent am Tag und heizt.
Marc 'Zugschlus' Haber on :
Sorry, aber das ist Bastelei auf Schülerniveau, etwas professioneller darf es dann doch schon sein.