Как сделать доступной информацию о oshi.hardware.Sensors. Это можно сделать? - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь получить температуру процессора, напряжение и скорость вращения вентилятора с помощью OSHI, но результаты показывают, что эта информация недоступна. Вот мой код:

    public static void main(String... args) {
    SystemInfo si = new SystemInfo();
    HardwareAbstractionLayer hal = si.getHardware();
    Sensors sensors = hal.getSensors();
    System.out.println(sensors.toString());
    }

Это вывод на Windows 10:

    CPU Temperature=0.0°C, Fan Speeds=[0, 0, 0], CPU Voltage=0.0

Вот интерфейс датчиков:

public interface Sensors {
/**
 * CPU Temperature
 *
 * @return CPU Temperature in degrees Celsius if available, 0 otherwise.
 */
double getCpuTemperature();

/**
 * Fan speeds
 *
 * @return Speed in rpm for all fans. May return empty array if no fans detected
 *         or 0 fan speed if unable to measure fan speed.
 */
int[] getFanSpeeds();

/**
 * CPU Voltage
 *
 * @return CPU Voltage in Volts if available, 0 otherwise.
 */
double getCpuVoltage();
}

Три функции в интерфейс возвращает 0, если информация недоступна.

Мой вопрос: можете ли вы сделать эту информацию доступной, и если да, то как?

1 Ответ

1 голос
/ 03 марта 2020

Я нашел объяснение:

Windows показания датчика (температуры, вентиляторов, напряжения) взяты из API Windows Инструментария управления (WMI) от Microsoft; однако большинство производителей оборудования не публикуют sh эти показания в WMI. Если значение не доступно через Microsoft API, Oshi попытается получить значения, опубликованные Open Hardware Monitor, если он работает. С помощью coretemp во FreeBSD обнаруживаются только датчики температуры.

Я попытался запустить его с ОМ, и он работал для температуры, которой мне достаточно. Пожалуйста, дайте мне знать, если вы найдете способ сделать это для двух других переменных.

...