Wie kann ich einen USB-Port loggen?

Guten Tag,
ich will auf einer Debian5-Installation einen USB-Port mitloggen.

Am USB-Port hängt folgendes Teil was alle paar Sekunden die Daten eines Wettersensors übermittelt.

Die angelieferten Daten sollen mit weiteren Informationen angereichert ( Timestamp usw.) und in eine Tagesdatei geschrieben werden.

Parallel dazu sollen die Daten auch in eine MySQL-DB geschrieben werden.

Eine einfache Umleitung über einen nächtlichen Cronjob auf eine neue Datei geht ja.
Aber wie bekomme ich die zusätzlichen Informationen hinzu.

Muss ich ein Skript in einer Endlosschleife laufen lassen um dauernd den Port abzupollen?

Bitte helft mir doch da mal auf die Sprünge.

Wie gehe ich denn das Problem am cleversten an?

Danke

plinepa

Hallo plinepa,

ich will auf einer Debian5-Installation einen USB-Port
mitloggen.
Am USB-Port hängt folgendes Teil was alle paar Sekunden die
Daten eines Wettersensors übermittelt.
Die angelieferten Daten sollen mit weiteren Informationen
angereichert ( Timestamp usw.) und in eine Tagesdatei
geschrieben werden.

Das ist etwas allgemein. Aber was spräche dagegen, daß dein Programm/Skript seine Daten vom Sensor an den Syslog-dämon schickt, der dann sowieso nach deinen Wünschen z.B. noch Datum und Uhrzeit hinzufügt.
http://de.linwiki.org/wiki/Linuxfibel_-_System-Admin…

Parallel dazu sollen die Daten auch in eine MySQL-DB
geschrieben werden.

auch bei MySQL kannst Du ja Timestamp hinzufügen.

Muss ich ein Skript in einer Endlosschleife laufen lassen um
dauernd den Port abzupollen?

Eigentlich nicht. Du kannst doch, wie Du schon geschrieben hast, cron bemühen, um dein Skript jede Stunde/aller fünf Minuten oder wie Du möchtest, auszuführen. Aber ich sehe gerade, Du möchtest das alle paar Sekunden haben, da bietet sich wahrscheinlich doch an, daß dein Skript im Hintergrund als Dämon läuft.

Danke

Bitte.

Viele Grüße
Marvin

Guten Tag,

ich will auf einer Debian5-Installation einen USB-Port
mitloggen.

Nein. Du möchtest auf ein Gerät zugreifen, dass am USB Bus angebunden ist. Das ist ein Unterschied. Zumindest für mein Verständnis.

Am USB-Port hängt folgendes Teil was alle paar Sekunden die
Daten eines Wettersensors übermittelt.

Funktioniert diese Übertragung prinzipiell? D.h. gibt es einen Treiber für diesen Wettersensor unter Linux?

Wenn nein, musst Du Dir erstmal einen Treiber programmieren. Das kann eine knifflige Angelegenheit werden.

Die angelieferten Daten sollen mit weiteren Informationen
angereichert ( Timestamp usw.) und in eine Tagesdatei
geschrieben werden.

Das sollte nach der Klärung der Treiberfrage kein Problem mehr bereiten. Wenn das Teil wirklich sendet und nicht abgefragt werden muss, dann würde ich das aber eher per Interrupt als per polling erledigen. Das ist effizienter.

Eine einfache Umleitung über einen nächtlichen Cronjob auf
eine neue Datei geht ja.
Aber wie bekomme ich die
zusätzlichen Informationen hinzu.

Wie „nächtlicher Cronjob“. Ich dachte, der Sensor sendet alle paar Sekunden?

Muss ich ein Skript in einer Endlosschleife laufen lassen um
dauernd den Port abzupollen?

Müssen musst Du natürlich nicht. Hast Du irgendwelche Programmierkenntnisse?

Gruß

Fritze

Funktioniert diese Übertragung prinzipiell? D.h. gibt es einen
Treiber für diesen Wettersensor unter Linux?

Wenn nein, musst Du Dir erstmal einen Treiber programmieren.
Das kann eine knifflige Angelegenheit werden.

Treiber ist keiner notwendig da der Wettersensor mit einem Silabs CP2102 bestückt ist. Für diese Bridge existiert ja ein fertiges Kernelmodul.

Die angelieferten Daten sollen mit weiteren Informationen
angereichert ( Timestamp usw.) und in eine Tagesdatei
geschrieben werden.

