USB-Datenlogger TFD 128 am Linux-Rechner


von Prof. Jürgen Plate

USB-Datenlogger TFD 128 am Linux-Rechner (Conrad/ELV)

Der Temperatur-Feuchte-Datenlogger 128 von ELV (erhältlich auch bei Conrad) dient der elektronischen Überwachung von Temperatur und Feuchtigkeit. Das Gerät speichert dabei regelmäßig die Daten. Falls Batterien eingebaut sind, geschiet das auch unabhängig vom Computer. Anschließend können die gesammelten Daten am PC abgerufen und weiterverarbeitet werden.

Technische Daten

Messbereich Temperatur: -20 °C bis + 80 °C
Auflösung/Toleranz: 0,1 °C/± 0,8 °C
Messbereich Luftfeuchte: 0 bis 99 %
Auflösung/Toleranz: 1 %/± 5 %
Aufzeichnungsdauer nur Temperatur: 5-Minuten-Intervall 227 Tage
1-Minuten-Intervall 45 Tage
Aufzeichnungsdauer Temperatur und Feuchte: 5-Minuten-Intervall 151 Tage
1-Minuten-Intervall 30 Tage
Spannungsversorgung: Batterie 3 x LR44; USB: 5 V/max. 50 mA
Masse (B x H x T): 58 x 24 x 46,5 mm

Software für Linux

Im Mai 2013 schreibt ein ELV-Kunde im Forum auf der Webseite von ELV:

Auslesen der Daten unter Linux
von steffu » 13.05.2013, 14:19
Guten Tag
ich arbeite seit Jahren nur noch mit Linux. Ist das Auslesen der Daten damit auch möglich?
Gibt es irgendwo eine Dokumentation der Kommunikation über USB? Protkoll?
Danke für die Antwort und freundliche Grüsse.
Die Antwort von ELV darauf:
AW: Auslesen der Daten unter Linux
von Michael Sandhorst (Technik) » 13.05.2013, 19:42
Hallo steffu,
für den TFD128 USB-Temperatur-Feuchte-Datenlogger steht ausschließlich eine
Windows-Software zur Verfügung. Eine Schnittstellendokumentation können wir
Ihnen leider nicht anbieten.
Wir bedauern Ihnen keine andere Mitteilung machen zu können.
Dem Fragenden kann hier geholfen werden. Immerhin gibt es das Gerät schon über 10 Jahre. Der Logger besteht aus einem Mikrocontroller, der die Sensordaten des Temperatur-Feuchtesensors vom Typ SHT abfragt und speichert sowie über die serielle Schnittstelle mit einem seriell-zu-USB-Wandler von FTDI die Verbindung zum PC herstellt. Was bedeutet, dass die Linux-Software nur auf eine pseudo-seriellen Schnittstelle (/dev/ttyUSBxx zugreifen muss. Das geht in C, Perl, Python und fast jeder anderen Programmiersprache.

Unter Linux kann daher der Standard-FTDI-Treiber (ftdi_sio.ko) eingesetzt werden. Um das Gerät ansprechen zu können müssen noch folgende Einträge vorgenommen werden:

Dadurch kann der Datenlogger unter /dev/ttyUSB* oder /dev/tfd128 angesprochen werden. Die serielle Schnittstelle wird auf 38400 bps, gerade Parität und 1 Stoppbit (38400E1) eingestellt.

Indikator-LED des TFD 128

Als Betriebsanzeige besitzt der Datenlogger eine LED, die folgende Zustände signalisieren kann:

LEDBetriebszustand
blinkt alle 4 s 1xMessung (bei Batterie- und USB-Betrieb)
blinkt alle 4 s 2xkeine Messung - Batteriespannung in Ordnung
blinkt alle 4 s 3xkeine Messung - Batteriespannung zu niedrig
leuchtet dauerhaftGerät am USB angeschlossen, keine Messung
leuchtet nach dem Einschalten 0,5 snormale Funktion
blinkt nach dem Einschalten für 2,5 sSensor-Fehler

Protokoll

Das verwendete Protokoll ist relativ einfach gehalten. Der PC sendet eine Kommandofolge an den Logger, worauf dieser mit den gewünschten Daten antwortet. Dabei werden folgende ASCII-Steuerzeichen verwendet:

		STX => 0x02	/* Start Uebertragung */
		ETX => 0x03	/* Ende Uebertragung */
		ENQ => 0x05	/* Kommando-Anforderung */
		ACK => 0x06	/* Kommando erfolgreich */
		NAK => 0x15	/* Fehler */

Da alle Daten binär übertragen werden, ist gegebenenfalls eine Umcodierung der Zeichen STX, ETX oder ENQ vor dem Senden (bzw. in umgekehrter Richtung nach dem Empfang) nötig. Das entsprechende Zeichen c wird durch eine 2-Byte-Sequenz der Form <ENQ> <c+0x80> ersetzt.

Alle Kommandos haben den folgenden Aufbau:

Es werden folgende Kommandos vom Gerät unterstützt:

Software für Linux

Andreas Engel (Link siehe unten) hat eine Kommandozeilen-Software für den TFD 128 in Python geschrieben. Die Software ist ideal für die automatische Auswertung per Script. Für die grafische Aufbereitung können dann Tools wie rrdtool oder gnuplot dienen. Aktuell wird an dieser Stelle die Version 2.1.1 beschrieben, die neueste Version finden Sie auf der Webseite von Andreas Engel.

Die Bedienung ist sehr einfach. Um beispielsweise das Logging zu starten, z. B. mit einem 5-Minuten-Intervall, gibt man folgendes Kommando:

./tfd128_cli.py --start --interval 1 --mode th
Das Logging wird angehalten mit:
./tfd128_cli.py --stop
Die Daten lassen sich dann mit dem folgenden Kommando auf eine Datei namens data ausgeben:
./tfd128_cli.py --dump-values --output data
Man kann sich auch gleich die Daten schön formatieren lassen, etwa:
./tfd128_cli.py --dump-values --output data --data-fmt 'Temp. %t °, rel. Feuchte %h %'
Noch ein Tipp: Damit das Programm nicht möglicherweise hängt, wenn der TFD 128 gar nicht angesteckt ist, kann man vorher die Existenz des Device-Files abfragen. Die folgende Befehlssequenz macht genau eine Messung und gibt das Ergebnis aus, wobei hier die Kurzformen der Parameter verwendet wurden:
if [ -c /dev/tfd128 ]   # device bereit
  then
  ./tfd128_cli.py -S -m th -i 1   # Messung starten
  sleep 5
  ./tfd128_cli.py -E              # Messung benden
  # Daten ausgeben
  ./tfd128_cli.py -r -o - --data-fmt 'Temp. %t °, rel. Feuchte %h %p'
else
  echo ""
fi
Der sleep-Befehl dient eher der Beruhigung des Programmierers. Man sieht auch, dass bei der Angabe von "-" als Ausgabedatei auf die Standardausgabe geschrieben wird.

Im Folgenden werden alle Optionen der Version 2.1.1 kurz beschrieben. Sie werden auch aufgelistet, wenn man das Programm mit dem Parameter "--help" aufruft.

--help
Hilfe-Info: Beschreibung aller Parameter.
--device <device>, -d <device>
Anzusprechende Gerätedatei. Der Parameter wird nur benötigt, wenn das Gerät nicht unter /dev/tfd128 oder /dev/ttyUSB0 gefunden wird.
--start, -S
Aufzeichnung starten. Es wird das aktuelle Datum nebst Uhrzeit als Startzeitpunkt verwendet. Die Parameter "--mode" und "--interval" müssen angegeben werden.
--stop, -E
Aufzeichnung beenden. Es wird das aktuelle Datum nebst Uhrzeit als Endezeitpunkt verwendet.
--interval <Wert>, -i <Wert>
Wird nur bei "--start" benötigt und gibt das Intervall zwischen zwei Messungen an (in Minuten). Gültig sind nur 1 und 5.
--mode <Wert>, -m <Wert>
Wird nur bei "--start" benötigt und gibt an, was gemessen werden soll:
t nur Temperatur
th Temperatur und Feuchte (humidity)
--status, -s
Gibt 'BUSY' aus und beendet mit Exitwert 1, wenn der TFD 128 gerade aufzeichnet. Andernfalls wird 'IDLE' ausgegeben und mit Exitwert 0 beendet.
--dump-version, -v
Gibt die Versionsnummer des TFD 128 aus.
--dump-count, -a
Gibt die Anzahl der gespeicherten Messpunkte aus.
--dump-info, -z
Gibt Info zum gespeicherten Datensatz aus.
--dump-values, -r
Gibt die gespeicherten Daten in eine Datei oder auf die Standardausgabe aus.
--output <filename>, -o <filename>
Legt die Ausgabedatei bei "--dump-values" fest. Wenn "-" als Dateiname verwendet wird, erfolgt die Ausgabe nach stdout (ohne Fortschrittsanzeige). Fehlt dieser Parameter, verwendet das Programm einen Default-Dateinamen, der aus dem aktuellen Ende-Datum abgeleitet wird: "tfd128-YYYYMMDD.csv".
--no-progress, -p
Unterdrückt bei "--dump-values" die Fortschritts-Anzeige. Bei Verwendung der Standardausgabe ist dieser Parameter automatisch aktiviert.
--time-fmt <Wert>
Legt das Format von Datum und Uhrzeit bei "--dump-values" und "--dump-info" fest. Der Parameterwert wird direkt an die Funktion time.strftime() übergeben, so dass alle dort möglichen Formatangaben verwendbar sind. Default: "%d.%m.%Y %H:%M:%S".
--data-fmt <Wert>
Legt das Format der Ausgabedaten bei "--dump-values" fest. Es wird ein Formatstring angegeben, in den folgende Platzhalter eingetragen werden können:
%c     Laufende Nummer des Datensatzes, beginnend bei 0
%d     Datum und Uhrzeit (Format siehe --time-fmt)
%t     Temperaturwert
%h     Feuchtewert
%p     wird durch ein %-Zeichen ersetzt
Der Default für Temperaturmessung ist "%c;%d;%t" und für Feuchte-/Temperaturmessung "%c;%d;%t;%h".

Unten finden Sie auch noch einen Link zu einer älteren C-Software, die ich aber nicht getestet habe.

Batteriewechsel

Der Einbau der Knopfzellen ist etwas trickreich - nein, eigentlich eher das Öffen des Loggers. Wenn man herausbekommen hat, wie der Schiebeverschluß funktioniert (siehe Bild), kann man den Logger öffnen und dann die die Platine herausnehmen. Nun lassen sich die Knopfzellen vom Typ LR44 einsetzen. Dann die Platine wieder in den oberen Gehäuseteil einsetzen und das Gehäuse in umgekehrter Reihenfolge zusammenbauen. Die Batterien werden nur gebraucht, wenn der Logger autark - also ohne angeschlossenen Computer - betrieben werden soll. Hängt das Gerät an der USB-Schnittstelle, wird es komplett vom PC aus versorgt.

Weiterführende Links