Transcend Wi-Fi SD-Karte mit C# auslesen

Transcend WiFi SD-CardVor einiger Zeit bin ich an eine kabellose SD-Karte gekommen. Genauer gesagt handelt es sich dabei um die 16GB große Wi-Fi SD von Transcend. Ein bekannter von mir überließ mir die Karte mit dem Hinweis, dass ich als Programmierer sicherlich mehr Spaß daran habe würde als er.

Und damit hatte er nicht ganz unrecht. Mit der Transcend lassen sich nämlich einige Dinge anstellen, die vom Hersteller so sicherlich nicht vorgesehen waren. Doch worum geht es genau?

So will es der Hersteller

Der vom Hersteller angedachte Gebrauch sieht wie folgt aus. Man legt die SD-Karte in eine Kamera und macht Fotos. Die Fotos werden wie bei jeder anderen SD-Karte auch, erst mal auf der Karte gespeichert. Ein direktes Streaming der Fotos auf einen anderen Speicher ist nicht vorgesehen.

Transcend WiFi SD WebbrowserNun hat man zwei Möglichkeiten kabellos, sprich per klassischem WLAN, auf die Karte zuzugreifen. Dies geht zum einen über eine App, die für Android und iPhone erhältlich ist, und zum anderen über jeden handelsüblichen Browser.

Per App- oder Browser lassen sich nun die Bilder auf der Karte betrachten und auf Wunsch direkt auf den PC oder das Smartphone laden. Dies geht jedoch immer nur auf ausdrücklichen Wunsch des Nutzers. Ein sofortiges, kabelloses Übertragen der Bilder auf (zum Beispiel) ein NAS ist nicht möglich. Eigentlich.

Offen wie ein Scheunentor

Praktisch ist nämlich wesentlich mehr drin, als die oben beschriebenen Funktionen. Hierzu gibt es mindestens drei Angriffspunkte. Auf zwei dieser Punkte möchte ich in diesem Artikel eingehen.

Um jedoch zu verstehen, warum das alles überhaupt möglich ist, sollten wir vorher noch einen kurzen Blick auf die Technik der Karte werfen. Genau genommen handelt es sich bei der SD-Karte nämlich um einen kleinen Computer mit ARM-Prozesser. Wenn man so will, eine leistungsschwächere, dafür aber viel kleinere, Ausgabe eines RaspberryPis. Dementsprechend läuft auch eine Minimalversion eines Linux auf der SD-Karte.

Mit der Umwelt kommuniziert die Karte auf zweierlei Wegen, die wir uns zunutze machen können. Zum einen bietet die SD-Karte einen Webserver inkl. Webservice an. Dieser ist in Perl geschrieben und dient dazu, dass man die Karte per Webbrowser durchsuchen kann.

Der zweite Kommunikationsweg ist ein kleiner Server, auf den man sich zum Beispiel mit Putty einloggen kann. Dieser Server streamt jeweils eine Information, wenn ein neues Bild auf der Karte gespeichert wurde. Auch dies können wir uns zunutze machen.

Der dritte Weg, den ich vorhin angesprochen habe, wäre die Möglichkeit die Karte zu “rooten”. Das heißt, sich Vollzugriff auf dem Linux-System zu verschaffen, das auf der Karte läuft. Dies ist jedoch nicht das Ziel dieses Artikels.

So ziehen wir Vorteile daraus

Kommen wir nun dazu, welche Vorteile wir aus den Kommunikationsschnittstellen ziehen können.

Folgende URLs bietet der eingebaute Webserver der SD-Karte, aus denen wir Vorteile ziehen können:

Verzeichnis auflisten

http://192.168.178.9/cgi-bin/tslist?PATH=%2Fwww%2Fsd%2F

Die IP muss durch die IP der SD-Karte ersetzt werden. Der Teil hinter Path (hier %2Fwww%2Fsd%2F) muss durch den Pfad auf der SD-Karte ersetzt werden.

Als Antwort gibt der Webserver folgenden Plaintext:

TS list1
List Files = /www/sd/DCIM/101NCD90
FileName0=DSC_0001.JPG&FileType0=File&FileName1=DSC_0002.JPG&FileType1=File&FileName2=DSC_0003.JPG&FileType2=File&FileCount=3

Um ein kleines Vorschaubild zu erhalten, eignet sich folgender URL-Aufruf:

http://192.168.178.9/cgi-bin/thumbNail?fn=/www/sd/DCIM/101NCD90/DSC_0002.JPG

Die IP muss wieder durch die IP der SD-Karte ersetzt werden. Hinter das “fn=” kommt der Pfad zum Bild.

Der Webserver generiert daraufhin ein 160×120 Pixel großes Thumbnail des jeweiligen Fotos.

Bilder direkt aufrufen

Um Bilder in ihrer vollen Auflösung anzuzeigen eignet sich folgende Url.

http://192.168.178.9/sd/DCIM/101NCD90/DSC_0002.JPG

Die IP wird wieder durch die der SD-Karte ersetzt. Hinter dem “/sd/” folgt der Pfad zum jeweiligen Foto. Über diesen Link lassen sich nun per Script Fotos von der Karte herunterladen.

Trigger/Event für neue Fotos

Wenn man nicht per Polling (zyklischer Abfrage) ein Verzeichnis auflisten und nach neuen Fotos suchen möchte, bleibt einem noch der zweite Weg, um über neue Fotos informiert zu werden.

Transcend-Wifi-SD-Putty  Transcend Putty Stream

Konkret geht es um den in der SD-Karte eingebauten Mini-Server, der bei neuen Fotos die Dateinamen in einem Stream schreibt.

