Home Assistantで気付いたこと・分かったこと

 

PCのスリープ検知にはPingセンサーが向いていた


はじめに

Lenovo PCがスリープしたらスピーカーの電源を切り、起動したら再び電源を入れるオートメーションを作っています。

以前は正常に動いていましたが、設定を見直す中でPCの状態を device_tracker で判定するよう変更しました。

ところが、PCをスリープしてもスピーカーの電源が切れません。


アクションは正常だった

最初にオートメーションの「アクションの実行」を試してみました。

スピーカーの電源は正常にON・OFFします。

つまり、問題はアクションではなく、トリガーにあることが分かりました。


device_tracker を確認する

開発者ツールで device_tracker の状態を表示したままPCをスリープさせました。

2分以上待っても状態は home のままで変化しません。

これではオートメーションは実行されません。


Pingセンサーを確認する

以前使用していたPingセンサー(binary_sensor)も確認してみました。

こちらはPCをスリープすると約30秒で off になり、起動すると on に戻ります。

そこでオートメーションのトリガーをPingセンサーへ変更したところ、以前と同じように動作するようになりました。


もう一つ分かったこと

ログを見ていると、PCがスリープしている間でも、Pingセンサーが一瞬だけ on になることがありました。

そのため最初は、

「offが30秒続いたらスピーカーをOFFにする」

という設定にしました。

しかし、さらにログを確認すると、

  • スリープ中に一瞬だけ on になることはある。

  • 起動時に一瞬だけ off になることはない。

ということが分かりました。

そこで現在は、

  • スリープしたらすぐスピーカーをOFF

  • onが5秒続いたらスピーカーをON

という設定にしています。

こちらの方が反応も速く、安定して動作しています。


おわりに

同じPCの状態を表すエンティティでも、今回の環境では動作に違いがありました。

実際に状態を確認しながら比較した結果、PCのスリープや復帰を検知する目的には、Pingセンサーの方が期待どおりの動作になりました。

コメント

このブログの人気の投稿

TOTOの洗面台の水栓の吐水口網を交換してみた

ソフトバンク光でスマホdeひかり電話

パワーポイントでPDF変換ができない