2

Я разрабатываю приложение, которое должно знать о потреблении энергии на компьютерах (на окнах). Я понял, что ОС не имеет функций для прямой поддержки, поэтому мой обходной путь - сбор информации обо всех аппаратных устройствах и агрегировании количества потребляемой ими энергии. Я нашел такие базы данных, как eXtreme Power Supply Calculator, но у них нет API, которые я мог бы использовать. Есть ли у вас какие-либо предложения о том, как этого добиться? любое программное обеспечение с открытым исходным кодом?

Поскольку мое приложение должно в основном работать на ноутбуках, я думал о приблизительной оценке, основанной на модели ноутбука, но я не мог найти базу данных, содержащую такую информацию, какие-либо идеи? Спасибо

3 ответа3

3

Это было бы невыполнимой задачей, энергопотребление может сильно варьироваться в зависимости от загрузки системы и настроек энергосбережения. Например, на моей рабочей станции в режиме ожидания она потребляет ~ 300 Вт и ~ 900 Вт под нагрузкой в соответствии с моим APC SmartUPS. Хотя ноутбук будет менее экстремальным при сравнении абсолютных чисел, он все равно будет существенным между холостым и полной нагрузкой.

И в качестве доказательства того, насколько это бессмысленно, я попытался ввести свою систему в калькулятор eXtreme Power Supply, который вы связали в режиме "Эксперт". Он недооценил нагрузку на ~ 100 Вт. И удивительно, что моя пиковая нагрузка будет зависеть от того, сколько часов в день я использую свой компьютер.

Потребляемая мощность холостого хода Потребляемая мощность холостого хода

Потребляемая мощность под нагрузкой (забыли загрузить жесткие диски)

2

Посмотрите на класс WMI Win32_PowerMeter, расположенный в пространстве имен root\CIMV2\power . В этом пространстве имен есть много других классов и событий, связанных с управлением питанием и профилями.

Пример использования этого класса см. В гаджете pwrdrain-gadget с открытым исходным кодом (использует объект ActiveX). Для примеров VBScript см. Это. Для примеров C # посмотрите это.

1

Ноутбуки обычно предоставляют интерфейс ACPI для своих батарей, которые вы можете использовать. Вы будете особенно заинтересованы в объекте "Состояние батареи", описанном в главе 10.2.2.6 спецификации ACPI:

_BST returns a package in the format below

Package { 
 Battery State                    // Integer (DWORD)
 Battery Present Rate             // Integer (DWORD)
 Battery Remaining Capacity       // Integer (DWORD)
 Battery Present Voltage          // Integer (DWORD)
}

Battery Present Rate как правило, представляет собой либо значение мощности в мВт, либо текущее значение в мА (которое необходимо умножить на текущее Battery Present Voltage чтобы получить значение мощности). Конечно, есть еще много значений ACPI для исследования (включая измерение тока и напряжения от источника питания), но они могут быть реализованы не во всех системах. Установите средство просмотра информации о системе и проверьте Machine->Battery чтобы почувствовать его. Или, если вы являетесь пользователем Linux, проверьте каталог /sys/class/power_supply .

Вам нужно будет научиться делать вызовы ACPI в Windows с любого языка программирования и используемой вами среды. Эта статья MSDN может стать хорошим началом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .