Home Assistantで気付いたこと・分かったこと(Windows 11のスリープには2種類ある)
Windows 11のスリープには2種類ある―Modern Standby(S0)ではPing判定に注意
はじめに
Home Assistantでは、Ping(ICMP)を利用してPCの起動・停止を判定する方法がよく紹介されています。
私もその方法を試したところ、期待どおり動作しませんでした。
原因を調べると、Windows 11には2種類のスリープ方式があることが分かりました。
Windowsには2種類のスリープがある
Windowsのスリープには
- S3(従来のスリープ)
- S0(Modern Standby)
があります。
自分のPCはどちら?
コマンドプロンプトで
powercfg /a
を実行すると確認できます。
私のPCでは
スタンバイ (S0 低電力アイドル)
と表示されました。
つまり、Modern Standby対応PCでした。
Pingでは思ったように判定できなかった
Pingを監視すると、
PCがスリープしているにもかかわらず、
接続 ↓ 切断 ↓ 接続 ↓ 切断
を繰り返していました。
そのため、
「スリープした」
ことを正しく判定できませんでした。
HASS.AgentのSessionStateを試した
そこで、
HASS.Agentの
SessionState
を利用してみました。
取得できた状態は
-
Unlocked -
Locked -
unavailable
でした。
SessionStateは安定していた
気付いたこと
気付いたこと
SessionStateを確認すると、
Pingのような
接続 ↓ 切断 ↓ 接続
という繰り返しは発生しませんでした。
スリープ中は安定して状態を維持し、
Pingよりも安定してPCの状態を取得できることが分かりました。
気付いたこと
今回分かったことは次のとおりです。
- WindowsにはS3とS0(Modern Standby)の2種類のスリープがある。
- Modern Standbyではスリープ中でもネットワーク通信が行われることがある。
- そのため、PingだけではPCの状態を正しく判定できない場合がある。
- HASS.AgentのSessionStateは今回の環境では安定した状態を取得できた。
コメント
コメントを投稿