Das sollte nach der Klärung der Treiberfrage kein Problem mehr
bereiten. Wenn das Teil wirklich sendet und nicht abgefragt
werden muss, dann würde ich das aber eher per Interrupt als
per polling erledigen. Das ist effizienter.

Wie kann ich das unter Linux bewerkstelligen?

Eine einfache Umleitung über einen nächtlichen Cronjob auf
eine neue Datei geht ja.
Aber wie bekomme ich die
zusätzlichen Informationen hinzu.

Wie „nächtlicher Cronjob“. Ich dachte, der Sensor sendet alle
paar Sekunden?

Der Sensor sendet alle paar Sekunden aber die Messwerte sollen pro Tag in eine separate Datei geloggt werden die archiviert wird.

Muss ich ein Skript in einer Endlosschleife laufen lassen um
dauernd den Port abzupollen?

Müssen musst Du natürlich nicht. Hast Du irgendwelche
Programmierkenntnisse?

Früher habe ich schon mit UNIX gearbeitet aber in den letzten 10 Jahren nur „noch“ mit PowerBuilder Client-Server-Applikationen entwickelt.

Nebenbei bastle ich noch ein wenig mit AVR-Mikrocontrollern unter avr-gcc.

Gruß

Fritze

Gruß

plinepa

Hallo plinepa,

Hallo Marvin,

ich will auf einer Debian5-Installation einen USB-Port
mitloggen.
Am USB-Port hängt folgendes Teil was alle paar Sekunden die
Daten eines Wettersensors übermittelt.
Die angelieferten Daten sollen mit weiteren Informationen
angereichert ( Timestamp usw.) und in eine Tagesdatei
geschrieben werden.

Das ist etwas allgemein. Aber was spräche dagegen, daß dein
Programm/Skript seine Daten vom Sensor an den Syslog-dämon
schickt, der dann sowieso nach deinen Wünschen z.B. noch Datum
und Uhrzeit hinzufügt.
http://de.linwiki.org/wiki/Linuxfibel_-_System-Admin…

Wie im anderen Beitrag geschrieben möchte ich die gesammelten Daten in separaten „Tagesdateien“ sammeln und archivieren.

Viele Grüße
Marvin

Gruß

plinepa

Eine einfache Umleitung über einen nächtlichen Cronjob auf
eine neue Datei geht ja.
Aber wie bekomme ich die
zusätzlichen Informationen hinzu.

Wenn du mittels tail -f die Daten des entsprechenden Devices mitliest, kannst du in einem beliebigen Script weitere Daten hinzufügen. Unter Perl könnte ein entspr. Codefragment z. B. so aussehen (ich lese im Beispiel Daten von meinem Barcodescanner ein):

while ( 1 ) {
 open (DUMP, "tail -f /dev/input/by-id/usb-Metrologic\_Metrologic\_Scanner-event-kbd|");
 while ($line = ) {
 mache\_irgendwelchen\_Quatsch\_mit\_den\_Daten( $line );
 }
}

HTH

Hallo plinepa,

Wie im anderen Beitrag geschrieben möchte ich die gesammelten
Daten in separaten „Tagesdateien“ sammeln und archivieren.

Was sich mit logrotate wahrscheinlich machen liesse.
Aber langsam glaube ich, daß ich von der falschen Vorraussetzung ausgegangen bin, daß schon ein Programm zum Datensammeln vorhanden sei (mit dem Sensor mit ausgeliefert). Aber wahrscheinlich ist dem nicht so, oder?

Viele Grüße
Marvin

Prima, das ist doch schon mal ein guter Einstiegspunkt!

Das Perlskript „lauscht“ dann praktisch ständig und kann dann die Daten anreichern und wegschreiben.

Jetzt muss ich nur noch Perl lernen :wink:
Mal nach freien ebooks Ausschau halten…

THX

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Die angelieferten Daten sollen mit weiteren Informationen
angereichert ( Timestamp usw.) und in eine Tagesdatei
geschrieben werden.

Das sollte nach der Klärung der Treiberfrage kein Problem mehr
bereiten. Wenn das Teil wirklich sendet und nicht abgefragt
werden muss, dann würde ich das aber eher per Interrupt als
per polling erledigen. Das ist effizienter.

Hallo!
Die Einbindung des Empfängers ist jetzt schon mal erfolgreich.
Das Device erscheint als /dev/ttyUSB0 und kann auch dort die empfangenen Daten „sehen“ ( cat