WK TI Sensor Tag App (V1.0)

Diese Android App ermöglicht das Lesen, Darstellen und Speichern von Sensordaten, die vom TI Sensor Tag geliefert werden. Zur Verwendung ist dieser Sensor unbedingt notwendig.

Die App wird ständig weiterentwickelt. Besuchen Sie daher diese Seite für Aktualisierungen wieder.

Diese Anwendung beruht auf TISensorTag Source Code sowie der Beschreibung von Evothings.

Für etwaige Fehler und Beschädigungen etc. durch die Apps bzw. des Sensors wird keine Haftung übernommen.

Download und Installation

Die App kann hier heruntergeladen werden. Die Installation wird über den Dateimanager durch Anklicken von tisensorapp-release-old.apk gestartet. Klicken Sie Installieren an. Die Anwendung benötigt Zugriff auf das Dateisystem, um die csv Dateien speichern zu können. Eine Version für iOS (getestet mit einem iPhone 4S) kann hier als WKTISensorTag.app.zip Datei zum Selberinstallieren heruntergeladen werden.

Beta-version

Die Beta-version der App kann hier heruntergeladen werden. Diese App basiert auf jQuery Mobile und erhält erweiterte Funktion, z.B. Upload der Dateien auf einen Server, graphische Darstellung der Sensor-Werte Verläufe etc. Die Installation wird über den Dateimanager durch Anklicken von tisensorapp-release.apk gestartet.

Starten der App

Nach der Installation starten Sie die App durch Anklicken auf "WK TI Sensor Tag App" . Sie können nun verschiedene Funktionen ausführen. Funktionen, die nicht aktiv sind, werden als grüne Knöpfe angezeigt.

App Funktionen

Durch Aktivieren der Checkboxen "Activate Sensors" werden die Sensoren spezifiziert, die gelesen werden sollen. Grün bedeutet Sensorwert wird gelesen, rot Sensor wird ignoriert. Für die Beschleunigungs, Magnetoemeter-, Gyroskopssensoren kann jeweils einzeln die Frequenz der Messungen in 10 Millisekundenschritten (1 - 255), für die Gyroskopsensoren zusätzlich noch die zu verwendenden Achsen (7 = alle) definiert werden.

In "Display Sensor Details" wird spezifiziert, welche Daten ausgegeben werden: Raw = Byte Rohmesshdaten (sh. CSV Datei), Conv = konvertierte Messdaten, CSV = erzeugte CSV Zeichenkette, Time = Messzeitpunkt, Store Only = Daten werden nur gespeichert, aber nicht angezeigt.

Wird der Knopf "Connect from Sensor" gedrückt (grün), werden die Messdaten gelesen. Falls keine Verbindung zum Sensor zustande kommt, den Schalter an der linken Seite des Sensor Tags drücken! Wird der Knopf "Disconnect from Sensor" gedrückt, werden keine Messdaten gelesen.

Mit Drücken von "Start saving values" werden die Messdaten in einer CSV Datei tisensordata-.csv gespeichert.

Mit dem Knopf "Get Baro Calibarion Data" werden die Kalibrierungswerte des Barometers gelesen. Dies ist unbedingt notwendig um eine sinnvolle Konvertierung durchführen zu können.

Wird der linke Sensor-Knopf (1) gedrückt, wird der Hintergrund blau, beim rechten Sensorknopf (2) rot.

Der Test-Knopf (Abbildung rechts) misst die Anzahl der Sensorenmessungen pro Sekunde und schaltet dazu sowohl die Ausgabe auf den Schirm als auch in die Datei aus. Als Ergebnis zeigt er dann die Messungen pro Sekunde an.
DIe Knöpfe 1, 2, 3, 4 (Abbildung rechts) schreiben Zeitmarklen in die CSV Datei.

Änderungen Beta-Version
Die Einstellungen werden in einem eigenen Widget vorgenommen. Zusätzlich kann noch ein URL defniert werden, die zum Uploaden der Dateien verwendet wird. Wenn Werte in eine Datei geschrieben werden, kann man sich im Anschluß dioe graphischen Werte im Widget Graphic Display durch Klicken auf Draw Graphics angezeigt werden. Dateien können im Widget File transfer (Dateitransfer) hochgeladen werden.





Beta-Version

Format der CSV Datei

Die Dateinamen haben die Form: tisensordata-.csv. Zu beachten ist, dass diese Dateien sehr groß werden können, wenn die App sehr lange läuft.

Beispiel einer TI Sensor Tag CSV Datei