Der Service ist über den Port 5566 erreichbar. Exemplarisch kann eine Verbindung per Putty oder mit jedem anderen Terminalprogramm hergestellt werden.

Ein Paket-Tracker mit der Transcend-WiFi-SD

Nun, da wir wissen, wie wir die Informationen aus der SD-Karte bekommen, können wir einige schöne Dinge damit anstellen. Ich habe mich dazu entschieden einen kleinen “Paket-Tracker” zu schreiben.

Paket-Tracker meint hierbei ein Programm, dass die Bild-Dokumentation von Paketen und Päckchen erleichtern soll. Oft nehmen Pakete auf dem Lieferweg einen Schaden. Dann ist es am Versender nachzuweisen, dass die Ware unbeschädigt an den Lieferdienst vergeben wurde.

Das Anlegen der Fotos und das sinnvolle Archivieren der Bilder macht jedoch im Normalfall einiges an Arbeit. Der Paket-Tracker soll diese Arbeit erleichtern.

Alles, was dazu nötig ist, ist eine preisgünstige Digitalkamera (z.B. von hier), die besagte Transcend WiFi-SD, ein kleines C# Programm und ein paar HTML- und JS-Dateien.

Ich werde im Folgenden nicht auf den Quellcode eingehen, sondern lediglich die Funktionsweise erklären. Wer Interesse an dem Projekt hat, kann sich den Quellcode des Paket-Trackers auf meinem GitHub-Account herunterladen.

Wie arbeitet der Paket-Tracker

Der Paket-Tracker besteht aus einer C#-Anwendung die einen kleinen Webservice bereitstellt und einem Webinterface, das dem Nutzer zur Erfassung der Pakete dient.

Wifi-Tracker Settings  Wifi-Tracker Running

Nachdem der Nutzer den C#-Service konfiguriert hat (IP-Adresse der SD-Karte, Pfad zu den Bildern auf der SD-Karte und Pfad zum Paket-Foto-Archiv), kann er den C# Service starten und mit der Bild/Paket-Erfassung in der Weboberfläche beginnen. Die Erfassung ist Schritt- bzw. Prozessbasiert und führt den Nutzer durch den gesamten Erfassungsprozess.

Im ersten Schritt muss der Nutzer per Klick einen neuen Vorgang starten. Ist der Vorgang initiiert, muss der Nutzer die Paketnummer eingeben. Diese wird zu Archivierungszwecken benötigt. Hierzu stehen dem Nutzer zwei Möglichkeiten zur Verfügung. Entweder er tippt die Nummer von Hand ein oder fotografiert den Barcode der Paketmarke mit der Kamera. Der C#-Server bekommt automatisch mit, dass eine Aufnahme gemacht wurde und versucht den Barcode auszulesen. Findet er einen Barcode und kann diesen lesen, gibt er die Nummer des Barcodes/der Paketmarke in der Weboberfläche aus. Der Nutzer kann nun zur eigentlichen Erfassung weiterspringen.

WifiPackageTracker - Step 1  WifiPackageTracker - Step 2  WifiPackageTracker - Step 3  WifiPackageTracker - Step 4

Nachdem die Paketnummer erfasst wurde, geht es in den nächsten Prozessschritt. Hier kann der erfassende Mitarbeiter nun Fotos von dem Paket/Päckchen schießen und wenige Sekunden später erscheinen diese zur Sichtkontrolle automatisch in der Weboberfläche. Ist ein Bild misslungen, so kann es direkt in der Weboberfläche entfernt werden.

WifiPackageTracker - Step 5  WifiPackageTracker - Step 6

Nach Abschluss der Aufnahmen klickt der Nutzer auf weiter und gelangt zum letzten Prozessschritt. Das C#-Tool archiviert im Hintergrund die gemachten Aufnahmen und sichert Sie in einem, der Paketnummer entsprechenden, Verzeichnis. Nach der Sicherung kann der Nutzer das nächste Paket aufnehmen.

Fazit

Mit der Transcend Wi-Fi-SD-Karte lässt sich einiges anstellen. Wer ein bisschen Programmieren oder Scripten kann, erhält eine ganze Palette an neuen Einsatzzwecken. (Der Paket-Tracker ist das beste Beispiel dafür.) Sicherlich ist die SD-Karte, im Vergleich zu Ihren nicht WLAN-fähigen Kollegen, kein Schnäppchen.

Wer aber gerne bastelt, programmiert und an Technik interessiert ist, wird an der Karte seine Freude haben. Ab und zu gibt es die Karten auch relativ preiswert in der Bucht (eBay). Bei Interesse also einfach mal die Augen aufhalten.

Transcend Wi Fi SD Karte mit C# auslesenÜber den Autor: Dieser Artikel, sowie 363 andere Artikel auf code-bude.net, wurden von Raffael geschrieben. – Seit 2011 blogge ich hier über Programmierung, meine Software, schreibe Tutorials und versuche mein Wissen, so gut es geht, mit meinen Lesern zu teilen. Zudem schreibe ich auf derwirtschaftsinformatiker.de über Themen meines Studiums.  //    •  • Facebook  • Twitter


2 Kommentare

  1. Matzesays:

    Klasse Beitrag.
    Gäbe es auch einen Weg die Karte mit einer eigenen Spannungsversorgung autark zu betreiben? Quasi als eine mobile mini NAS :). Allerdings müssen da wohl irgendwie Treiber geladen werden damit die Karte bootet (hab ich mir sagen lassen; stecke selber nicht so in der Materie).

    Gruß
    Matze

  2. Vielen Dank für den ausführlichen Beitrag! Lässt sich super lesen, Dank der tollen Informationen.

    Gruß

    E.Mike

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Sie dient nur dem Spamschutz.