# USB-Geräte ansteuern



## ballibum (15. Nov 2011)

Hallo Forum,
erst eine kurze Vorgeschichte:
Ich bin Terrarienbesitzer und habe festgestellt das meine Technick langsam aber sicher in die Jahre gekommen ist. Um die Klimasteuerung zu erleichtern möchte ich diese gerne über eine JAVA-Programm laufen lassen (alles an einen alten Laptop mit minimalen Stromverbrauch, weniger als 8 Zeitschaltuhren).
Dazu würde ich gerne eine USB-Steckdosenleiste nutzen (Anschalten von Licht, Heizung und Luftbefeuchter) und zusätzlich möchte ich gerne noch einige USB-Thermometer als Sensoren verwenden, sprich Abschaltung bei zu hoher Temperatur, EInschalten bei geringer Wärme.

Ist soetwas überhaupt möglich? Was muss ich zu den USB-Geräten alles wissen?

mfg
Balli


----------



## Andi_CH (15. Nov 2011)

Das kommt draufan wie sich die USB Geräte melden und ob es eine Java Library gibt, die passt 

HW- Ansteuerung ist definitv nicht die Stärke von Java, für solche Aufgaben sind andere Sprachen (z.B. C / C++) wesentlich besser geeignet.

Nur so ein Beispiel, das vielleicht das Verständnis dafür födert was mit Java möglich ist und was nicht.

Ich bin gerade daran, Bilder von einer Webcam aufzunehmen und einen Barcodescanner zu bedienen.

Der Barcodescanner ist über USB angeschlossen und verhält sich wie eine Tastatur - kein Problem das in ein Javaprogramm einzubinden, wenn es niemand wagt die echte Tastatur zu bedienen während gescannt wird und ja niemand den Focus vom Eingabefeld wegklickt.

Es gibt so viel Webcams und Möglichkeiten, dass ich mich dazu entschlossen habe, einen "Bonsai-Webserver" (mjpg-player) zu installieren und java holt die Bilder per html-request. Das kann Java problemlos - ob es auch auf einem anderen Level gegangen wäre interessiert mich nur am Rande, denn direkt von USB wäre es sicher wesentlich aufwendiger gewesen.

Vielleicht hast du jetzt eine Ahnung von den Grenzen die Java nun mal hat, wenn es um HW Ansteuerung geht.

Ausserdem hatten wir gerade vor Kurzem einen Thread zum Thema Sonnenstoren - such den mal


----------



## Gast2 (15. Nov 2011)

Das geht mit java afaik nur mit JUSB. 

Kenne ich aber leide rnicht. Dort in der API dürfte dann näheres dazu stehen wie du die Geräte ansprechen kannst.


----------



## Andi_CH (15. Nov 2011)

kappesf hat gesagt.:


> Dort in der API dürfte dann näheres dazu stehen wie du die Geräte ansprechen kannst.



Nein - das JAPI (seit wann heisst es "der Interface"  ) beschreibt nicht, was die Geräte die du anschliessen willst für Komandi verstehen bzw. brauchen und ich glaube kaum, dass das irgenwo beschrieben ist. Im Allgemeinen bekommt man eine Software dazu, womit steuern möglich ist.

Das wäre vielleicht ein Kaufkriterium - ob eine API Beschreibung für das Gerät verfügbar ist.


----------



## HoaX (15. Nov 2011)

Um welche USB-Steckdose geht es denn? Wenn diese einen Usb-to-Serial-Chip verwendet, dann kannst du mittels rxtx kommunizieren. Ansonsten würde ich sogar ehr soweit gehen mit ein Arduino zu packen und damit das ganze von Hand zu machen, also direkt mit Temperatursensoren und Relais. So muss dann auch nur das Arduino immer laufen. Den PC brauchst du nur um neue Schaltzeiten/-temperaturen an das Arduino zu senden.


----------



## Gast2 (15. Nov 2011)

