Davis Weather Envoy & WVIEW, Probleme mit USB Verbindung /dev/ttyUSB*
Das Problem:
Der Weather Envoy Datenlogger der Vantage Pro Wetterstation wird als ttyUSB* device unter Linux erkannt, jedoch scheint die USB Verbindung zwischen Datenlogger und Linux sporadisch abzurechen. Geschieht dies so stürzt WVIEW ab und durch UDEV wird das Gerät unter dem nächsten freien Namen neu mit dem System verbunden. ttyUSB0 -> Unterbrechung -> ttyUSB1 -> usw. Jedoch verliert so die Software zu Datenanalyse WVIEW die Verbindung zum Gerät, da diese sich nur auf ein festes Gerät konfigurieren lässt.
Ein Lösungsvorschlag:
- Symbolischer Link auf das aktuelle ttyUSB* device sobald der Weather Envoy neu verbunden ist
- Neustart von WVIEW nach Zuordnung des USB Anschlußes
Meine Umsetzung:
Für den Davis Weather Envoy wird eine neue UDEV regel angelegt. Eine UDEV-Regel besteht aus einer einfachen textdatei im Pfad /etc/udev/rules.d/ , der dateiname muss mit einer Zahl zwischen 00 und 99 beginnen, je niedriger die Zahl desto höher die Priorität für UDEV. Ich habe die regel für den Weather Envoy der Vantage Pro 01-vantage.rules genannt. In unserem Fall soll UDEV sobald der USB-Adapter des Weather Envoy erkannt wurde den symbolischen link /dev/ttyVPpro anlegen. Über diesen kann WVIEW immer auf das aktuelle ttyUSB* device zugreifen. Zusätzlich soll ein Script ausgeführt werden das WVIEW neustartet und so das neue Device verwendet. Die UDEV-Regel könnte wie folgt aussehen:BUS=="usb", KERNEL=="ttyUSB*", SYSFS{idVendor}=="10c4" SYSFS{idProduct}=="ea60", SYMLINK+="ttyVPro", RUN+="/root/restartvwiew"
idVendor und idProduct können einfach über lsusb ermittelt werden.
Das kleine Script beendet WVIEW, startet das Programm nach 10 Sekunden neu und logt das Ereignis in einer Datei:
#!/bin/bash
# get date
aDate=`date +%Y-%m-%0e_%H:%M:%S`;
echo "$aDate WVIEW restart due to UDEV change." >> /root/wview_log
/etc/init.d/wview stop
sleep 10
/etc/init.d/wview start