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センサーの方が期待どおりの動作になりました。
コメント
コメントを投稿