PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Den USB Mail Melder per Webseite steuern

with 11 comments

Mein erstes richtiges USB-Gadget ist der USB Mail Melder (USB Mail Notifier). Um damit etwas zu experimentieren habe ich ein kleines Webinterface gebaut mit dem man in nahezu Echtzeit die Farben verändern kann. Doch erstmal ein Bild:

Diese kleine Box kann man in allen Farben aufleuchten lassen. Normalerweise gibt es dazu Treiber und Software auf einer CD mitgeliefert. In der Software kann man via POP3 bzw. Webmail auf E-Mail-Accounts zugreifen, und bei neuen E-Mails aufleuchten lassen.

Ich dachte mir dann, wie wäre es das Gadget aus PHP heraus zu steuern? Leider mußte ich schnell feststellen dass man mit PHP nicht so leicht auf die USB-Schnittstelle zugreifen kann. Ich habe es jedenfalls nicht hinbekommen.

Aber Dank der hervorragenden Arbeit von Christoph gibt es auch ein kleines Kommandozeilen-Tool mit dem man das Gadget erleuchten kann. Mein Webfrontend sieht dann so aus:

Hier noch ein kleines Video:

Der Benutzer kann aktuell per Slider die drei Grundfarben einstellen, es X mal pulsieren lassen oder es ausschalten. Man könnte natürlich auch einen kleinen Daemon bauen der per IMAP/POP3 einige E-Mail-Accounts prüft, oder einen RSS Feed abfragt, oder oder oder. Alles was man mit PHP machen kann und bei dem man ein visuelles Feedback benötigt.

Den Code gibt es bei Github. Es ist nichts besonderes, hauptsächlich HTML, CSS und Javascript, sowie einige wenige Zeilen um auf das Kommandozeilentool von Christoph zuzugreifen.

Ich weiß nicht ob es unter Linux geht direkt auf die USB-Schnittstelle zuzugreifen, ich denke da an so etwas ähnliches hier:

<?php
$string = "Hallo Schnittstelle!\n";
$pointer = fopen("/dev/ttyS0","w");
fwrite ($pointer, $string);
fclose($pointer);

Für Windows und die COM1 Schnittstelle habe ich diesen Schnipsel gefunden, ob das so oder so ähnlich auch für ein USB Gerät funktioniert habe ich noch nicht herausfinden können:

<?php
`mode COM1: BAUD=4800 PARITY=N data=8 stop=1 xon=off`;

$fp = fopen ("COM1:", "w+");
if (!$fp) {
    echo "can't open port: COM1";
} else {
    fputs ($fp, $string );
}

Oder aber mittels der W32API auf eine DLL zugreifen und darin eine Funktion aufrufen. Habe ich aber auch noch nie gemacht.

Wer das also schonmal gemacht hat oder eine Idee hat wie man auf eine Zwischensoftware verzichten kann, möge sich melden!

Danke nochmals an getDigital für das Gadget!

Written by Michael Kliewe

Januar 16th, 2012 at 9:47 am

11 Responses to 'Den USB Mail Melder per Webseite steuern'

