# Temperatur-Sensoren auslesen?



## Moch (30. Dez 2011)

Grüße,
Ich habe da mal eine Frage (son Zufall aber auch^^):
- Besteht in Java eine Möglichkeit unter Linux oder Windows die Systemsensoren auszulesen?

Mir geht es hierbei speziell um die Temperatursensoren für die CPU.

Unter Kubuntu (habe derzeit mehrere Versionen, die älteste ist die 10.04.) nutze ich das Tool "Sensors", was mir eine Textausgabe im Terminal ausgibt und zumindest die CPU-Temp aller Kerne wiedergibt.
Unter Windows nutze ich bisher das Tool SIW.
Ich bin aber gerne bereit, auch andere Tools zu nutzen.

Ist sowas mit Java möglich?
Wenn ja, brauche ich dafür weitere Tools oder Plugins? Wenn ja, welche?

Lieben Gruß
Moch

Edit: Falls es noch von Belang ist: Das Programm, welches die Temperaturen gebrauchen könnte, ist ein reines Konsolen- / Terminalwerkzeug, das bisher selbstständig erkennen kann, welche Betriebssystemstruktur vorhanden ist. Eine grafische Oberfläche ist derzeit nicht geplant.

Edit1: Wenn es möglich ist, möchte ich gerne noch wissen, ob man auch weitere Daten auslesen kann, wie etwa Auslastungen usw.


----------



## nillehammer (30. Dez 2011)

> Ist sowas mit Java möglich?
> Wenn ja, brauche ich dafür weitere Tools oder Plugins? Wenn ja, welche?


Jein. Der direkte Zugriff auf die gewünschten Daten ist von der Java Virtual Machine aus nicht möglich. Du musst systemabhängige calls machen (d.h. die sehen je nach Betriebssystem unterschiedlich aus). D.h. von Deinem Java-Programm aus musst Du entweder externe Programme ansprechen und Dir von diesen die Daten liefern lassen (Stichwort: Runtime.exec). Oder Du bindest eine externe Library (dll, so-File etc.) in Dein Programm ein.


----------



## Moch (30. Dez 2011)

Danke für Deine Antwort. Ich werde mich da mal belesen;

Dann vielleicht noch eine weiterführende Frage: Wie stehts im Vergleich dazu mit dem Einbinden einer anderen Programmiersprache in die Java Virtual Machine.
Ist es z.B. möglich ein Delphi-Programm einen Integer-Werte berechnen zu lassen und diesen wiederum in Java einzubinden?

Ich stelle mir das gerade in etwa so vor
1. entsprechende Jar wird gestartet
2. entsprechender Aufruf wird getätigt
3. ein Programm wird mit bestimmten Parametern aufgerufen
4. jenes Programm bestimmt die gewünschten Werte
5. Java bekommt Werte übergeben (egal ob direkt als Integer oder aber als einfachen String)
6. Java arbeitet mit diesen Werten weiter...

*Programm hier gemeint als Methode / Function mit entsprechendem Rückgabewert

das ist jetzt natürlich ein praxisfernes Beispiel, da wohl in der Regel Java ausreicht, um mit entsprechenden Werten umzugehen. Gehört vermutlich auch nicht zur sauberen Art des Programmierens
Dennoch interessiert es mich gerade mal =)

Ansonsten gäbe es hier ja auch die Möglichkeit, eine andere Sprache einzubinden, die jenen Befehl im Betriebssystem beherrscht.


----------



## nillehammer (3. Jan 2012)

> Dann vielleicht noch eine weiterführende Frage: Wie stehts im Vergleich dazu mit dem Einbinden einer anderen Programmiersprache in die Java Virtual Machine.
> Ist es z.B. möglich ein Delphi-Programm einen Integer-Werte berechnen zu lassen und diesen wiederum in Java einzubinden?


Es gibt tatsächlich viele Sprachen, die in der JVM laufen. Dass Delphi dazugehört, habe ich allerdings noch nie gehört (ich bekomme aber auch nicht immer alles mit). Das löst aber Dein Ursprungsproblem nicht. Denn auch diese Sprachen unterliegen denselben Beschränkungen durch die JVM wie Java. D.h. Du kommst nicht an die Daten für die CPU-Temperatur heran. Also suche/programmiere eine native (also systemabhängige) library, die das kann und binde diese in Dein Java-Programm ein.


----------

