getsystempowerstatus以外での取得方法

[戻る]
UPS 2010/04/05(月) 15:45:39
はじめまして

UPSを使っているのですが、
API等でバッテリーの状態を確認したいです。

そこで「getsystempowerstatus」を使用したところ、

以下の3つの項目が不明になります。

BatteryLifePercent; 
バッテリ残量を0〜100のパーセントで示します
不明な場合は255を示します

BatteryLifeTime; 
今充電しているバッテリで稼働できる時間を秒で示します
不明な場合は-1を示します

BatteryFullLifeTime; 
フル充電しているバッテリで稼働できる時間を秒で示します
不明な場合は-1を示します

この場合、この関数では取得不可能なのでしょうか?

また、それ以外に取得する方法があるのでしょうか?

maru 2010/04/05(月) 16:34:29
そもそも、そのUPSにそれらの機能があるのですか?
それらの項目は実際のハードウェアから情報が提供される必要があると思いますが、
そのUPSにその情報が存在しない場合、APIに関数が存在していてもそれらの項目を
返しようがないので、不明とせざるを得ないでしょう。

仲澤@失業者 2010/04/05(月) 17:22:21
GetSystemPowerStatus()の対象は「そのコンピュータ」だけの
ようです(内臓電源のみ)。
外部装置であるUPSは対象外ではないでしょうか。
また、バッテリーを内蔵していないデスクトップPCなどでは
それに関する情報は取得できないと予想できます。

UPS 2010/04/05(月) 21:33:52
maruさん、仲澤@失業者さん
お返事有難うございます。

>そもそも、そのUPSにそれらの機能があるのですか?
はい、シェアウェアとして存在しているようです。
但し、価格が高いためそのソフトを使いたくないため、
APIでどうにか確認できないかと考えているのですが、

PC側は外部電源の機構まで管理していないということでしょうか。。。

例えば、停電が発生しACへの電源供給がオフになった場合も、
GetSystemPowerStatusメソッドの取得値は変わらなかったのですが、
英語のサイト等を検索していると、
何かしらのフラグを設定した場合、
取得出来たりしたような記述がかいており、
どうにかして出来ないかと検討しています。

何かお分かりになる情報がありましたら、
コメントして頂けると幸いです。

aetos 2010/04/06(火) 01:09:16
> はい、シェアウェアとして存在しているようです。

それはUPSメーカーのソフトではなく、サードパーティのものですか?
メーカーのソフトなら、何らかの非公開プロトコルでUPSと通信している可能性もありま
す。
また、シェアウェアでも高価なものとなると、メーカーとプロトコルの開示契約を結ん
で…といったことも想定されます。
いずれにせよ、あるソフトウェアで可能だからといって、だれにでも可能とは限らない
ということはあるかもしれません。

それはそれとして。

割と最近の過去ログに似たような話題があります。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+201002/10020012.txt

maru 2010/04/06(火) 15:46:35
> PC側は外部電源の機構まで管理していないということでしょうか。。。
これについては知りませんが、少なくともそのUPSのデバイスドライバが必要な気が
します(コントロールパネルの電源オプションの UPSタブを見るとUPSの推定稼働時
間等が表示されるようになっているので)。
そして、そのデバイスドライバが「要求する機能」を提供していない限りは
要求する情報は得られないでしょう。
あとはUPSメーカの情報を探してみたらどうでしょうか。

UPS 2010/04/07(水) 10:00:21
aetos さん、maruさん
お返事有難うございます。

>それはUPSメーカーのソフトではなく、サードパーティのものですか?
>メーカーのソフトなら、何らかの非公開プロトコルでUPSと通信している可能性もあり
ま
す。

いいえ、メーカーのソフトです。
TPC/IPプロトコル通信にて行っていました。
あまりハードウェア側の仕組みを理解していないのですが、
バッテリーの残量についてはOS側で管理外ならば、
メーカーの規約にのっとるしかなさそうですね。。。


>コントロールパネルの電源オプションの UPSタブを見るとUPSの推定稼働時
>間等が表示されるようになっているので)。

UPSの稼働時間については表示が無効になっていました。(電源のみ表示されていま
す。)
getsystempowerstatusを参照しているのではと思います。(同様の結果なので)

やはり、メーカー側からのドライバや通信インターフェイスが分からないと、
取得できないという事になるのでしょうか。

ITO 2010/04/10(土) 09:27:32
> バッテリーの残量についてはOS側で管理外ならば、
> メーカーの規約にのっとるしかなさそうですね。。。
 OS側の規約に沿ったドライバー等を使用すれば、OSの標準のドライバーを
使わなくてもいいのだと思います。
 使用したい関数が、OSの標準のドライバーを使うことが前提となっているならば、
使えない可能性も大きいですね。


> やはり、メーカー側からのドライバや通信インターフェイスが分からないと、
> 取得できないという事になるのでしょうか。
外部から操作されないようにメーカー側で隠している場合もありますね。
勝手に操作して、「おかしくなりました。」なんてクレーム言われても
メーカー側も困るのかと思います。

 

古いスレッドには追加発言できません。