Subscribe to comments with RSS or TrackBack to 'Den USB Mail Melder per Webseite steuern'.

  1. Läuft das Programm mit wine?

    Oliver

    16 Jan 12 at 10:01

  2. @Oliver: Gute Frage, das Kommandozeilentool braucht glaube ich nur das .Net Framework und die DLL um zu funktionieren. Habe gerade kein Wine zur Hand, kannst es ja mal ausprobieren ob es startet und die Usage ausgibt. Ob dann allerdings die Hardware angesprochen werden kann weiß ich nicht.

    Michael Kliewe

    16 Jan 12 at 10:08

  3. Naja, ich frag, weil auf der Webseite nur Windows angegeben ist und damit kann ich nix anfangen. 🙂

    Oliver

    16 Jan 12 at 10:36

  4. Vielleicht kann man für die Linux-Kisten einfach mal das Python-Skript anschauen 🙂

    http://code.google.com/p/usbmailnotifier/

    So ergäbe sich auch die Möglichkeit den Notifier als XFD zu benutzen 🙂

    Norbert

    16 Jan 12 at 10:40

  5. Ich freue mich, dass du dir dein erstes USB-Gadget geholt hast. Ich habe mittlerweile schon den ganzen Schreibtisch voll 😀

    Den USB Mail Melder hab ich schon seit fast 1,5 Jahren im Einsatz und leistet mir seitdem treue Dienste.
    Du hast schon die aktuellste Version von hier, oder?

    Noch besser finde ich allerdings die USB LED-Anzeigetafel, da dort auch Text ausgegeben werden kann.

    Aber auch der Würfel macht einiges her. Du könntest Ihn zum Beispiel rot leuchten lassen, wenn eine Exception oder Fehler auftritt, usw…

    Ich habe ehrlich gesagt keine Ahnung ob mein Tool auch mit Wine funktioniert, theoretisch ja, da es nur das .NET Framework und die DLL benötigt. Falls es jemand getestet hat, würde ich mich auch über eine Antwort freuen….

    Christoph

    16 Jan 12 at 14:15

  6. Da gabs mal ne Anzeigetafel die das ganze direkt von nem Webdienst abgefragt hat. Das hat den laestigen umweg ueber ne Frickelloesung am USB Port ueberfluessig gemacht.

    Hat jemand noch ne Ahnung wie das hiess und wo man es finden konnte?

    sonyon

    16 Jan 12 at 22:32

  7. Moin,

    wenn du da etwas drauf gesetzt hast frage ich mich ob man das auch so manipulieren kann, dass es auch mit anderen Sachen funktioniert als mit Mails? Ich spiele zur Zeit wieder gerne Age of Empires 2 und es wäre echt eine coole Sache, wenn das Ding rot leuchtet wenn man angegriffen wird.
    Oder auch bei anderen Sachen, wenn z.B. der Unittest der eigenen Webseite einen Fehler gefunden hat oder so.

    Also funktioniert das auch mit Mail fremden Sachen?

    T-Rex

    18 Jan 12 at 10:24

  8. @T-Rex Wie ich schrieb kann man das Gadget aus PHP heraus steuern, also alles was du mit PHP erkennen und machen kannst könnte dann ein Leuchten auslösen. Bei fehlerhaften Unit-Tests die entsprechende Funktion aufzurufen dürfte leicht sein. Wie man bei „Age of Empires 2“ mit PHP erkennen kann wann man angegriffen wird dürfte ziemlich schwer werden denke ich.

    Schau dir die index.php an auf GitHub, dann siehst du direkt oben in den ersten Zeilen wie man das Kommandozeilentool von Christoph aufrufen kann.

    Ergänzung: Ich habe nichts auf die Software von DreamCheeky aufgesetzt, ich nutze das Kommandozeilentool von Christoph (das wiederum die HIDLibrary.dll nutzt). Mein Setup hat also aktuell nichts mit Mails abrufen zu tun.

    Michael Kliewe

    18 Jan 12 at 10:35

  9. @T-Rex Ich nutze dieses Gadget zusammen mit meinem Tool unter anderem wenn mein Backup läuft/fertig ist. Wie Michael schreibt: Es hat überhaupt nichts mehr mit Mails zu tun und kann in beliebige Anwendungen (auch nicht PHP) integriert werden.

    Christoph

    19 Jan 12 at 22:48

  10. Ich habe gerade versucht das Kommandozeilen Tool von Christoph runter zu laden. Die Seite verlangt aber eine Authentifizierung. Hat das jemand?

    Gerald

    3 Apr 18 at 00:22

  11. Habs gefunden – ist ohnehin in dem Package auf der Github Seite inkludiert.

    Gerald

    15 Apr 18 at 15:35

Leave a Reply

You can add images to your comment by clicking here.