Wednesday, June 5, 2013

Kettler Laufband Daten per Kett.Net und RS232 Schnittstelle über WLAN hochladen

Die Lösungen die Kettler vorschlägt, um die Daten seines Laufbands (oder jedes anderen Geräts das per Kett.Net Daten austauschen kann) zu verarbeiten, gefallen mir nicht. Ich habe kein Interesse am Bildschirm zu verfolgen wo ich gerade wäre, wenn ich denn nur im Freien laufen würde. Egal wie hübsch die Gegend am Bildschirm ist. Ich möchte auch nicht das Steigungsprofil einer vordefinierten Strecke laufen. Ich laufe am Laufband um dabei einen Film zu schauen weil das Wetter es draußen nicht zuläßt.
Davon abgesehen, weder habe ich einen Computerbildschirm noch einen Computer in der Nähe des Laufbands, also kommen verkabelte Lösungen sowieso nicht in Frage.
Ich möchte einfach nur die Daten vom Laufband aufzeichnen und per WLAN verfügbar haben.

Nachdem das Wetter in diesem Mai echt schei...schlecht war, habe ich mir schnell an einen Wochenende ein Programm für den Microcontroller geschrieben, der jede Sekunde das Laufband abfrägt, die Daten korrekt formatiert und per ftp auf meine Netzwerk-Festplatte kontinuierlich schreibt.

Sourcecode ist im OpenPicus Wiki, Community Projects, zu finden. Andere Kettler Modelle liefern geringfügig andere Datenformate zurück, das anzupassen ist aber eine Sache von Minuten.



Von der Firma OpenPicus gibt es den Flyport Wifi (39.-EUR) und das Serial Nest (29.-EUR) mit dem man eigentlich alles an Hardware hat, die dazu nötig ist. Okay, ein RS232 Kabel male-male, ein Nullmodem Adapter und ein Netzteil (4.-EUR) für den Microcontroller kommen noch dazu, sowie der miniUSB Programmer (9.-EUR) um den Flyport zum programmieren. Und ein Gehäuse (4,50 EUR) vielleicht auch noch.
(Alles ist auch über deutsche Distrbutoren zu bekommen, Lieferungen von OpenPicus selbst gehen auch schnell.)

Programmlogik

Die Kett.Net Schnittstelle ist sehr einfach zu benutzen. Man verbindet sich mit der seriellen Schnittstelle und den Übertragungseinstellungen 9600,8,N,1 und dann sendet man ein Kommando und bekommt eine Antwort. Zwei Dinge haben mich einige Zeit suchen gekostet, daher sei das hier erwähnt: Die Kommandos müssen in Großbuchstaben sein und per CR LF  beendet werden. Im Internet hatte ich ein paar Kommandos gefunden, dort waren sie aber klein geschrieben und das Serielle Programm zum Testen war putty, das ist bei default so eingestellt wie in Unix üblich, es sendet nur ein . Hat mich einiges an Zeit gekostet das herauszufinden.
Mit dieser Einleitung ist die Programmlogik offensichtlich

  1. Aufbau der WLAN Verbindung mit dem Heimnetz
  2. Warten bis die Verbindung steht und eine IP Addresse per DHCP zugewiesen wurde
  3. Initialisieren der RS232 Schnittstelle
  4. Initialisieren des ftp uploads
  5. Jede Sekunde sende das Kommando: ST über die Schnittstelle (STatus)
  6. Wenn im RS232 Buffer ein Datensatz steht, parse den, etwa aus dem Text 075 in Spalte sowieso machen eine Zahl 7.5 km/h
  7. Wenn der Satz unterschiedlich zum Vorhergehenden ist, dann schreibe die Daten im CSV format per ftp weg
Zusätzlich noch ein wenig Fehlerbehandlung, z.B. wenn die ftp Verbindung abgebrochen wurde, versuche sie alle 2min neu aufzubauen, außer das Laufband steht nur unbenutzt herum. Außerdem liefert das Laufband nur die Zeiten in denen man gelaufen ist, vor dem Start und nach dem Ende bleibt die Zeit also konstant. Da ich aber auch z.B. sehen möchte wie die Pulsfrequenz nach dem Laufen sich senkt, habe ich noch die Realtime Clock vom PIC aktiviert und hole anfangs per SNTP Protokoll die aktuelle Zeit.

Bedienung

Die Bedienung des Controllers ist genau so wie es sein soll: Es gibt nichts zu bedienen. Ich schalte Laufband und Controller ein, bis er alle Settings per DHCP und SNTP bekommen hat bzw. die ftp Verbindung aufgebaut ist, vergeht ca. eine Minute. Und ab dann beginnt er das File zu schreiben.
File mit den Daten von 60Minuten Laufen

Dieses File kann dann weiterverarbeitet werden, zur Zeit lese ich es einfach per Excel ein.
Diagramm mit Geschwindigkeit, zurück gelegte km, Steigung und Pulsrate

Nett, oder?















Post a Comment