> Nein - das JAPI (seit wann heisst es "der Interface" ) beschreibt nicht, was die Geräte die du anschliessen willst für Komandi verstehen



Ich habe auch nicht gesagt, dass da steht welche Kommandos das Gerät versteht, sondern WIE man welche zum Gerät übertragen kann. 

Was das Gerät versteht muss man natürlich auch noch rauskriegen.


----------



## Andi_CH (15. Nov 2011)

ballibum hat gesagt.:


> Was muss ich zu den USB-Geräten alles wissen?



Das ist die zentrale Frage - Das Geräte API ist VIEL wichtiger.

(Denk an den Sonnenstoren-Thread - da wollte jemand Schrittmotoren ansteuern was mit Java gelinde gesagt höchstens suboptimal geht ...)

und eben - wie die Geräte "sich melden" (mir viel kein besserer Begriff ein) ob sie eine RS-232 Emulation machen oder nicht.

Das Alles ist Geräte-API


----------



## ballibum (15. Nov 2011)

Uj, jede Menge Informationen-Danke schön!
Ich habe mir noch keine Steckdosenleiste oder Sensoren gekauft, ich wollte zu erst wissen, was ich wissen muss, damit mein Plan umgesetzt werden kann.

An Java hatte ich gedacht, damit ich das Programm dann irgendwann auf Android zum Laufen bringen könnte, damit dann einfach so ein billig Tablet am Terrariumschrank angebracht ist.

mfg
Balli


----------



## Gast2 (15. Nov 2011)

Android ist aber nochmal ne ganz andere Sache!!!! 

1) Gibts nen USB Treiber für dein Gerät, welcher auf Android läuft! 
2) Hat dein Android Gerät überhaupt eine geeignete USB SChnittstelle (Ja die sind nicht alle gleich!) 
3) Dein Programm sieht da schon etwas anders aus, da es eine abgespeckte JDK ist 
4) Gibts die entsprechende USB API da überhaupt (OK könnte auch unter 3 stehen ^^) 

Also Hardware unter Java ansteuern ist schon schwer genug. Aber von nem Android Gerät aus?! Ich würds lassen.


----------



## ballibum (15. Nov 2011)

ja ich merke schon wie schwierig das wird, aber ein Versuch hier zu fragen, war es auf jeden Fall. Und das Arduino finde ich ja klasse, denn da scheint es wirklich alles an Komponenten zu geben wie ich es brauche.


----------



## HoaX (15. Nov 2011)

Arduino is auch nur C im Prinzip, nur halt schon mit vielen Zusatzlibs. Brauchst halt weng wissen zur Elektronik, wie du wo was anschließen musst, also einfach so aus dem Arm geschüttelt is das auch nicht.


----------



## Andi_CH (15. Nov 2011)

ballibum hat gesagt.:


> Uj, jede Menge Informationen-Danke schön!
> Ich habe mir noch keine Steckdosenleiste oder Sensoren gekauft, ich wollte zu erst wissen, was ich wissen muss, damit mein Plan umgesetzt werden kann.



Es wäre aber sicher ein Versuch wert beim Händler anzufragen wie denn die Dinger angesteuert werden - wer weiss, vielleicht weiss der sogar Bescheid ...


----------



## ballibum (15. Nov 2011)

also dass das nicht im vorbeigehen erledigt wird ist mir durchaus bewusst. Ich denke aber, wenn ich mir die nötige Zeit gebe, kann es dennoch realisiert werden.


----------



## freez (17. Nov 2011)

ballibum hat gesagt.:


> An Java hatte ich gedacht, damit ich das Programm dann irgendwann auf Android zum Laufen bringen könnte, damit dann einfach so ein billig Tablet am Terrariumschrank angebracht ist.



Da gibt es was: ein Board namens IOIO. Programmiert wird es mittels JAVA und gesteuert wird es per Android BS. Wenn du dich mit Elektronik etwas auskennst wäre es ein interessantes Bastelprojekt, bei dem du digital / analog schalten und erfassen kannst.


----------

