it-swarm-ja.com

コンピュータのエネルギー消費量の概算を持っている。

コンピューター(Windows)のエネルギー消費量を知る必要のあるアプリを開発しています。 OSにはこれを直接サポートする機能がないことに気付いたので、回避策はすべてのハードウェアデバイスに関する情報を収集し、それらが消費するエネルギー量を集計することです。 eXtreme Power Supply Calculator のようなデータベースを見つけましたが、使用できるAPIはありません。これを達成する方法について何か提案はありますか?オープンソースソフトウェアはありますか?

私のアプリは主にラップトップで実行されることになっているので、ラップトップモデルに基づいて概算することを考えていましたが、そのような情報を保持するデータベースが見つかりませんでした。ありがとう

2
ePezhman

これは不可能な作業です。消費電力は、システムの負荷と省電力の設定によって大きく異なります。たとえば、私のワークステーションでは、アイドル状態のとき、APC SmartUPSによると、負荷がかかった状態で最大300ワット、最大900ワットを使用します。ラップトップは絶対数を比較するとそれほど極端ではありませんが、アイドル状態と全負荷の間では比較的重要です。

そして、これがいかに無意味であるかを証明するために、「エキスパート」モードでリンクしたeXtreme Power SupplyCalculatorにシステムを入力してみました。負荷を約100ワット過小評価していました。そして驚くべきことに、私のピーク負荷は、コンピューターを1日に何時間使用するかによって変わると考えています。

消費電力アイドルPower Consumption Idle

負荷時の消費電力(HDDのロードを忘れた)enter image description here

3
Matt

root\CIMV2\power名前空間にある Win32_PowerMeter WMIクラスを見てください。この名前空間には、電源管理とプロファイルに関連する他の多くのクラスとイベントがあります。

このクラスの使用例については、オープンソース pwrdrain-gadget ガジェット(ActiveXオブジェクトを使用)を参照してください。 VBScriptの例については、 this を参照してください。 C#の例については、 this を参照してください。

2
harrymc

ラップトップは通常、使用できるバッテリーへのACPIインターフェイスを提供します。 ACPI仕様 の10.2.2.6章で説明されている「BatteryStatus」オブジェクトに特に関心があります。

_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は通常、mW単位の電力値またはmA単位の電流値のいずれかです(電力値を取得するには、Battery Present Voltageを掛ける必要があります)。もちろん、調査するACPI値は他にもたくさんあります(電源からの電流と電圧の測定を含む)が、すべてのシステムに実装されているとは限りません。インストール システム情報ビューア そしてMachine->Batteryをチェックしてそれを感じ取ってください。または、Linuxユーザーの場合は、/sys/class/power_supplyディレクトリを確認してください。

使用しているプログラミング言語とフレームワークに関係なく、WindowsでACPI呼び出しを行う方法を学ぶ必要があります。 このMSDNの記事 良いスタートかもしれません。

1