0;TISENSOR;0;20.10.2014 09:26:08;1413789968039;0;0;tisensordata-20-10-2014-9-26-6.csv;trinken;
..
12;H;13;25.9.2014 18:35:14;1411662914562;35306;134;4;105;-21;103;44.7354736328125;25.23338134765624
13;A;14;25.9.2014 18:35:14;1411662914953;35697;391;0;1;16;0;0.0625;-1;0;0.613125;-9.81
15;T;16;25.9.2014 18:35:15;1411662915037;35781;66;-100;-2;-128;12;25;21.05870147231468
16;B;17;25.9.2014 18:35:15;1411662915382;36126;345;4;-3;104;-121;104;958.7684029600323;-764;28.041163444519043;-19431.013358501717;17729286.903381348
17;M;18;25.9.2014 18:35:15;1411662915435;36179;53;112;-7;17;-5;87;-15;51.26953125;38.543701171875;-114.532470703125
18;H;19;25.9.2014 18:35:15;1411662915616;36360;181;4;105;-22;103;44.7354736328125;25.23338134765624
19;A;20;25.9.2014 18:35:15;1411662915950;36694;334;-1;1;16;-0.0625;0.0625;-1;-0.613125;0.613125;-9.81
21;T;22;25.9.2014 18:35:16;1411662916031;36775;72;-99;-2;-128;12;25;21.08264874527191
22;B;23;25.9.2014 18:35:16;1411662916424;37168;393;-1;-4;104;-121;104;958.7187151332762;-769;28.047005891799927;-19429.794943312067;17728346.102848053
23;H;24;25.9.2014 18:35:16;1411662916661;37405;237;4;105;-22;103;44.7354736328125;25.23338134765624
24;A;25;25.9.2014 18:35:16;1411662916947;37691;286;-1;1;16;-0.0625;0.0625;-1;-0.613125;0.613125;-9.81
26;T;27;25.9.2014 18:35:17;1411662917039;37783;69;-96;-2;-128;12;25;21.15445610483971
27;M;28;25.9.2014 18:35:17;1411662917411;38155;372;29;-7;93;-5;-61;-16;53.802490234375;36.224365234375;-119.049072265625
28;B;29;25.9.2014 18:35:17;1411662917503;38247;92;-1;-4;103;-121;103;959.9046157035468;-769;28.047005891799927;-19429.794943312067;17728346.102848053
29;H;30;25.9.2014 18:35:17;1411662917693;38437;190;4;105;-22;103;44.7354736328125;25.23338134765624
30;A;31;25.9.2014 18:35:17;1411662917931;38675;238;0;1;-9;0;0.0625;0.5625;0;0.613125;5.518125
32;T;33;25.9.2014 18:35:18;1411662918025;38769;90;-36;-3;120;12;24.9375;16.27529774467331
33;B;34;25.9.2014 18:35:18;1411662918596;39340;571;5;-3;103;-121;103;959.9643315331057;-763;28.039994955062866;-19431.257039627875;17729475.082920074 
..
136;MARK;140;13.10.2014 10:46:50;1413190010920;1413190010920;103;3;2
...
Die erste Spalte ist ein Zähler, die zweite Spalte der Sensor (H=Hygrometer, A=Beschleunigungsmesser, G=Gyroskpe, M=Magnetometer, P=Druckmesser, T=Temperatur, K=Schalter, MARK=Zeitmarker), dritte Spalte Datum, die vierte Spalte ist immer der Zeitpunkt der Messung in Millisekunden, die viere Spalte Zeit in Millisekunden seit Start, fünfte Spalte Zeit seit letzter Messung in Millisekunden

Die Folgespalten hängen vom Sensor ab. Eine Erklärung zu de Rohdaten und die zugrunde liegende Umrechnungsformeln finden sich auf der Seite der TI Sensors: TI Wiki

K: Knopf - 1 = Knopf links gedrückt, 2 = Knopf rechts gedrückt
T: [ObjLSB, ObjMSB, AmbLSB, AmbMSB] (4 bytes), Objekttemperatur, Umgebungstemperatur in Grad Celsius
A: [x,y,z Beschleunigungsrohwerte jweils ein Byte], x,y,z Beschleunigungswerte in g; berechnet auf -8 - + 8 g
M: [x,y,z Magnetometerrohwerte jweils zwei Byte pro Achse (LSB, MSB)], Magnetometerwert x, y, z konvertiert
G: [x,y,z Gyrometerrohwerte jweils zwei Byte pro Achse (LSB, MSB)], Gyrometerwert x, y, z konvertiert 
P: [TempLSB, TempMSB, BaroLSB, BaroMSB] (4 bytes), p_r Rohwert, p_a Druck im Millibar, Temperatur 1 t_r, Temperatur 2 t_a, S Wert, O Wert
H: [TempLSB, TempMSB, HumLSB, HumMSB] (4 bytes),x,y Hygrometerrohwert, Temperatur in Grad Celsius
MARK: Zeitmarker (1, 2, 3, 4), Text in Text Field 1, Text in Text Field 2, wievielte Zeitmarkermessung
TISENSOR: In Zeile 1 wird ein eine Signatur geschrieben, damit verschiedene Formate automatisch erkannt werden können;
Format: Zähler; Signatur; Datum mit Uhrzeit; Zeit in Millisekunden; 0; 0; Datename; Text in Text Field 1; Text in Text Field 2

Sensorlesegeschwindigkeit

Derzeit gib es ein Problem mit der Lesegeschwindigkeit der Sensoren. Diese beträgt etwa 5 - 10 Messungen pro Sekunde. Wenn man in der BLE Sensor Tag App die Raten für die Gyrometer, Accelerometer, Magnetometer auf den höchst möglichen Wert einstellt und dann die WK TI Sensor Tag App startet, erhöht sich die Leserate auf 30 - 40 Messungen pro Sekunde.

Datei Transfer - php Script

Ein einfaches php Script auf Server Seite kann so aussehen:
<?php print_r($_POST); 
	print("Temp File: " . $_FILES['file']['tmp_name']);
	print("\n");
	print("Original Filename: " . $_FILES['file']['name']);
	$result = false;
	$result = move_uploaded_file($_FILES['file']['tmp_name'], "fitnessapp/testdaten/" . $_FILES['file']["name"]);
    if ($result == false)
		print ("Fehler: " . $_FILES['file']["name"] + " beim Kopieren von " . $_FILES['file']["tmp_name"]);
	else
		print ("Erfolgreich " . $_FILES['file']["name"] + " hochgeladen von " . $_FILES['file']["tmp_name"]);
?>

(c) Prof. Dr. Klemens Waldhör, 2014; Heartsome Europe GmbH