Ubuntu 15.04(または通常Linuxのみ)には、ラップトップのAC電源が切れてデバイスがバッテリ電源に切り替わると発生する測定可能なイベントがありますか?
私はこのイベントを待ってから、画面の明るさなどを少し調整する小さなプログラムを作成したいと思います。いくつかの解決策があることを知っていますが、自分で教えようとしています。私はLinuxに初めてアクセスし、.NET
ほとんどのコーディングをWindowsシステムで行います。
でバッテリーステータス情報を見ましたが/sys/class/power_supply/
、ある種のタイマーへの変更をファイルから取得するよりも、アダプターが切り離されていることを確認するより良い方法が必要であるとします。
Googleとこのフォーラムで検索しようとしましたが、検索語を正しく表現する方法が見つかりませんでした。
答え1
あなたが探しているのは、udev
デバイスの接続(または切断)を含むさまざまなシステム状態の変化を検出できることです。デバイスが接続または削除されたときに特定のタスクを実行するようにudevスクリプトを作成できます。
正直なところ、Udevは非常に複雑なので、必要なものを検出していることを確認するために非常に基本的なテストを実行する必要があります。
基本的な手順は次のとおりです。
システムを監視してください。
sudo udevadm monitor
これはudevが「見る」内容を伝えます。
このコマンドを実行したら、それを接続してudevadmが知らせる内容を確認してください。再接続を解除してください。 udevadmが教えてくれる内容を確認してください。まだ理解していないかもしれませんが、udevを監視する方法がわかりました。これは便利です。
プロセスを停止し、次の操作を行います。
sudo udevadm info --path=/sys/class/power_supply/ac
または
sudo udevadm info --path=/sys/class/power_supply/battery
ACおよびバッテリーシステムに関する情報を提供します。このように:
P:/devices/プラットフォーム/sunxi-i2c.0/i2c-0/0-0034/axp20-supplyer.28/power_supply/battery E: DEVPATH=/devices/platform/sunxi-i2c.0/i2c-0/0-0034/axp20-supplyer.28/power_supply/battery E: 電力容量=100 E: POWER_SUPPLY_CURRENT_NOW=0 E: POWER_SUPPLY_ENERGY_FULL_DESIGN=3200 E: POWER_SUPPLY_HEALTH=良い E:POWER_SUPPLY_MODEL_NAME =バッテリー E:POWER_SUPPLY_NAME =バッテリー E: POWER_SUPPLY_ONLINE=0 E: POWER_SUPPLY_PRESENT=0 E: POWER_SUPPLY_STATUS=いっぱい E: POWER_SUPPLY_TECHNOLOGY=リチウムイオン電池 E: 電源装置温度=300 E: 電源電圧_最大設計=4200000 E: 電源電圧_最小設計=3300 E: POWER_SUPPLY_VOLTAGE_NOW=0 E: サブシステム = 電源装置
このE:
行は、udevルールの作成に使用できる環境属性です。
デフォルトのudevルールを作成します(私は通常、イベントが発生したときに私のドライブのどこかにログエントリを生成するルールを作成します。これは何かをトリガしていることに気付くかもしれません。そして戻ってスクリプトを便利にします)
たとえば、
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_STATUS}=="Charging", RUN+="/path/to/some/script.sh"
または...を使用することもできますPOWER_SUPPLY_PRESENT=1
。コンピューターに表示される値に基づいて実験を行う必要があります。
/etc/udev/rules.d
このudevスクリプトを(通常の名前のようなもの)入れて、80.power.rules
コンピュータを再起動してください。技術的にはudevを再起動できますが、これは信頼できないことがわかりました。
ACが接続されたら、スクリプトがトリガーされていることを確認してください。
udevルールとそのルールがトリガーするスクリプトを最適化します。
udevにはより多くの機能があるので、もっと学びましょう!