WS500 anstecken und syslog überprüfen:
# tail -f /var/log/messages
Station mit Rechner Verbinden und Ausgabe beobachten.
Sep 17 18:21:35 server kernel: usb 1-2.1: new full speed USB device using uhci_hcd and address 32 Sep 17 18:21:35 server kernel: ftdi_sio 1-2.1:1.0: FTDI USB Serial Device converter detected Sep 17 18:21:35 server kernel: /usr/src/linux/drivers/usb/serial/ftdi_sio.c: Detected FT8U232AM Sep 17 18:21:35 server kernel: usb 1-2.1: FTDI USB Serial Device converter now attached to ttyUSB0
Erfolgt kein automatisches Einbinden des benötigten Moduls, so ist das notwendige Kernel-Modul zu installieren (nächster Punkt):
Nach dem Anstecken der WS500 an den Rechner sollte im sylog folgende Information auftauchen:
Sep 17 18:21:35 server kernel: usb 1-2.1: new full speed USB device using uhci_hcd and address 32 Sep 17 18:21:35 server kernel: ftdi_sio 1-2.1:1.0: FTDI USB Serial Device converter detected Sep 17 18:21:35 server kernel: /usr/src/linux/drivers/usb/serial/ftdi_sio.c: Detected FT8U232AM Sep 17 18:21:35 server kernel: usb 1-2.1: FTDI USB Serial Device converter now attached to ttyUSB0
Die WS500 kann nun über die Gerätedatei „/dev/ttyUSB0“ angesprochen werden.
Wird das benötigte Kernel-Modul ftdi_sio nicht automatisch geladen, erweitern wir unsere Konfiguration wie folgt. Als erstes ermitteln wir die Produkt- und Vendor-ID der Wetterstation. Entweder mittels lsusb:
lsusb Bus 003 Device 004: ID 0403:e0e9 Future Technology Devices International, Ltd
oder via
# cat /proc/usb/devices
T: Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 4 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0403 ProdID=e0e9 Rev= 2.00 S: Manufacturer=ELV AG S: Product=ELV WS 500 C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 44mA I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
Wie wir sehen hat die Station die IDs: 0403:e0e9. Nun können wir mittels
# modprobe ftdi_sio vendor=0x0403 product=0xe0e9
das Kernel Modul laden. Im Syslog wird dies entsprechend quittiert:
Jan 7 20:43:17 nss kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI USB Serial Device Jan 7 20:43:17 nss kernel: ftdi_sio 3-2:1.0: FTDI USB Serial Device converter detected Jan 7 20:43:17 nss kernel: drivers/usb/serial/ftdi_sio.c: Detected FT8U232AM Jan 7 20:43:17 nss kernel: usb 3-2: FTDI USB Serial Device converter now attached to ttyUSB0 Jan 7 20:43:17 nss kernel: usbcore: registered new driver ftdi_sio Jan 7 20:43:17 nss kernel: drivers/usb/serial/ftdi_sio.c: v1.4.3:USB FTDI Serial Converters Driver
Damit das benötigte Kernel Modul bei jedem Systemstart automatisch geladen wird, legen wir uns eine eigene udev-Regel an:
# vim /etc/udev/rules.d/99-custom.rules SYSFS{idProduct}=="e0e9", SYSFS{idVendor}=="0403", RUN+="/sbin/modprobe -q ftdi_sio product=0xe0e9 vendor=0x0403"
Wir können dann die Station über das Device /dev/ttyUSB0 ansprechen.
Perl wird am besten und einfachsten mit Hilfe des Distributionswerkzeuges wie z.B. yum, yast etc. pp. installiert.
Folgende Perl-Modul (CPAN) sind nachzuinstallieren: Device::SerialPort, DBI, DBD::mysql, IO::File
cd /usr/local/src tar xfvj ws500-0.1.2.tar.bz2 ws500-0.1.2 ln -s ws500-0.1.2 ws500 mkdir /var/log/Ws500 mkdir /etc/ws500 cp /usr/local/src/ws500/etc/ws500.conf /etc/ws500 ln -s /usr/local/src/ws500/ws500.pl /usr/local/bin
In der Konfigurationsdatei /etc/ws500/ws500.conf können über einzelne Variablen die Ausgabe in eine CSV-Datei, das Befüllen der MySQL-Datenbank und weitere Optionen eingestellt werden.
Zuerst muss die Datenbank mit Hilfe des Datenbank Schemas von Rainer Krienke erstellt werden. Hierzu ist das beigefügte Datei „Datenbank_schema.txt“ sehr hilfreich.
Das wetter.cgi Script zum Auslesen der MySQL-Datenbank und Darstellen der Messwerte verwendet für die einzelnen Sensoren eindeutige IDs. Wie man der Datei WS500_Datenbankdefinitionen entnehmen kann, habe ich folgende Nummerierung vorgenommen:
ID 1 = Kombisensor 1 ID 2 = Kombisensor 2 ID 3 = Kombisensor 3 ID 4 = Kombisensor 4 ID 5 = Kombisensor 5 ID 6 = Kombisensor 6 ID 7 = Kombisensor 7 ID 8 = Kombisensor 8 ID 9 = Außensensor ID 10 = Innensensor ID 20 = Luftdruckmesser ID 40 = Regenmesser ID 30 = Windmesser
Wenn eine andere Nummerierung notwendig sein sollte oder gewünscht wird, so ist im Auslesescript ws500.pl die Nummerierung entsprechend der Definition in der MySQL-Datenbank vorzunehmen.
Die entsprechende Definition erfolgt im Unterprogramm „write_MySQL“ zum Übertragen der Wetterdaten in die MySQL-Datenbank. Ebenso ist dort bei Bedarf die Anzahl der Zusatzsensoren entsprechend zu ergänzen bzw. zu löschen!
Das CGI-Script wetter.cgi ist für die Visualisierung der Messwerte den eigenen Wünschen entsprechend anzupassen. Mit Hilfe der außergewöhnlich guten Scriptdokumentation sollte dies einfach von Statten gehen.
Zum besseren Verständnis liegt dem Programmarchiv der von mir verwendeten Konfigurationsteil WS500_Wetter.cgi_Konfiguration bei.
Perl-Programm zum Auslesen der WS500 auf der Konsole starten:
$ ./ws500.pl
Webbrowser starten und Meßdaten der WS500 aus der MySQL auslesen und anzeigen lassen.
Verbesserungsvorschläge und Änderungen werden gerne angenommen, müssen jedoch zukünftig selbst vorgenommen werden! Diese bitte einfach per eMail melden an: django@omni128.de bzw. an User "Django" im Wetterportal.