I-Buddy

Aktuell scheint das kleine MSN-Männchen nicht mehr hergestellt und vertrieben werden.

Dem das klassisch wirkende Lync Busylight zu seriös ist und nicht einen der Ideen auf Statuslicht aufgreifen will, kann mit dem i-Buddy und der richtigen Software ebenfalls einen Lync-Status anzeigen. Eigentlich ist das gerät mit der Software des Herstellers dazu da, den Status eines MSN-Kontakts anzuzeigen und auf Meldungen im Textfenster (Smileys etc.) zu reagieren. Technisch ist es aber ein USB-Gadget welches:

  • Den Kopf in unterschiedlichen Farben leuchten lassen kann
  • Mit den Flügeln (hörbar schlagen
  • Eine Körperdrehung um ca. 45 Grad nach rechts und links
  • Ein rotes Herz auf der Brust leuchten lassen

Allerdings hat der Buddy leider keine Tonausgabe, kann also keinen "Klingelton" abspielen. Dafür ist das ganze USB-gerät sehr günstig. Ich habe ein Pärchen für gerade mal 22,88 Euro (8,50/Stück) incl. Versand bezogen. Der normale "Listenpreis" war aber mal bei ca. 30€. Zwar hat die Firma "Beyond GmbH", welche meine i-Buddys aus Honkong importiert hat, ihre Geschäftstätigkeit eingestellt, aber nun scheint Anton Wanninger (http://www.wv-v.de/ibuddy.htm) das gerät zu importieren. Angeblich was der i-Buddy das Ergebnis eines Studentenprojekts, welches in China gefordert wurde. Auch wenn das Device "pfiff" hat, wurde es wohl doch nicht ein Renner am Markt.

Anschluss

Entpacken Sie das gerät vorsichtig aus der Kunststoffverpackung, da die Flügel mit einer Kunststofflasche gesichert sind. Mit dem mitgelieferten langen USB-Kabel verbinden Sie den i-Buddy mit einem freien USB-Port. Wie von vielen anderen Geräten schon bekannt klinkt sich das gerät per USB als "HID-Device ein.

Es werden also erst einmal keine Treiber o.ä. benötigt, um das gerät unter Windows bekannt zu machen. "Aber ohne die passende Software tut sich dann natürlich auch noch nichts. Das gerät registriert sich mit der VendorID 0x1130 (=TenxTechnology) und der Device-ID 1 oder 2.

I-Buddy Manager

Wichtig
Wenn Sie ihren iBuddy auf der Webseite www.i-buddy.com mit der Seriennummer, die auf der CD aufgedruckt ist registrieren, dann erhalten Sie Zugriff auf einen Downloadbereich mit der aktuellsten Version.
Leider installiert diese sogar noch einen Dienst mit, was ich gar nicht verstehen kann.

Mit im Lieferumfang ist eine Mini-CD- auf der sich ein grade mal 1,4 MB große Setup.exe befindet. Dies ist die erforderliche Steuersoftware, wenn Sie den i-Buddy dazu nutzen möchten, die MSN-Messenger Meldungen abzugreifen und den Status eines Kommunikationspartners anzuzeigen.

Auch wenn ich keinen MSN müssenger nutze und leider die Lync API eine andere ist, so macht mich die Dropdown-Box neugierig. könnte man da auch andere müssenger einbinden ? Ein Blick in das Programmverzeichnis zeigt neben vielen Sprachverzeichnissen nur wenige Programmdateien.

Die "LitJSon" DLL ( http://litjson.sourceforge.net/ ) ist für JSON-Datenformate da während die ICSharpCode.SharpZipLib.dll ( http://www.icsharpcode.net/opensource/sharpziplib/ ) Dateien packen und Endpacken kann. Neugierig war ich auf die "ibuddyconfig.dat". Mit Notepad ist zu sehen, dass die ersten Zeichen ein "PK" sind. Ein untrügliches Zeichen für eine ZIP-Datei. Leider ist die aber mit einem Kennwort gesichert. Ich bin nun nicht genug Entwickler, um eine modifizierte ICSharpCode.SharpZipLib.dll unterzuschieben, um das Kennwort zu erhalten. Ich werde den I-Buddy-Manager einfach nicht weiter nutzen.

Die "Utility.DLL" ist anscheinend eine interessante DLL aber wenn man Sie als Referenz in VisualStudio einbindet, ist nur Buchstabensalat zu sehen. Anscheinend hat da jemand mit Dotfuscator die Aufrufe verwürfelt. Weiter habe ich hier also nicht gesucht.

iBuddy API

Nun bietet sich der iBuddy ja geradezu an, eigene Dinge damit anzustellen. Auf der Webseite von http://www.i-buddy.com/index.php?r=addon/info# findet sich noch ein Link auf eine C# i-Buddy Library. Die ist leider ein toter Link auf http://www.i-buddy.com/addon/iBuddyLibrary.zip)

Weiterhin befindet sich ein Link auf die "i-Buddy Library API Documentation" (Online auf http://www.i-buddy.com/addon/apidoc/ zu erreichen). Wer hier etwas st�bert, wird den verweist auf folgende DLL und Namespace finden

Namespace: com.unioncreations.ibuddy
Assembly: iBuddyLibrary (in iBuddyLibrary.dll)

Diese DLL kann man z.B. im iBuddyTest-Programm finden. Ein Blick im Visual Studio Object Browser zeigt die Methoden.

Dies sind aber ebenfalls in der i-Buddy Library API Documentation" auf http://www.i-buddy.com/addon/apidoc/ beschrieben. Der Versuch die DLL in PowerShell einzubinden schlägt auf 64bit erst mal mit einem "BadImageFormatException" fehl. Die DLL ist scheinbar nur für 32bit geeignet. In einer 32bit PowerShell kann die DLL aber mit "Add-Type" addiert werden. Bislang habe ich aber noch nicht ermittelt, wie man die Objekte der DLL dann auch nutzen kann.

Alternative APIs

Aber der i-Buddy erfreut sich einer wachsenden Beliebtheit, so dass andere Personen sich die USB-Kommunikation genauer angeschaut haben und die ist �übersichtlich. Es gibt keinen Rückkanal und auf der gerät wird einfach nur ein Bit geschrieben, was die Ausgabe steuert. Das gerät kann ja nur 7 Farben (3 Bit) und ein Herz (1 Bit) anzeigen. für das Schlagen der Flügel würde ein Bit reichen, aber es werden zwei Bits verwendet und für das Drehen nach Links, Rechts und in die Mitte (3 von 4 Stati) zwei weitere Bits, womit wir bei 8 Bit sind.

Bit Werte Funktion
0

2 Bit mit den Werte 0-3

Drehung des Buddies um die eigene Achse.
Warum auch immer scheint es keinen direkte Weg von Links zu Mitte zu geben. Meine PowerShell-Skripte konnten den Torso �berhaupt nicht drehen.

0 = Von Rechts zur Mitte zurück
1 = nach Links
2 = nach Rechts
3 = Ein wenig von Rechts zur Mitte
1
2

0 = nicht genutzt ?
1 = wings high
2 = wings low
3 = nicht genutzt ?

Position der Flügel. Eigentlich würde hier auch ein Bit reichen, aber aus mir nicht bekannten Gründen wurden zwei Bits benutzt. Die Werte 0 und 3 scheinen keiner Funktion zugeordnet zu sein.
"Ruhezustand" ist "Wings High", d.h. durch eine "WingsLow" wird ein Magnet aktiviert, der den Flügelträger abstößt. Sie sollten also drauf achten, die Flügel immer wieder zu entlasten.

3
4

3 Bit, die die Werte 0 bis 7 annehmen können

Farbe des Kopfes. Die Bitmaske steuert eine RGB-LED, wobei die Farben nur ein oder ausgeschaltet werden können. Leider ist keine Dimmfunktion möglich, so dass keine Zwischenfarben angezeigt werden.

0 000   BGR   Weiss
1 001   BG-   Cyan
2 010   B-R   Purpur
3 011   B--   Blau
4 100   -GR   Gelb
5 101   -G-   Grün
6 110   --R   Rot
7 111   ---   Aus
5
6
7

0 = on
1 = off

Anzeige des roten Herz-Symbols auf der Brust. Ein Blinken muss also per Software selbst umgesetzt werden, z.B. mit einen Timer.

Alternative Lösungen

Die günstige Einkaufspreise und der einfache Anschluss haben natürlich auch andere Personen und Firmen aufmerksam werden lassen und so haben sich einige Programme entwickelt, die den i-Buddy selbst ansteuern.

Lync Buddy 1.0

Dieses Programm "TrueBuddy" funktionierte bei mir leider nicht. Der i-Buddy hat immer nur kurz aufgeblitzt. Die Software kann also anscheinend schon den i-Buddy ansteuern aber bedarf wohl noch Anpassungen. Zudem scheint es eine reine CONSOLE-Applikation zu sein. für normale Anwender ist dies eher nicht verwendbar.

Lync Fellow

Basierend auf dem Code von LyncBuddy hat die Firma Glück&Kanja mit dem Lync Fellow ein Programm kostenfrei bereit gestellt, welches Programmiert direkt den i-Buddy ansteuert. Zur Installation muss man nicht mal Administrator sein, weil sich das Programm einfach in das Appdata-Verzeichnis entpackt.

Insofern ein "easy Deployment". Per Default setzt es dann einfach den eigenen Lync Status um, was �ber einen einfachen Dialog konfigurierbar ist.

Das ist schon mal ein guter "Startpunkt" für eine Weiterentwicklung, denn viele Funktionen des i-Buddy werden noch gar nicht genutzt. Man könnte durchaus mehr Funktionen des i-Buddy mit Lync-Aktionen verknüpfen, z.B. "on Phone" einfach mit einem langsamen roten Blinken Anzeigen, eingehende Rufe mit einem hektischen blauen Blinken. Und auch sonst sind einige Farben verfügbar. Und wenn eine IM einkommt, die den Lync Client in der Taskleiste blinken lässt, dann könnte z.B. das Herz leuchten.

Der Source ist auf github verfügbar, so dass jeder gerne weiter entwickeln kann.

PowerShell

Die Schnittstellen zum i-Buddy sind relativ einfach und es gibt einige APIs und DLLs, die nur noch kompiliert werden müssen.

Ich habe ibuddylib mit Visual Studio in eine DLL gebaut und dann mit PowerShell einfach eingebunden

Aus dem Source-Code sollte man sich die verschiedenen "Collections" merken, da diese Werte an die Methoden �bergeben werden können.

public enum TorsoYaw { Middle, Left, Right };
public enum WingPosition { Low, High };
public enum HeadColor { Off, White, Cyan, Purple, Blue, Yellow, Green, Red };
public enum HeartLight { Off, On };

Und so kann dann ein Beispielskript aussehen.

# Laden der DLL �ber den alten Weg
[Reflection.Assembly]::LoadFile("D:\iBuddy\sf.net-ibuddylib\ibuddylib\bin\Debug\ibuddylib.dll")

#oder neu
Add-Type -Path "D:\iBuddy\sf.net-ibuddylib\ibuddylib\bin\Debug\ibuddylib.dll"

#instanziieren eines Buddy
$myBuddy = [ibuddylib.BuddyManager]::Global.AnyBuddy

foreach ($i in (1..7)) {
	Start-Sleep -Milliseconds 80
	Write-Host "." -NoNewline
	$myBuddy.WingPosition="High"
	$myBuddy.HeartLight = "on"
	Start-Sleep -Milliseconds 80
	$myBuddy.WingPosition="low"
	$myBuddy.HeartLight = "off"
	$myBuddy.HeadColor = ("White", "Cyan", "Purple", "Blue", "Yellow", "Green", "Red", "off")[$i]
}

Wer mag kann also auch an seinen SCOM-Server, Exchange Server oder was auch immer einen i-Buddy anklemmen und diesen bei einen Fehler oder Meldung dies auch optisch anzeigen. Ach ja die DLL benötigen Sie noch.

ibuddylib.zip

Der Quellcode stammt von http://ibuddylib.sourceforge.net/ und wurde nicht verändert.

Weitere Links